NetworkManager(nm-pptp-ppp-plugin)を介してUbuntu 16.04.3 LTSでPPTP VPN接続を設定しましたが、動作します。私の構成:
#dns=dnsmasq
で/etc/NetworkManager/NetworkManager.conf
をコメントアウトし、Sudo dpkg-reconfigure resolvconf
とSudo resolvconf -u
を実行しました。
VPN接続がない場合、/etc/resolv.conf
には次の行が含まれます。
nameserver 192.168.3.1
ここで、192.168.3.1はルーターのIPです。
その後、VPN接続/etc/resolv.conf
は次のように変更されます。
nameserver 192.168.1.1
nameserver 192.168.3.1
しかし、私が理解できる限り、それは192.168.1.1のみを含むべきです。
/etc/resolv.conf
からルーターのIP(192.168.3.1)をプログラムで削除することはできますか?
つまり、 NetworkManagerディスパッチャー などです。
現在の構成では DNSリークの問題 が発生していないようです。
追伸私の質問は以前に議論された可能性があることを理解していますが、重複の可能性は私のニーズに合いません。
アップデート1私の他の16.04ラップトップでは、systemd-resolved.service
を無効にする必要もありました。
Sudo systemctl stop systemd-resolved.service
Sudo systemctl disable systemd-resolved.service
Update 2単純で単純なダーティディスパッチャを作成し、/etc/NetworkManager/dispatcher.d/03vpn
に配置しました。
#!/bin/sh -e
RESOLV_CONF=`readlink /etc/resolv.conf`
ROUTER_IP="nameserver 192.168.3.1"
logger -t DNS-antileak "start"
# disable local router IP in /etc/resolv.conf
if [ "$2" = "vpn-up" ]; then
sed -i "s/$ROUTER_IP/#$ROUTER_IP/g" $RESOLV_CONF
logger -t DNS-antileak "disabled $ROUTER_IP on vpn-up"
fi
if [ "$2" = "vpn-down" ]; then
sed -i "s/#$ROUTER_IP/$ROUTER_IP/g" $RESOLV_CONF
logger -t DNS-antileak "enabled $ROUTER_IP on vpn-down"
fi
logger -t DNS-antileak "end"
exit 0
でアクティベートできます
Sudo chown root:root /etc/NetworkManager/dispatcher.d/03vpn
Sudo chmod 755 /etc/NetworkManager/dispatcher.d/03vpn
OpenVPNおよびPPTP接続でテストしました。
これはNetworkManagerのよく知られたバグであり、具体的には #121111 です。 Ubuntu 13.04から16.04まで戻り、より悪い範囲でUbuntu 16.10に戻ります。
現在の構成ではDNSリークの問題はないようです。
その後、自分自身をかなり幸運だと考えてください。 :)ほとんどのユーザー(私を含む)は、深刻なDNSリークを経験し、それらを解決するためにさまざまなアプローチを試みました。
バグレポートで提案されているいくつかのアプローチを以下に示します(要約):
このNetworkManagerファイルのバックアップコピーを作成します。
Sudo cp /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper.orig
ファイルに次の3行を追加します。
#!/bin/bash /etc/openvpn/update-resolv-conf $@ /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper.orig $@
次に:
Sudo chmod +x /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper
警告:VPNを切断した後、次のコマンドを実行する必要があります。
Sudo script_type=down dev=tun0 /etc/openvpn/update-resolv-conf
(NMを介して)VPN接続を編集し、たとえばGoogleサーバーを使用して静的DNSをセットアップします。
8.8.8.8, 8.8.4.4
この方法では、DNS要求は外部IPを介して送信されるため、VPNを使用してルーティングされます。
次に、これらの静的DNSサーバーを使用するようにワイヤレス接続を設定します。
コマンドラインから
openvpn
を実行します。
(...ここでは説明しない他の面倒な解決策...)
この構成ファイルを削除します。
Sudo rm -rf /etc/resolv.conf
この行を
[main]
の/etc/NetworkManager/NetworkManager.conf
セクションに追加します。dns=dnsmasq
dnsmasq
パッケージがインストールされている場合は、dnsmasq
サービスが有効になっていないことを確認する必要があります。有効になっていないと機能しません。また、再起動する必要があります。
このバグ buntu 17.04で修正済み 。システムでランダムなパッチを試すよりも、単にアップグレードする方がよいでしょう。 :)