web-dev-qa-db-ja.com

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

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

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

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

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

ありがとう

10
Wiebe Tijsma

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

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

ただし、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サーバーの使用にフォールバックします。

18
Ashley Ross

同様の問題がありました。 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 Plus を使用)があり、VPN経由で会社のドメインへのクエリを会社のDNSサーバーに転送し、それ以外はすべてローカルLANのDNSサーバーに転送します。 VPNエンドポイントがローカルホスト上にあるため、ローカルLANリゾルバーを使用して会社のドメインのクエリをVPN経由で会社のDNSに転送できなかったことに注意してください。接続名( "ローカルエリア接続4")は、コマンドプロンプトの "ipconfig/all"で決定されました。

3:会社のVPNサーバーは、allすべての送信トラフィックを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調整を行う必要はありません)。

1
Ville

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

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

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

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

0
Michael

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

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

0
sgmoore

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

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

レジストリキー。

0
a1nt

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

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

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

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

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

0
Criggie

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

setenv opt block-outside-dns

問題を解決しました

0
Ismail