OpenVPN DNSリークを解決する方法

OpenVPN DNSリークを解決する方法

私はVPNプロバイダに参加しました。

Xubuntu 17.10、openvpn 2.4.3があります。 openvpnコマンドを起動した後、IPを確認して(大丈夫でした)簡単な作業を行いました。DNSリークテスト:いいえ、私のインターネットサービスプロバイダが表示されます!

このDNSリークの問題を解決するには?

予備の質問があります。

  • 私の側で「修正可能」ですか?または、リモートサーバーが誤って設定されていますか?

私の立場では、openvpnの.ovpn設定ファイルでいくつかの値を変更してみました。

  1. 最初は次の行があり、うまくいくと予想されていましたが、うまくいきませんでした。

    script-security 2
    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf
    
  2. 私はこれに従ってそれらを変えました。Reddit 回答(DNSアドレスを明示的に指定):

    dhcp-option DNS 208.67.222.222
    dhcp-option DNS 208.67.220.220
    dhcp-option DNS 8.26.56.26
    up "/etc/openvpn/update-resolv-conf foreign_option_1='dhcp-option DNS 208.67.222.222' foreign_option_2='dhcp-option DNS 208.67.220.220' foreign_option_3='dhcp-option DNS 8.26.56.26'"
    down "/etc/openvpn/update-resolv-conf foreign_option_1='dhcp-option DNS 208.67.222.222' foreign_option_2='dhcp-option DNS 208.67.220.220' foreign_option_3='dhcp-option DNS 8.26.56.26'"
    

    /etc/resolvconfこれにより、up / downスクリプトによって内容が更新されるため、操作が実行されるようです。

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "systemd-resolve --status" to see details about the actual nameservers.
    
    nameserver 208.67.222.222
    nameserver 208.67.220.220
    nameserver 8.26.56.26
    search lan
    

    しかし、DNSleaktestにはまだ私のISPが表示されます。

  3. それから私は学んだopenvpn-systemd-resolvedsystemdに似たスクリプトを提供しますが、systemdと連携させるubuntuパッケージがありますupdate-resolve-conf(ここでどのプロセスがこのスクリプトを使用しているかわかりません:network-manager?openvpn?)。パッケージをインストールしました。交換済み私の.ovpnファイルのスクリプト名:

    up "/etc/openvpn/update-systemd-resolved ..."
    down "..."
    down-pre
    

    まだ運がありません。[この記事を書いた時点で、私は解決策を見つけました。私の答え次のように]

  4. その後、このファイルをたくさん変更しました/etc/resolv.conf。普段は変わらないはずなので DNS サーバーアドレスを に入れたのに/etc/resolvconf/resolv.conf.d/base公開resolvconf -uできないようです。

  5. VPN会社サポートチームに連絡しましたが、解決策はありません。

  6. 私はこのようなさまざまな解決策を試しました。一つ、そしてその後許可されていない答え:

    • インストールdnsmasqしてserver=...入れてください/etc/dnsmasq.conf
    • 存在する/etc/dhcp/dhclient.conf詳細);
    • ベースchattrとしてハッカー
  7. 私は私が試した他のことを忘れてしまいました、そしてstackexchangeが私を不幸から救ってくれると思い、奇跡的に質問の力を通してそれをしました。

[編集1:解決されていません!実際、私の最初の答えはそれがうまくいく理由ではありません。

私はより多くの検査をした後にこれを見つけました。この行を削除してもsystemd-update-resolved機能しますが、特定の条件でのみ機能します。

いつ。 。 。いつopenvpn 提供する実行中にDNSリークが発生しました。これを停止してからクライアントのサービスのみを再起動する場合:

sudo service openvpn stop
sudo service openvpn@client start

だとしたら大丈夫です。

申し訳ありません。まだopenvpnマニュアルを慎重に確認していないようですが、なぜそんなのですか?これはセキュリティホールではありませんか?特に、openvpn サービスは apt でインストール後に自動的に有効になるためです。変化を永久にする方法は?(試してみましたが、sudo systemctl disable openvpn次のブートでも同じ問題が発生しました。)

[編集2:ルーティングテーブル]

停止しopenvpnて開始するとopenvpn@clientDNS漏れがなく、出力はroute -n次のようになります。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.65.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.17    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.65.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.65.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

sudo service openvpn restart:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.16    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

もう動作しません。どちらの場合も、DNSリークが発生します。私はそのパッケージ(resolvconfを置き換える)をインストールしようとしましたが、うまくいくopenresolvようです。新しいルーティングテーブルは次のとおりです。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.161   128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.15    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.160   0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.161   128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

答え1

したがって、答えはArchLinux Wikiの常に有効な指示に注意深く従うことです。

https://wiki.archlinux.org/index.php/OpenVPN#Update_systemd-resolved_script

そして追加対応する行。

したがって、2つのステップ:

sudo apt install openvpn-systemd-resolved

そして追加.ovpn ファイルに次の行を追加します。

script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

明確でない場合は、ファイルに次のものを含める必要があります。二つ「上」行の合計二つ「下」行:

# old lines
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
# new lines
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

[編集1:事実いいえ、それがうまくいく理由ではありません。]

バラより編集1私の質問に。

[編集2:今回はちゃんとしたらしいです]

奇妙なsystemd-resolved.service動作を含むこの問題が引用されました。ここ

クライアント構成ファイルに入力されるように見えるオプションは次のとおりです。

dhcp-option DOMAIN-ROUTE .

明らかに、選択した接続を介してすべてのDNSをルーティングします。

答え2

Ubuntu 17.10および現在18.04 LTSでDNSリークの問題があります。先日16.10アップデートの時から始まったようですが、これまで偶然確認してみるつもりはありませんでした。以下のURLを見つけてバグレポートを最初から最後まで読むまでは、上記の内容(そして私が見つけてみた他のすべての内容)も役に立ちませんでした。 DNSプライオリティラインの追加の説明は私にとって効果的でした。

https://bugs.launchpad.net/network-manager/+bug/1624317 コメント#103を参照してください。

インストールされたNetworkManager VPN接続を見つけます(" "は、$ターミナルウィンドウのコマンドラインにあることを示すシステムプロンプトにすぎません)。

$ ls -la /etc/NetworkManager/system-connections/*

その後、変更する項目を選択してこのコマンドを実行します(または、このコマンドはipv4セクションの下にdns-priorityエントリを追加するため、設定ファイルを手動で編集することもできます)。

$ sudo nmcli 接続の変更<VPN接続名>ipv4.dns-優先順位-42

再起動してください。

$ sudo service network-manager restart

少なくとも私にとっては、これを私のVPN(ProtonVPN)からOpenVPN .ovpn設定ファイルに入れるのはうまくいかないことに注意してください。何らかの理由でGUIダイアログを使用してインストールすると、NetworkManager設定に移動しません。インストール後に構成を更新し、NetworkManagerを再起動した場合にのみ機能しました。使用するインストール済みの各VPN構成に対してこれを行う必要があります。

答え3

これは、systemd-resolveを理解するためにnetwork-manager-openvpnパッケージを更新する前にUbuntuがsystemd-resolveに切り替えたため、バグのようです。 Ubuntu 18.10では、Network Manager 1.12.2-0ubuntu5でこの問題を解決したようです。詳細については、ここをクリックしてください。https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/issues/10

投稿する前に、@Bob Willanの答えが私にとって効果的でした。

答え4

OpenVPN設定ファイルに次の行を追加して問題を解決しました。

スクリプトセキュリティ2

/etc/openvpn/update-resolv-conf

降りて /etc/openvpn/update-resolv-conf

から @LinuxでOpenVPN DNSリークを修正する方法

Windowsユーザーの場合(OpenVPN +2.3.9):

外部DNSブロック

関連情報