web-dev-qa-db-ja.com

openvpnでDNSサーバーを定義する方法は?

静的キーを使用してopenvpnサーバーをセットアップしましたが(国のゲートウェイでDPIが原因で証明書モードは使用できません)、接続後にDNSを自動的に変更できません。私はインターネットとSEで検索しましたが、誰もがdhcp-optionの使用を提案しています。

この行をclient.ovpnに追加しようとしました

dhcp-option DNS 8.8.8.8

影響はありません。この行をサーバーの設定に追加しようとしました

Push "dhcp-option DNS 8.8.8.8"

どちらも効果がありません。

実際、マニュアルによると、

--dhcp-option type [parm]

拡張TAP-Win32 TCP/IPプロパティを設定します。動的な--ip-win32または--ip-win32と一緒に使用する必要があります。

しかし、私のクライアントはMacマシン、サーバーLinuxです。問題の解決策はありますか?

17
Siyuan Ren

Linuxシステムでは、外部スクリプトを実行する必要がありますです。

ここにドキュメントがあります: https://wiki.archlinux.org/index.php/OpenVPN#DNS

スクリプトは here または新しいLinuxバージョン here にあり、openvpnクライアント構成にこれを追加することでスクリプトを呼び出すことができます。

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
7
Damien

私は専門家ではありませんが、見積もりの​​下のmanページを読んでください。

--dhcp-option type [parm]

...

-dhcp-optionが--Pushを介して非Windowsクライアントにプッシュされた場合の場合、オプションはupスクリプトが呼び出される前に「foreign_option_ {」という名前でクライアントの環境に保存されます。 n} "。

foreign_option_ {n}の下:

foreign_option_ {n}

-Windows以外のシステムのdhcp-optionなど、-Pushを介してクライアントにネイティブでサポートされていないオプションがプッシュされると、この環境変数シーケンスに事前に記録されますスクリプト実行のアップへ

したがって、コマンドラインopenvpnクライアントは、接続の確立後にOSXマシンのDNS設定を自動的に変更しません。ただし、DNSオプションはクライアントの環境に保存されるため、--upオプションを使用して、システムの現在のDNS構成にプッシュされたサーバーを追加するスクリプトを指定できます。

--up cmd

TUN/TAPデバイスが正常に開いた後でコマンドcmdを実行します(--user UIDの変更前)。

cmdは、スクリプト(または実行可能プログラム)へのパスで構成され、オプションで引数が続きます。パスと引数は、単一引用符または二重引用符で囲んだり、バックスラッシュを使用してエスケープしたりすることができ、1つ以上のスペースで区切る必要があります。

例えば。 Tunnelblick もこれを利用してこれを行います script

別の解決策は OS XクライアントのDNS-決定的なガイド のopenvpnメーリングリストに投稿されたスクリプトである可能性があります。

5
FloHimself

Linux OS(サーバーとクライアント)の両方で同じ問題があり、サーバーにdnsmasqをインストールすることで問題が解決しました

だから私のステップ:

apt-get install dnsmasq

server.conf

Push "redirect-gateway def1" Push "dhcp-option DNS 8.8.8.8" Push "dhcp-option DNS 8.8.4.4"

また、サーバーIPを介してドメインを接続および参照し、DNSを自動に設定してNetWorkManagerに接続することもできます。

4
Maddish