web-dev-qa-db-ja.com

Ubuntu 18.04 openvpnへの接続時にDNS解決がありません

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.53system-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
36
orestis

このブログ投稿 で解決策を見つけました。上記の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

(元のアップ/ダウン設定をコメントアウトしました)。

24
Andy Turfer

問題

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デバイスはそれを無視するようです。

ソリューション

  1. Ubuntu 18.04はsystemd-resolvedを使用するため、systemd-resolvedのopenvpnヘルパースクリプトをインストールするだけです。

    Sudo apt install openvpn-systemd-resolved
    

    または これらのGitHub命令

  2. 次の行を追加して、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に追加または削除する代わりに。

  3. DNSの漏洩を防ぐには、config.ovpnファイルの最後に次の行を追加する必要があります( this systemd issue comment に従って):

    dhcp-option DOMAIN-ROUTE .
    
41
Qlimax

実際、この問題に対するはるかに簡単な解決策があります。問題はDNSトラフィックとUbuntu 18がそれを管理する方法にあります。デフォルトでは、適切なネットワークを提供するためにOpenVPNが必要とするIP転送は無効になっています。次のコマンドを実行するだけです。

Sudo nano /etc/sysctl.conf

このファイルを開いたら、net.ipv4.ip_forwardを含む行を探します。この行がコメント化されている場合は、行頭の#記号を削除します(コメント化されていない場合は、別の問題があります)。ファイルを保存してから、OpenVPNサーバーインスタンスを再起動します。

この修正では、Ubuntu 18へのアップグレード後にクライアントまたはOpenVPNコードを変更する必要はありません。テストおよび動作確認済みです。

ただし、これには明らかにサーバーを管理できることが必要です。残念ながら、このバグは、18.04で他の誰かが管理しているOpenVPNサーバーに接続するだけの多くの人に存在します...

3
Max

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

1
vskubriev

私も影響を受けています。私の場合、内部ネームサーバー(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

数日のうちに、これで問題が解決するかどうかの経験が増えます。

あなたも影響を受けている場合は、これを試してコメントを投稿してください!

乾杯、

マイケル。

0