Gnome Network-managerを介してVPNネットワークに接続すると、DNS解決が失われ、実際には、VPNネットワーク内または外部のリソースにアクセスできません。
Ubuntu 16.04を使用していて、VPNを使用していた場合、「/etc/resolv.conf/
」ファイルには、接続した(VPN)ネットワークのDNSサーバーが含まれていました。現在、常に次のエントリが含まれています。
nameserver 127.0.0.53
search myprovider.com
私が理解したことから127.0.0.53
はsystem-resolved
によって使用されるDNSスタブのアドレスです。
これは、Ubuntu 16.04でVPNが正常に機能していたため、これがバグだと思われます。 VPNサービスを使用しているときにネットワークのDNSサーバーを設定する方法はありますか?
更新:
投稿の最後に構成ファイルを添付してOpenVPNネットワークに接続しようとしましたが、次のエラーが表示されます。
Authenticate/Decrypt packet error: cipher final failed
サーバーがlzo圧縮を使用していることを確認し、同様に有効にしました。接続はアクティブなままですが、VPNの内部または外部のページに移動できません。
以下にリストされている構成ファイルには、返信に投稿されたソリューションが含まれています。
client
dev tun
proto udp
remote openvpn.bibsys.no 1194
remote my-server-2 1194
resolv-retry infinite
nobind
user myuser
group myuser
persist-key
persist-tun
ca ca-cert.pem
cert openvpn.crt
key openvpn.key
cipher AES-256-CBC
comp-lzo yes
script-security 2
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved
down-pre
このブログ投稿 で解決策を見つけました。上記の2つのソリューションがありますが、私はDNSがOpenVPNサーバーによって設定されることを意味するため、2番目のソリューションを使用することを好みます(最初のソリューションは、OpenVPNサーバーに接続しているかどうかにかかわらず同じDNSサーバーを使用することを意味します)。
要するに:
Sudo mkdir -p /etc/openvpn/scripts
Sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
Sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved
次に、up/downスクリプトを次のように変更して、OpenVPNクライアントファイル(client.ovpnなど)を編集します。
script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved
(元のアップ/ダウン設定をコメントアウトしました)。
問題
resolvconf
はデフォルトでubuntu 18.04にインストールされていないため、ファイル/etc/resolv.conf
は/etc/openvpn/update-resolv-conf
スクリプトによって更新されません。
実際、そのスクリプトの最初の行の1つは、/sbin/resolvconf
実行可能ファイルをチェックします。
[ -x /sbin/resolvconf ] || exit 0
apt-get
スクリプトを使用してresolvconfをインストールすると、プッシュされたDNSエントリで/etc/openvpn/update-resolv-conf
スクリプトが/etc/resolv.conf
ファイルを更新しますが、tunデバイスはそれを無視するようです。
ソリューション
Ubuntu 18.04はsystemd-resolved
を使用するため、systemd-resolved
のopenvpnヘルパースクリプトをインストールするだけです。
Sudo apt install openvpn-systemd-resolved
または これらのGitHub命令
次の行を追加して、config.ovpn
ファイルを更新します。
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
/etc/openvpn/update-resolv-conf
をconfに追加または削除する代わりに。
DNSの漏洩を防ぐには、config.ovpn
ファイルの最後に次の行を追加する必要があります( this systemd issue comment に従って):
dhcp-option DOMAIN-ROUTE .
実際、この問題に対するはるかに簡単な解決策があります。問題はDNSトラフィックとUbuntu 18がそれを管理する方法にあります。デフォルトでは、適切なネットワークを提供するためにOpenVPNが必要とするIP転送は無効になっています。次のコマンドを実行するだけです。
Sudo nano /etc/sysctl.conf
このファイルを開いたら、net.ipv4.ip_forward
を含む行を探します。この行がコメント化されている場合は、行頭の#記号を削除します(コメント化されていない場合は、別の問題があります)。ファイルを保存してから、OpenVPNサーバーインスタンスを再起動します。
この修正では、Ubuntu 18へのアップグレード後にクライアントまたはOpenVPNコードを変更する必要はありません。テストおよび動作確認済みです。
ただし、これには明らかにサーバーを管理できることが必要です。残念ながら、このバグは、18.04で他の誰かが管理しているOpenVPNサーバーに接続するだけの多くの人に存在します...
2018年9月13日、Ubuntu 18.04でテスト済み
コマンドライン経由で必要なものをセットアップするための別の便利なコマンドがあります。しかし、私の場合、コマンドラインとGUIの両方でVPN接続を制御できます。
Sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --
ifname --
はデフォルトで必須ですが、何にも影響しません
Sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 Sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com Sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes
never-default
はデフォルトゲートウェイとしてリモートゲートウェイを使用しないでください
そして、もっと興味のある最後の仕上げ:
nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'
その後、GUIでvpnを制御するか、次のコマンドを使用できます。
Sudo nmcli --ask connection up la.vpn.contoso.com Sudo nmcli connection down la.vpn.contoso.com
私も影響を受けています。私の場合、内部ネームサーバー(VPN内にある)でOpenVPNを使用しています。これは、Ubuntu 17.10(/etc/nsswitch.confの「hosts:files dns」を使用)まで機能しました。
/etc/resolv.confは、openvpnスクリプトによって(openvpnクライアント構成ファイルの/ etc/openvpn/update-resolv-confの呼び出しを介して)正しく更新されました。
しかし、VPN内のホストの名前解決はもう機能していませんでした(または少なくとも散発的に...ローカルDNSキャッシュが名前を選択していたと思いますが、かなり長い時間が経ちました)。
(言うには早すぎるが)問題を解決する、あるいは解決するように思われるのは、以下のパッケージをインストールすることです:
Sudo apt install openvpn-systemd-resolved
数日のうちに、これで問題が解決するかどうかの経験が増えます。
あなたも影響を受けている場合は、これを試してコメントを投稿してください!
乾杯、
マイケル。