Ubuntu Genial 16.04を実行しています。
openvpnを使用して仮想プライベートクラウドに接続します。クラウドには独自のDNSサーバーがあります(ローカルパス(自宅またはオフィス)も同様)。
VPNに接続すると、ネットワーク上のすべてのIPを使用できますが、ホスト名ではどのIPにもアクセスできません。理由は簡単です。 resolv.confファイルにはまだ私のローカルオフィスのネームサーバーが表示されるためです。正しいネームサーバーを取得するために手動でresolv.confをオーバーライドすると、すべてが正常です。
それでは、VPNに接続したときにresolv.confを自動的に再設定するにはどうすればよいですか?
システムイベントに接続してスクリプトを実行できますか?
答え1
OpenVPN パッケージは、次のよう/etc/openvpn/update-resolv-conf
に構成する必要があります。
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
dhcp-option DNS
その後、OpenVPNピア/サーバーが渡したオプションからDNSサーバーアドレスを取得し、それresolvconf
に応じて設定します。またうまく処理しますdhcp-option DOMAIN
。
しかし、完璧ではありません。これは、既存のネームサーバーのリストを上書きせずに、ネームサーバーを既存のネームサーバーのリストに追加するためです。を使用している場合は、事前にDNS設定を追加するのではなく、DNS設定を上書きするために使用openresolv
できます。-x
を使用している場合は、which Hooks intoを代わりにsystemd-resolved
使用できます。/etc/openvpn/update-systemd-resolved
systemd-revolved
resolvconf
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
Debian ではスクリプトがopenvpn-systemd-resolved
。
答え2
私が思いついた解決策は次のとおりです。トンネルの実行中にスクリプトを実行できるスイッチがあります。私はそのスイッチを使ってデフォルトでresolv.confファイルを知っている正しいファイルで上書きします。私はこれが完全なハッキングであることを知っています。
sudo openvpn --up reset-dns.sh --client client.ovpn
スクリプト(DNSリセット):
#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf
また、「マブソサ!あなたはそのトンネルをルートとして実行しています!」と言っている人は、私がDNSをハッキングする前でも他の方法では機能しません。
私は間違いなくより良い方法を開こうとしています。 Ubuntuのネットワーク管理者はまったく機能しません。私はこれのためにUbuntuのチケットを何度も切った。