Windows10で有線LANとLTEを同時接続時にLTEの通信を優先できない問題を解決する

ここ数日ハマってた問題が解決できたので、記録を残しておきます。

結論から書くと、Windows 10のVer1709以降で有線LANを接続しているとモバイルブロードバンドのほうのNICから通信できなくなるが、レジストリ追加で回避できる。

以下、いちいちモバイルブロードバンドって書くの面倒なので「LTE」と表記します。

SurfaceLTEモデルを使ってるんですが、とある事情で有線LANとLTEを同時に有効にし、マルチホーム環境を作ろうとしていました。

また、LTE側の通信を優先させたかったので、LTE側のNICのメトリック値を「1」に設定します。

f:id:thdy:20181013222421p:plain

※この画面はアダプタのプロパティ→IPv4のプロパティから辿り着けます

「netsh interface ip show address」コマンドでLTENICのメトリックが一番小さくなっている事を確認し、いざ有線LANとLTEを有効にします。 ところが、通信が有線LANのほうからしか出ていかない。。。

それで色々と調べた結果、下記の内容にたどり着きました。

[ 問題の概要 ]

Windows 10 Version 1709 以降で、有線 LAN (イーサネット) に接続すると、モバイル ブロードバンドからインターネット接続ができなくなります。

引用元:Windows 10 Version 1709 以降で有線 LAN 接続時にモバイル ブロードバンドからインターネット接続できない – Ask the Network & AD Support Team

そうですか。不具合ですか。。

ということでこの不具合の修正が含まれるとされるKB4284822の公式解説を見てみます。

  • ルーティング不可能なイーサネットが接続されている場合、WWAN を使用したインターネットへのアクセスを禁止する新しいレジストリ キーを追加します。 この新しいレジストリ キーを使用するには、regedit を使用して HKEY_LOCAL_MACHINE\Software\Microsoft\Wcmsvc に "IgnoreNonRoutableEthernet” (Dword) を追加し、1 に設定します。

  • 既定の接続マネージャーを使用せずに、WWAN を使用してインターネットへのアクセスを制御できるようにする新しいレジストリ キーを追加します。 この新しいレジストリ キーを使用するには、regedit を使用して HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WcmSvc\Local に "fMinimizeConnections” (Dword) を追加し、0 に設定します。

引用元:https://support.microsoft.com/ja-jp/help/4284822/windows-10-update-kb4284822

なるほど。

ということで、KB4284822がすでにインストールされている事を確認の上で、レジストリ追加してみました。

f:id:thdy:20181013225814p:plain f:id:thdy:20181013225825p:plain

すると、めでたくレジストリ追加した瞬間から有線LAN繋いでてもLTE側から通信ができるようになりました!

この情報を見つけるまで結構ハマりました。。同じことで困る方が一人でも減りますように…




以下、この記事とは直接関係ないハナシ。

Windows10のモバイルブロードバンドは今の所Surface Pro LTE AdvanceとThinkPad X270で使ったことあるけど、なぜか設定が安定しない。 まったく同じ手順でAPN設定入れてるのに繋がらない場合がある。

しまいにはなぜかドライバが正常機能しなくなり、設定画面から「携帯電話」のメニューが消えたりする。。(社内で100台ぐらい運用してる中でかなりの回数遭遇した)

んでどうするかというと、デバイスマネージャーからWWANドライバを無効→有効にする。 これで一旦復活するので設定リトライ、でうまくいくケースもあれば、ドライバ再起動を5回くらい繰り返してうまくいく時もある。同じことやってるだけなんだけど、なぜか何回かやっていると成功するという・・・

ただ、一回設定がうまくいってしまえば安定して接続はできるんですがね。

今回の不具合にしてもそうだけど、まだWindows10のモバイルブロードバンド周りは安定していないように見受けられます。 これから会社でもバンバン導入するつもりなので、Microsoftさんどうかよろしくお願いします…

Redmineの更新をプラグインでSlackに通知する

Redmineでチケットを更新した内容をSlackに通知するべく、プラグインを追加・設定してみます。

環境

設定手順

今回使用するのはこちらのプラグインです。 github.com

それでは早速プラグインをインストールしてみます。

cd /var/lib/redmine/plugins/
git clone https://github.com/sciyoshi/redmine-slack.git redmine_slack
bundle install
rake redmine:plugins:migrate RAILS_ENV=production
service httpd restart

続いてSlack側で左サイドメニューの「App」を選択。 f:id:thdy:20181006231007p:plain

「incoming webhook」を検索してインストールします。 f:id:thdy:20181006231222p:plain

「設定を追加」ボタンから通知するチャンネルを選択して「着信Webフックインテグレーションの追加」を選択。 f:id:thdy:20181006231410p:plain

発行されたWebhook URLをコピーしておきます。 f:id:thdy:20181006231723p:plain

Redmine側で「管理」→「プラグイン」→「Redmine Slack」を開き、先程コピーしたURLを貼り付けるなど設定を行います。 f:id:thdy:20181006232227p:plain

設定はこれで完了。試しにチケットを追加してみると、ちゃんとSlackに通知が届きました。 f:id:thdy:20181006232629p:plain

今日はここまで。

RedmineでLDAP (Active Directory) 認証を設定する

社内WikiとPJ管理のためにRedmineを使ってみようと思い、CentOS 7.5の環境にRedmine 3.4.6をインストールした。
この環境でLDAP (Active Directory) 認証ができるように設定しようと思う。

さっそく、[管理]→[LDAP認証]のメニューを開き、[新しい認証方式] から下図のように設定。 f:id:thdy:20180929204349p:plain

ベースDNは「アカウント」の項目で指定したアカウントがいる場所を入力する。 また「あわせてユーザーを作成」にチェックを入れておかないと、AD上のアカウントとパスワードが連動しないので注意。

設定が完了したら保存して、認証方式画面に戻ってテストボタンを押してみる。 f:id:thdy:20180929211038p:plain 接続しましたと出ているので、どうやら成功した模様。

あとはユーザー作成時の「認証方式」で先程設定した認証名を選択し、ADのアカウント名と合わせたログインIDを指定してやれば完了。 ちゃんとADと同じパスワードでログインできたのでOK。

今日はここまで。

セキュアチャネルの破損をPowerShellで修復する

ドメインユーザーとしてログオンしようとすると「このワークステーションとプライマリドメインとの信頼関係に失敗しました。」と出てログインできない場合があります。

この現象はセキュアチャネルが破損している場合に見られます。

この記事ではこういった破損したセキュアチャネルを修復する手順について解説します。

※そもそもセキュアチャネルが何かを知りたい人はこのあたりを参照してください。

セキュアチャネルの状態を確認する

ログイン時に上記画像のメッセージが出ていれば基本的にセキュアチャネルが破損していますが、正確に状態を把握するには「nltest /sc_verify:ドメイン名」コマンドを実行します。

↓正常な場合の実行結果

PS > nltest /sc_verify:example.com
フラグ: b0 HAS_IP  HAS_TIMESERV
信頼された DC 名 \\DC1.example.com
信頼された DC 接続状態 Status = 0 0x0 NERR_Success
信頼の確認 Status = 0 0x0 NERR_Success
コマンドは正常に完了しました

↓セキュアチャネルが破損している場合の実行結果

PS > nltest /sc_verify:example.com
フラグ: 80
信頼された DC 名
信頼された DC 接続状態 Status = 5 0x5 ERROR_ACCESS_DENIED
信頼の確認 Status = 5 0x5 ERROR_ACCESS_DENIED
コマンドは正常に完了しました


ではどうするかというと、一旦ドメイン抜けて再参加というのも一つの解ではありますが、
「一時的でもGPOが外れたら困る」とか
ドメイン参加は管理者しかできないようにしてる」
ドメインを抜けるとどこに影響するか分からず不安」
といった場合もあると思うので、PowerShellのTest-ComputerSecureChannelコマンドで修復することをお勧めします。以下手順。

セキュアチャネルを修復する

PowerShell 3.0以降の環境が必要ですが、Windows 7の場合はデフォルトのバージョンが2.0なので、次のサイトからWMF3.0をダウンロードおよびインストールします。

Windows Management Framework 3.0
http://www.microsoft.com/en-us/download/details.aspx?id=34595

WMF3.0のインストールが完了したら、$PSVersionTableコマンドでPowerShellのバージョンが3.0になっていることを確認します。

PS > $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      -1  -1


準備が整ったら実際に修復します。
「Test-ComputerSecureChannel -credential ドメイン名\ドメイン管理者ユーザー -repair」をPowerShellで実行します。

Test-ComputerSecureChannel -credential example.com\administrator -repair

すると指定したユーザーで認証を求める画面が表示されるので、パスワードを入力してあげます。
f:id:thdy:20171124130103p:plain

認証が通り修復が完了すれば、PowerShellの画面に「True」が返ってきます。
前述のnltestコマンドでセキュアチャネルが正常になっていることを確認してみましょう。