これが設定です:
問題:
私が起こりたいこと:
私が試したこと:
VPNでDNSサーバーをまったくリストしないようにできる場合、NRPTルールは、たとえばexample.localだけで起動し、すべてが適切に機能すると思います。しかし、RRASサーバーが提供するものを使用しないようにする方法が見つかりません。
私は解決策を見つけました。
インターフェースメトリックを既存のイーサネット/ wifiアダプターよりも大きい数に調整すると、ローカルネットワーク上のDNSサーバーが優先されますが、NRPTルールは引き続き機能し、自分のドメインのDNSクエリをVPN経由でサーバーに送信します。
ただし、Powershell、VBscript、.NET、VPNv2 CSPのVPN接続のインターフェイスメトリックを調整する方法はありません。
VPNが接続されている場合、メトリックはSet-NetIPInterfaceコマンドレットを使用してPowerShellで変更できますが、VPNが接続されていない場合、メトリックはまったく表示されません。そして、そこでの変更は再起動後は持続しません。
これを変更する唯一の方法は、C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk
ファイルを編集し、IpInterfaceMetric
とIpv6InterfaceMetric
の行をより大きな数値に変更することです。両方を100に変更しました。
その後、NRPTルールと組み合わせて、DNSは希望どおりに機能します。たとえば、example.localのすべてのクエリがAD DNSサーバーに送信されます。それ以外のもの(example.comを含む)は、ローカルネットワークのDNSサーバーに送信されます。
あなたが試すことができる潜在的な回避策は、Server 2016 DNSサーバーを立ち上げ、地理位置情報を認識してsplit-dnsを実行するDNSポリシーを実装することです。これにより、デバイスVPNサブネットからのDNSクエリに、内部ではなく外部IPを使用するように指示できます。
Powershellコマンドは次のようになります。
デバイスVPNサブネット
Add-DnsServerClientSubnet -Name "DeviceVPNSubnet" -IPv4Subnet "192.168.1.0/24"
デバイスVPNゾーンスコープ
Add-DnsServerZoneScope -ZoneName "example.com" -Name "DeviceVPNZoneScope"
デフォルトのAレコード(すでに存在しているはずです)
Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "192.168.0.5"
デバイスVPN Aレコード
Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "203.0.113.5" -ZoneScope "DeviceVPNZoneScope"
デバイスVPN解決ポリシー
Add-DnsServerQueryResolutionPolicy -Name "Device VPN Policy" -Action ALLOW -ClientSubnet "eq,DeviceVPNSubnet" -ZoneScope "DeviceVPNZoneScope,1" -ZoneName "example.com"
ProfileXMLのDomainNameInformation要素を使用して、任意のネームスペースの内部DNSサーバーを定義できます。スプリットDNSを使用している場合、「内部」名前空間をVPNトンネル経由ではなく外部にルーティングする必要がある場合があります。これらのシナリオでは、「除外」を作成する必要があります。これは、本質的に、内部DNSサーバーを使用しないように定義された名前空間です。これを行うには、DnsServersフィールドを空白のままにするだけでなく、DnsServersを要素から完全に除外します。
詳細については、こちらをご覧ください: https://directaccess.richardhicks.com/2018/04/23/always-on-vpn-and-the-name-resolution-policy-table-nrpt/
お役に立てば幸いです。
ちょっと考えましたが、多分接続スクリプト.batを設定して、接続時にメールサーバーの正しいパブリックIPアドレスをホストファイルに追加し、切断時にクライアントのホストファイルからそれを削除しますか?理論的には、いつでもhostsファイルに含めることができ、オフィスのパブリックIPからサーバーにアクセスするだけだと思います。それにもかかわらず、RRASサーバーからのDNSを上書きします。
HostsファイルはC:\ Windows\System32\Drivers\etc\hostsにあります。
すべてのインターフェースで自動メトリック設定を使用する場合、何らかの理由でLANイーサネットアダプターはデバイストンネルインターフェースよりも低いメトリックを持っていますが、wifiインターフェースはデバイストンネルインターフェースよりも高いメトリックを持っています。
したがって、パブリックドメインゾーンのスプリットDNSを使用すると、LANおよびWifi接続デバイスで次のことが起こります。
LANインターフェイス(ケーブル)を使用するデバイストンネルクライアント-ローカルに構成されたDNSサーバーを使用してパブリックドメインレコードを解決します
WIFIを使用するデバイストンネルクライアント-デバイストンネルインターフェイスで構成されたDNSサーバーを使用してパブリックドメインレコードを解決します
不思議なことに、自動メトリック割り当てを使用すると、デバイストンネルのメトリックが常に最低になると思っていました。最も奇妙なのは、デバイストンネルインターフェイスメトリックがLAN(ケーブル)インターフェイスとWIFIインターフェイスの間の数に設定されていることです。
どちらが正しい?インターフェースのいずれについても、手動でメトリックを設定したくありません。
これは、スプリットトンネルVPNを使用して確認されており、フォーストンネルでテストされていません。何らかの理由でVPN接続の外部のドメインを解決する必要がある場合、スプリットトンネルがデバイストンネルで構成されたDNSサーバーを使用して解決し、NRPT設定を使用する場合でも、すべてのDNSを希望します。