VPNプロバイダーに登録しました。
Xubuntu 17.10、openvpn 2.4.3を使用しています。 openvpnコマンドを起動した後、IPを確認し(細かい)、単純な DNSリークテスト を実行しました。
私は1つの予備的な尋問を持っています:
私の側では、openvpnの.ovpn構成ファイルのいくつかの値を変更してみました。
もともとはこれらの行がすでにありましたが、それらは機能すると予想されますが、いいえ:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
この 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を示しています。
それで、私は learned ubuntuパッケージの存在openvpn-systemd-resolved
を使用してupdate-resolve-conf
と同様のスクリプトを提供しますが、systemdで動作します(ここでは何がわからないのですか)プロセスはこれを使用します:network-manager?openvpn?)。 .ovpnファイルにパッケージをインストールし、スクリプト名をreplacedしました。
up "/etc/openvpn/update-systemd-resolved ..."
down "..."
down-pre
まだ運がありません。 [これを書いている最中に解決策を見つけました。 私の答え を参照してください]
次に、/etc/resolv.conf
ファイルを使ってたくさん遊んだ。通常は変更すべきではないので、DNSサーバーのアドレスを/etc/resolvconf/resolv.conf.d/base
に入れましたが、resolvconf -u
を発行しても機能していないようです。
VPN会社のサポート担当者とチャットしたが、解決策はない。
私はこのようなさまざまな解決策を試しました one 、およびその後の受け入れられない回答:
私が試した他のことを忘れてしまったので、stackexchangeを使用すると、悲惨な状況から自分を救うことができます。奇妙なことに、質問を定式化するだけの力でそれが実現しました。
もっと調べて気づいた。私はsystemd-update-resolved
行を削除できますが、それでも機能しますが、特定の条件でのみです。
openvpn
serviceが実行されていると、DNSリークが発生します。それを停止し、クライアントのサービスのみを再起動した場合:
Sudo service openvpn stop
Sudo service openvpn@client start
その後、動作します。
申し訳ありませんが、私はopenvpnのマニュアルを十分に確認していないと思いますが、なぜなのですか?セキュリティリークではないですか。特に、openvpnサービスは、aptからのインストール後に自動的にアクティブ化されるためです。 変更を永続的にするにはどうすればよいですか?(Sudo systemctl disable openvpn
を試しましたが、次回の起動時にも同じ問題が発生しました)。
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
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構成ごとにこれを行う必要があります。
答えは、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
私の質問のEdit 1を参照してください。
この奇妙な問題systemd-resolved.service
動作が参照されています ここ 。
クライアント設定ファイルに入れるオプションは次のようです:
dhcp-option DOMAIN-ROUTE .
明らかに、選択した接続を介してすべてのDNSをルーティングします...
これは、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 。
それがリリースされるまで、@ボブ・ウィランの答えは私にとってうまくいきました。
私はOpenVPN構成ファイルにこれらの行を追加することでこの問題を解決することができました:
スクリプトセキュリティ2
アップ/ etc/openvpn/update-resolv-conf
/ etc/openvpn/update-resolv-confをダウン
@から LinuxでOpenVPN DNSリークを修正する方法
Windowsユーザーの場合(OpenVPN +2.3.9):
block-outside-dns
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スクリプトの変更が有効になりました。