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をルーティングします。

おすすめ記事