回答:
これを行うには、次のようなバッチスクリプトを使用できます。ホームDNSサーバーが1.1.1.1および2.2.2.2であり、VPN DNSサーバーが8.8.8.8 9.9.9.9であると想定しています。
vpn-connect.bat:
netsh interface ip set dns "Local Area Connection" static 8.8.8.8
netsh interface ip add dns "Local Area Connection" 9.9.9.9
vpn-disconnect.bat
netsh interface ip set dns "Local Area Connection" static 1.1.1.1
netsh interface ip add dns "Local Area Connection" 2.2.2.2
これらのスクリプトに接続および切断の方法を含めるつもりでしたが、OpenVPNにはコマンドライン経由で切断するオプションが表示されません。接続を自動化する場合、これは動作するはずです:
C:\Program Files\bin\openvpn.exe C:\Program Files\conf\client.ovpn
クライアント構成ファイルに次を追加できます。
dhcp-option DNS <dns_server_ip_address>
サーバー側では次のようになります。
push "dhcp-option DNS <dns_server_ip_address>"
dhcp-option
両側で使用しているようです。でも同じことができますroute
。
少なくともWindows 2000 / XP / 7を含む、Windowsの誤ったバインド順序に問題があるようです。これにより、Windows OpenVPNクライアントは、VPNアダプターの設定ではなくデフォルトのネットワークアダプターのDNS設定を使用します。
これを修正するには、VPN TUNまたはTAPデバイスをバインド順でローカルネットワークアダプターの上に配置する必要があります。
ipconfig
。私にとっては、これは「ローカルエリア接続2」でした。このアダプターのIPアドレスを覚えておいてください。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
、VPNアダプターのIPアドレスと一致するキーを見つけます。このアダプターのGUIDを覚えておいてください。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage
、ダブルクリックしBind
ます。これには、アダプターのGUIDのリストが含まれます。VPNデバイスのGUIDに対応する行をリストの一番上にカットアンドペーストして、リストを保存します。これにより、VPNデバイスのDNSエントリが使用されます(VPN接続がアクティブな間のみ)。@brunoqcの回答に従って設定できます。block-outside-dns
DNSクエリがリークしないように、おそらくopenvpnオプションも追加する必要があります。
この回答は、この非常に役立つブログ投稿に基づいています。
以下の2つのいずれかに加えて:
dhcp-option DNS <dns_server_ip_address> (add to client config)
または
push "dhcp-option DNS <dns_server_ip_address>" (add to server config)
これらをクライアント構成にも追加して、構成されたDNSをWindowsに強制的に使用させます。
register-dns
block-outside-dns
1番目は、WindowsがDHCPから受信した他のDNSサーバーよりも構成されたDNSサーバーを優先するように強制します。2番目は、設定されたもの以外のDNSサーバーへのDNSリークを防ぎます。