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

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-オプション-タイプ [パラメータ]

拡張TAP-Win32 TCP / IP属性を設定します。 --ip-win32 ダイナミックまたは --ip-win32 アダプティブで使用する必要があります。

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

答え1

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

文書は次のとおりです。 https://wiki.archlinux.org/index.php/OpenVPN#DNS

スクリプトは次の場所にあります。ここまたは最新のLinuxバージョンここopenvpn クライアント構成に以下を追加して呼び出すことができます。

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

答え2

私は専門家ではありませんが、man以下に引用したページを読んでみると次のようになります。

--dhcp-オプション-タイプ [パラメータ]

...

参考にしてください--dhcp-option --pushを介してWindows以外のクライアントにプッシュする、オプションは、upスクリプトを呼び出す前に、foreign_option_{n}という名前でクライアント環境に保存されます。

そして下海外オプション_{n}:

海外オプション_{n}

--pushを介してデフォルトでサポートされていないクライアントにプッシュするオプション(例:Windows以外のシステムの--dhcp-オプション、この環境変数の順序の前に記録されます。 --up スクリプトの実行

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

--トップコマンド

TUN / TAP装置を正常に開いた後(ユーザーUIDを変更する前)、cmdコマンドを発行してください。

cmdは、スクリプト(またはランチャー)へのパスとオプションで引数が続くパスで構成されます。パスと引数は、単一引用符または二重引用符で囲むか、バックスラッシュでエスケープでき、1つ以上のスペースで区切る必要があります。

例えばトンネルレンガまた、これを活用してこれを行うスクリプト

別の解決策は、openvpnメーリングリストにスクリプトを公開することです。OS Xクライアント用DNS - 最終ガイド

答え3

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を介してドメインに接続してナビゲートし、NetWorkManagerに接続してDNSを自動的に設定できます。

答え4

クライアントの conf ファイルにこのコマンドを追加します。

# put actual dns name here
dhcp-option DNS 10.11.12.13 

必ず成功するでしょう...

関連情報