Windows 7/8開発者プレビューでVPNがDNSを変更しないようにする


10

VPN接続を使用している顧客がいますが、DNS設定が存在しないDNSサーバーに自動的に構成されます。つまり、すべてのDNS解決は、代替が試行されるまでタイムアウトし、すべてのインターネットトラフィックが本当に遅くなります。

アプリケーションが(UACを有効にせずに)DNS設定を上書きできないようにする方法はありますか?

または、「IPアドレスAのDNSリクエストが届いたら、実際にIPアドレスBを使用する」というローカルルーティングを設定する方法はありますか?

私はWindows 8 Developer previewを使用しています(ただし、Windows 7と同じように動作するはずです)。

ありがとう

回答:


18

VPN接続でDNSサーバーを静的に割り当てる以外に、これを防ぐ方法はないと思います。

DNSサーバーが照会される順序を変更するには、https://superuser.com/a/314379/120267のようにインターフェイスバインディングの順序を変更できるはずですが、VPN接続には影響しないようです。 Windows 7での個人的なテスト。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bindインターフェイスのバインド順序の設定に関係なく、VPN接続が常にリストの一番上に追加されることを確認しました。

ただし、VPN接続の確立後にDNSの変更をリセットできます。

情報収集

コマンドプロンプト(Start-> Run...-> cmd)を開き、を実行しnetsh interface ipv4 show dnsserversます。次のような出力が表示されます。

Configuration for interface "My VPN"
    Statically Configured DNS Servers:    11.22.33.44
                                          55.66.77.88
   ...

Configuration for interface "Local Network Connection"
    DNS servers configured through DHCP:  192.168.0.1
                                          192.168.0.2
    ...

あなたは必要なインターフェース名 VPNのため、必要に応じて自分の非VPN接続の最初のDNSサーバーを。この例では、それらはそれぞれMy VPN192.168.0.1です。


すべてを設定する

オプション1:VPN DNSを無効にする

VPNのDNSサーバーがまったく必要ない場合は、コマンドプロンプトで次のコマンドを実行するだけです。

netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no

Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no

netsh interface ipv4 show dnsservers再度実行すると、VPNに関連付けられたDNSサーバーが削除されていることがわかります。非VPN接続のDNSサーバーがホスト名の解決に使用されます。


オプション2:VPN DNSを補足する

VPNのDNSサーバーでイントラネットのホスト名を解決する必要がある場合は、コマンドプロンプトで次のコマンドを実行できます。

netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no

Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no

この場合、netsh interface ipv4 show dnsserversは、VPN以外の接続の最初のDNSサーバーがVPNのDNSサーバーのリストの一番上に追加されたことを示します。最初にホスト名を解決するために使用され、失敗した場合は、VPNの通常のDNSサーバーの使用にフォールバックします。


あなたはヒーローサーです。幅広い回答に感謝します。うまく機能しているようです。netshをいじってみましたが、うまくいきませんでした...
Wiebe Tijsma

1

同様の問題がありました。VPNサーバーに接続すると、ワークステーション(リモートVPNクライアント)のDNSが上書きされるため、ローカルLAN DNSが不明瞭になります。代わりにここに投稿する必要があると指摘される前に、Stackoverflow側で問題をより詳細に説明しました。

このスレッドを読んだ後、OpenVPNクライアント構成を使用してオーバーライドを防止できないことは明らかです。私の解決策は、OpenVPN接続が形成されたときに実行されるバッチファイルをOpenVPN configディレクトリに追加することでした。OVPNファイルの名前がcompany.ovpnの場合、接続時に実行されるファイルの名前はcompany_up.batにする必要があります。

今夜、StackOverflowで質問に投稿したバージョンから、ファイルをいくつか拡張しました。これは次のようになります。

1: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

1:続行する前に数秒待つハック。OpenVPNクライアントの最新バージョン(2.3)は、遅延なく実行された場合、DNSとルートの変更を無視します。

2: VPN接続のDNSをローカルホストを指すように設定します。私はリゾルバ(私が使用していSimpleDNSプラス)ローカルホスト上で稼働しているVPN経由会社のDNSサーバに会社のドメインに転送し、クエリ、およびローカルLANのDNSサーバに他のすべて。VPNエンドポイントがローカルホスト上にあるため、ローカルLANリゾルバーを使用して会社のドメインのクエリをVPN経由で会社のDNSに転送できなかったことに注意してください。接続名( "ローカルエリア接続4")は、コマンドプロンプトで "ipconfig / all"を介して決定されました。

3:会社のVPNサーバーは、VPNを介してすべての送信トラフィックをルーティングすると同時に、インターネットへの送信SSH接続を制限するように構成されています。これは私のワークフローと競合し、最初に「0.0.0.0 netmask 0.0.0.0」ルートを削除しています...

4: ..その後、ローカルLANゲートウェイを指すように0.0.0.0/0ルートを再度追加し、そのメトリック(重み)を、他の方法ではルーティングされないすべてのトラフィックのキャッチオールとして1000に設定します。

5: "exit 0"がない場合、OpenVPNはスクリプトが失敗したというエラー警告を吐き出します(終了ステータス1)。

うまくいけば、これは誰かにとって有用です..それは私にとってかなりうまくいきます(接続を開くたびに手動でルートやDNSの調整を行う必要はありません)。


0

アプリケーションが(UACを有効にせずに)DNS設定を上書きできないようにする方法はありますか?

少なくともそれを行う簡単な方法はありません。

または、「IPアドレスAのDNSリクエストが届いたら、実際にIPアドレスBを使用する」というローカルルーティングを設定する方法はありますか?

hostsファイル(C:\Windows\System32\drivers\etc\hosts)にエントリを追加できます。このファイルには、ホスト名からIPアドレスへのマッピングが含まれており、DNS要求よりも優先されます。


hostsファイルについては知っていますが、これはすべてIPアドレスに基づいているため、残念ながら機能しません...
Wiebe Tijsma

ああ、わかりました、今私はあなたの質問を得ます。そして、いいえ、あるIPから別のIPにリクエストをリダイレクトすることはできません。
マイケル

0

[リモートネットワークでデフォルトゲートウェイを使用する]チェックボックスのステータスを確認できますか。これは、VPN接続のプロパティを開いて[ネットワーク]タブに移動し、TCP / IP v4またはTCP / IP V6のいずれかを選択してから、プロパティを選択してから詳細設定を選択すると見つかります。これは有効になっている可能性があります。つまり、すべてのインターネットトラフィックがVPN接続経由でルーティングされる可能性があります。これを無効にしても、VPNで必要なことを実行できるとは限りませんが、無効にすることはできますが、インターネットアクセスが高速化される場合があります。

それでも問題が解決しない場合は、そこにDNSタブがあり、そこにDNSサーバーを追加してみることができます。私はこれを試しましたが、これらの設定が自動設定を上書きすることを期待しています。


チェックされていないため、すべてのインターネットトラフィックがVPN経由でルーティングされていません(名前が最終的に解決されると、接続は十分に高速です)。そこでDNS設定を変更しようとしましたが、残念ながら、接続を再開すると、すべて自動的に無効なDNS設定に戻ります:(
Wiebe Tijsma

変更されているDNSを停止できない場合、ファイアウォールを使用してこのアドレスへのDNS要求をブロックすることで、DNSをより速く失敗させることはできますか?
sgmoore

0

残念ながら、netshはdhcpによって割り当てられたDNSサーバーを削除できません。ただし、これは、DhcpNameServerパラメータを

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

レジストリキー。


0

2017年現在、OpenVPNに基づいている場合、これは可能です

のクライアント構成ファイルに行を追加します

pull-filterは「dhcp-option DNS」を無視します

そして、引用されたテキストで始まるプッシュされた設定行をすべて無視します。

3つのアクションキーワードはaccept ignore rejectです。拒否のユースケースを発見していません。


0

このオプションをクライアントVPN構成から削除するだけです

setenv opt block-outside-dns

問題を解決しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.