VPN接続から新しいネームサーバーを自動的に取得する方法

VPN接続から新しいネームサーバーを自動的に取得する方法

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-resolvedsystemd-revolvedresolvconf

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のチケットを何度も切った。

関連情報