web-dev-qa-db-ja.com

OpenVPNクライアント構成ファイルを使用したDNSサーバーの設定

クライアント構成のみを使用してクライアントにDNSサーバーを設定するにはどうすればよいですか。私のクライアントはWindowsマシンであり、クライアントが接続したときにDNSサーバーを変更し、VPNから切断したときに元の構成に戻したいと考えています。

これまでに見つけたすべての情報は、サーバーの構成を使用してDNS構成をクライアントにプッシュすることに関するものですが、この場合はサーバー構成を変更できず、現在VPNに接続するたびに手動で変更しています。接続の期間中にローカルマシンのDNSサーバーを設定するためのopenvpn configオプションはすばらしいでしょう。

18
Fahad Yousuf

これを行うには、次のようなバッチスクリプトを使用できます。ホーム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

3
Andrew White

以下をクライアント構成ファイルに追加できます。

dhcp-option DNS <dns_server_ip_address>

サーバー側では次のようになります:

Push "dhcp-option DNS <dns_server_ip_address>"

両側でdhcp-optionを使用しているようです。 routeでも同じことができます。

15
brunoqc

どうやら、少なくともWindows 2000/XP/7を含めて、Windowsの不完全なバインド順序に問題があるようです。これにより、Windows OpenVPNクライアントは、VPNアダプターの設定ではなく、デフォルトのネットワークアダプターのDNS設定を使用します。

これを修正するには、VPN TUNまたはTAPデバイスをバインド順でローカルネットワークアダプターの上に配置する必要があります。

  1. ipconfigからの出力を見て、VPNデバイスを特定します。私にとってこれは「ローカルエリア接続2」でした。このアダプターのIPアドレスを覚えておいてください。
  2. Regedit.exeを開き、VPNアダプタのIPアドレスと一致するHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesの下のキーを見つけます。このアダプタのGUIDを覚えておいてください。
  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkageに移動し、Bindをダブルクリックします。これには、アダプターのGUIDのリストが含まれます。 VPNデバイスのGUID=に対応する行をカットアンドペーストしてリストの上部に貼り付け、リストを保存します。

これにより、VPNデバイスのDNSエントリが使用されます(VPN接続がアクティブな間のみ)。 @brunoqcの回答に応じて設定できます。 DNSクエリがリークしていないことを確認するには、openvpnオプションblock-outside-dnsも追加する必要があります。

この回答は この非常に便利なブログ投稿 に基づいています。

8
jtbr

以下の2つのいずれかに加えて:

dhcp-option DNS <dns_server_ip_address>          (add to client config)

または

Push "dhcp-option DNS <dns_server_ip_address>"   (add to server config)

これらをクライアント構成にも追加して、Windowsに構成されたDNSを使用するように強制します。

register-dns
block-outside-dns

1つ目は、DHCPから受信した他のどのDNSサーバーよりも構成されたDNSサーバーを優先するようにWindowsに強制します。 2番目は、構成されたDNSサーバー以外のDNSサーバーへのDNSリークを防止します。

5
Duke Nukem