Windows 10でVPN接続時のDNS名前解決ができない原因と対処法
VPN接続の設定で指定されたDNSサーバーやDNSサフィックスは、強制トンネリング(Force Tunneling)モード(VPN接続のプロパティで「リモートネットワークでデフォルトゲートウェイを使用する」にチェックが入っている状態)の場合、VPN接続が有効な間にWindows 10がDNSによる名前解決を行うために使用されます。このモードでは、VPN接続中はローカルネットワーク内の名前解決や、内部LAN経由でのインターネットアクセスができなくなります。
症状:IPアドレスではアクセスできるのにホスト名では解決できない
一方で、LAN上の任意のリソースにはpingを打つことができます(ゲートウェイや近くのPC、プリンターのIPアドレスなどに試してみてください)。これらのリソースにはIPアドレスでは到達できるものの、ホスト名ではアクセスできません。これは、Windows 10がローカルネットワーク内のホスト名解決を、VPN接続設定で指定されたDNSサーバー経由で行おうとしているためです。
一部の情報源では、ローカル(LAN)インターフェースでIPv6プロトコルを無効化する方法が紹介されています。強制トンネリングモードを使いたい場合、この方法が有効なことがあります。
スプリットトンネリングでもリモート側の名前解決は失敗する
VPN接続でスプリットトンネリング(Split Tunneling)(「リモートネットワークでデフォルトゲートウェイを使用する」のチェックを外した状態)を使用している場合、ローカルネットワークからインターネットへはアクセスできますが、リモートのVPNネットワーク内のDNSアドレスを解決できません(IPv6を無効化してもここでは効果がありません)。
原因はインターフェースメトリックの優先順位
重要なのは、Windowsが最も優先度の高い(インターフェースメトリックの値が小さい)ネットワークインターフェースからDNSクエリを送信するという点です。例えば、VPN接続がスプリットトンネリングモードで動作しており(LANからインターネットへアクセスしつつ、VPN経由で社内リソースにもアクセスしたいケース)、以下のPowerShellコマンドですべてのネットワークインターフェースのメトリック値を確認できます。
Get-NetIPInterface | Sort-Object Interfacemetric上記の出力例を見ると、ローカルのEthernet接続のメトリック(25)がVPNインターフェースのメトリック(100)より小さくなっています。DNSトラフィックはメトリック値の小さい方のインターフェースを通るため、DNSリクエストはVPN接続用のDNSサーバーではなく、ローカルのDNSサーバーへ送信されます。この構成では、接続先の外部VPNネットワーク内の名前を解決することはできません。
SMHNR(Smart Multi-Homed Name Resolution)によるDNSリークの問題
さらに、Windows 8.1およびWindows 10のDNSクライアントに搭載された新機能にも触れておきます。Smart Multi-Homed Name Resolution(SMHNR)は、DNSリクエストへの応答速度を向上させるためにこれらのOSバージョンに追加されました。デフォルトでは、SMHNRはシステムが認識しているすべてのDNSサーバーに対して同時にDNSリクエストを送信し、最初に受け取った応答を採用します(LLMNRやNetBTのクエリも送信されます)。この動作は安全とは言えません。VPN接続用に指定された外部DNSサーバーが、あなたのDNSトラフィックを目にする可能性があるからです(DNSリクエストのリーク)。Windows 10では、次のGPOでSMHNRを無効化できます。
- [コンピューターの構成] → [管理用テンプレート] → [ネットワーク] → [DNSクライアント] → スマート マルチホーム名前解決をオフにする = 「有効」
また、Windows 8.1では以下のコマンドでレジストリ経由により無効化できます。
Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient" -Name DisableSmartNameResolution -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" -Name DisableParallelAandAAAA -Value 1 -Type DWordなお、Windows 10 Creators Update(1709)以降では、DNSリクエストは既知のすべてのDNSサーバーに対して並列ではなく順番に送信されるようになりました。特定のDNSサーバーの優先度を上げたい場合は、そのインターフェースのメトリック値を小さくすればよいのです。
インターフェースメトリックを変更してDNSの経路を制御する
つまり、インターフェースメトリックの値を変更することで、名前解決を優先したい接続(LANまたはVPN)経由でDNSリクエストを送信できるようになります。
原則として、インターフェースメトリックの値が小さいほど、その接続の優先度は高くなります。WindowsはIPv4インターフェースのメトリックを、回線速度や種類に応じて自動的に割り当てます。例えば、速度200Mbps超のLAN接続はメトリック10、速度50〜80MbpsのWi-Fi接続は50となります(詳細はMicrosoftのドキュメント「IPv4 ルートの自動メトリック機能について」を参照してください)。
インターフェースメトリックは、WindowsのGUI、PowerShell、またはnetshコマンドから変更可能です。
GUIで変更する場合
例えば、DNSリクエストをVPN接続経由で送りたいとします。その場合は、LAN接続のメトリック値を100(この例の場合)より大きくなるように引き上げます。
- [コントロールパネル] → [ネットワークとインターネット] → [ネットワーク接続] を開きます。
- イーサネット接続のプロパティを開き、[TCP/IPv4] のプロパティを選択します。
- [詳細設定] タブを開き、「自動メトリック」のチェックを外します。
- インターフェースメトリックを 120 に変更します。
PowerShellで変更する場合
同じことは以下のPowerShellコマンドでも実行できます(Get-NetIPInterfaceコマンドレットで取得できるLANインターフェースのインデックス番号を指定してください)。
Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120netshで変更する場合
または、netshを使用します(LAN接続の名前を指定してください)。
netsh int ip set interface interface="Ethernet0" metric=120同様に、VPN接続のプロパティでメトリック値を下げることもできます。
VPN接続自体の設定を変更する方法
さらに、VPN接続の設定を変更してスプリットトンネリングモードに切り替え、接続用のDNSサフィックスを指定することもできます。PowerShellでは以下のように実行します。
Get-VpnConnection
Set-VpnConnection -Name "VPN_work" -SplitTunneling $True
Set-VpnConnection -Name "VPN_work" -DnsSuffix yourdomainname.comこれらの方法を組み合わせることで、強制トンネリング/スプリットトンネリングどちらのシナリオでも、意図した通りのDNS名前解決を実現できます。
-
Windows 10で検索が機能しないときの対処法|原因と解決策を徹底解説
特定のプログラムや設定を検索しても結果が何も表示されない——そんなトラブルに直面している方は、この記事が役立ちます。今回は、Windows 10で検索機能が動作しなくなった場合の原因と、具体的な解決策を順番にご紹介します。 例えば、検索ボックスに「エクスプローラー」と入力しても候補すら表示されず、電卓やMicrosoft Wordといった基本的なアプリさえ検索できないケースがあります。 また、「何か入力すると検索中のアニメーションだけが表示され、いつまで経っても結果が出てこない」という報告も多く寄せられています。3つの点が動くローディング表示のまま30分待っても結果は出ず、時間だけが無駄にな
-
【Windows 10】ウェブカメラが動作しない・認識されない問題を解決する6つの方法
最近Windows 10にアップグレードしたばかりの場合、内蔵ウェブカメラが動作しなくなるケースが少なくありません。この問題の主な原因は、ドライバーの非互換性や古さです。この問題が発生している場合、Windows 10のカメラアプリが開かなかったり、「カメラが見つからないか、起動できません。」というエラーメッセージが表示されたりすることがあります。 デバイスマネージャーを開いて「その他のデバイス」を展開すると、内蔵ウェブカメラに黄色い感嘆符が表示されているはずです。これはドライバーに問題があることを意味しています。Windows 10のアップデート直後にこの症状が出るのはよくあることですが、