web-dev-qa-db-ja.com

OpenVPN DNSリークを修正する方法

VPNプロバイダーに登録しました。

Xubuntu 17.10、openvpn 2.4.3を使用しています。 openvpnコマンドを起動した後、IPを確認し(細かい)、単純な DNSリークテスト を実行しました。

このDNSリークを修正する方法?

私は1つの予備的な尋問を持っています:

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

私の側では、openvpnの.ovpn構成ファイルのいくつかの値を変更してみました。

  1. もともとはこれらの行がすでにありましたが、それらは機能すると予想されますが、いいえ:

    script-security 2
    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf
    
  2. この reddit answer に従って変更しました(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のコンテンツがアップ/ダウンスクリプトによって更新されるので、それを行うことは仕事をするようです:

    # 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. それで、私は learned ubuntuパッケージの存在openvpn-systemd-resolvedを使用してupdate-resolve-confと同様のスクリプトを提供しますが、systemdで動作します(ここでは何がわからないのですか)プロセスはこれを使用します:network-manager?openvpn?)。 .ovpnファイルにパッケージをインストールし、スクリプト名をreplacedしました。

    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. 私はこのようなさまざまな解決策を試しました one 、およびその後の受け入れられない回答:

    • dnsmasqをインストールし、server=.../etc/dnsmasq.confに挿入します。
    • 「置き換え」行を/etc/dhcp/dhclient.confdetails )に入れます。
    • chattrベースの hack
  7. 私が試した他のことを忘れてしまったので、stackexchangeを使用すると、悲惨な状況から自分を救うことができます。奇妙なことに、質問を定式化するだけの力でそれが実現しました。

[編集1:未解決!実際、私の最初の答えはそれが機能する理由ではありません]

もっと調べて気づいた。私はsystemd-update-resolved行を削除できますが、それでも機能しますが、特定の条件でのみです。

openvpnserviceが実行されていると、DNSリークが発生します。それを停止し、クライアントのサービスのみを再起動した場合:

Sudo service openvpn stop
Sudo service openvpn@client start

その後、動作します。

申し訳ありませんが、私はopenvpnのマニュアルを十分に確認していないと思いますが、なぜなのですか?セキュリティリークではないですか。特に、openvpnサービスは、aptからのインストール後に自動的にアクティブ化されるためです。 変更を永続的にするにはどうすればよいですか?Sudo systemctl disable openvpnを試しましたが、次回の起動時にも同じ問題が発生しました)。

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

openvpnを停止してopenvpn@clientを開始すると、DNSリークは発生せず、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リークが発生します。パッケージopenresolv(resolvconfの代わりとなる)をインストールしてみましたが、動作するようです。これが新しいルーティングテーブルです。

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
8
PlasmaBinturong

Ubuntu 17.10でこのDNSリークの問題が発生し、18.04 LTSになりました。 16.10からしばらく前に更新したときに始まり、偶然にこれまでチェックするつもりはありませんでした。上記(および私が見つけて試した他のこと)はどれも、バグ報告を最後まで読んでこのURLに出会うまで役に立ちませんでした。 dns-priority行の追加に関するコメントは私にとってうまくいきました。

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

インストールされているNetworkManager VPN接続( '$ 'は、ターミナルウィンドウのコマンドラインにいることを示すための、私のシステムプロンプトです):

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

次に、修正するものを選択してこのコマンドを実行します(または、このコマンドはセクションipv4の下にdns-priorityエントリを追加するだけなので、構成ファイルを手動で編集できます)。

$ Sudo nmcli connection modify <vpn接続名> ipv4.dns-priority -42

そして再起動します:

$ Sudo service network-manager restart

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

2
Bob Willan

答えは、ArchLinux wikiの常時オンの指示に注意深く従うことです。

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

およびappendに対応する行を追加します。

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

Sudo apt install openvpn-systemd-resolved

およびappend.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

それが明確でない場合、ファイルには2行が "up"およびtwo行が "down"である必要があります。

# 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:実際にはNOPE、これが機能した理由ではありませんでした]

私の質問のEdit 1を参照してください。

[編集2:今回は正しく理解できたと思います]

この奇妙な問題systemd-resolved.service動作が参照されています ここ

クライアント設定ファイルに入れるオプションは次のようです:

dhcp-option DOMAIN-ROUTE .

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

5
PlasmaBinturong

これは、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/1

それがリリースされるまで、@ボブ・ウィランの答えは私にとってうまくいきました。

2
majikman

私はOpenVPN構成ファイルにこれらの行を追加することでこの問題を解決することができました:

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

アップ/ etc/openvpn/update-resolv-conf

/ etc/openvpn/update-resolv-confをダウン

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

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

block-outside-dns

0
Soheyl

DNS-LeakProblemにも遭遇しました。私のovpnファイルの変更は助けにはなりませんでした。理由はパッケージが欠落していたことです。 OpenVPNはそれについて警告しませんでした。

 script-security 2 
 up /etc/openvpn/update-resolv-conf
 down/etc/openvpn/update-resolv-conf

スクリプトcat /etc/openvpn/update-resolv-confを確認すると、/sbin/resolvconfで別のプログラムを呼び出していることがわかりました。 ls /sbin/resolvconfを実行すると、そのファイルが見つからないことがわかりました。クイック検索により、不足しているパッケージに 移動しました。

apt install openresolvでインストールした後、ovpnスクリプトの変更が有効になりました。

0
AlexOnLinux