Можно ли удалить шлюз по умолчанию из /etc/resolv.conf после успешного VPN-подключения?

Я настроил PPTP VPN-соединение в Ubuntu 16.04.3 LTS через NetworkManager (nm-pptp-ppp-plugin), и оно работает. Моя конфигурация:

  1. VPN
    • Шлюз
    • Имя пользователя
    • Пароль
    • Дополнительно - установите некоторые параметры в Расширенные параметры PPTP
  2. Настройки IPv4
    • Метод : Только автоматические (VPN) адреса
    • DNS-серверы : 192.168.1.1 (внутренний IP-адрес шлюза VPN по умолчанию)
  3. Установки IPv6
    • Метод : Игнорировать

Я прокомментировал #dns=dnsmasq в /etc/NetworkManager/NetworkManager.conf, запустил sudo dpkg-reconfigure resolvconf и sudo resolvconf -u.

Без VPN-подключения my /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.

Можно ли программно удалить IP-адрес моего маршрутизатора (192.168.3.1) из /etc/resolv.conf?
Я имею в виду диспетчер NetworkManager или аналогичный.

Похоже, у меня нет проблемы утечки DNS с моей текущей конфигурацией.

P.S. Я понимаю, что мой вопрос, возможно, обсуждался ранее, но возможные дубликаты не соответствуют моим потребностям.

Обновление 1. На моем другом ноутбуке 16.04 мне также нужно было отключить systemd-resolved.service с помощью:

sudo systemctl stop systemd-resolved.service
sudo systemctl disable systemd-resolved.service
1
задан 3 August 2018 в 22:36

2 ответа

Обновление 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.

Также я нашел другие тесты на утечку DNS: Whoer и WhatLeaks .

1
ответ дан 4 August 2018 в 08:36

Это хорошо известная ошибка NetworkManager, а именно # 1211110 . Он восходит к Ubuntu 13.04 до 16.04 и , в худшей степени , к Ubuntu 16.10.

Похоже, у меня нет проблем с утечкой DNS в моей текущей конфигурации.

Тогда считайте, что вам повезло. . :) Большинство пользователей (включая меня) столкнулись с серьезными утечками DNS и пробовали разные подходы к их устранению.

Вот некоторые подходы, предложенные в отчете об ошибке (кратко):

Комментарий № 22 от Mac Bassett

Make a резервная копия этого файла 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
 

Комментарии № 27 и № 29, сделанные мной

Отредактируйте VPN-соединение (через NM) и настройте статический DNS, например, используя серверы Google:

 8.8.8.8, 8.8.4.4
 

Таким образом, запрос DNS отправляется через внешний IP-адрес, следовательно, он маршрутизируется с использованием VPN.

Затем также настройте беспроводное соединение для использования этих статических DNS-серверов.

Комментарий № 31 от DaveHenson

Запустите openvpn через командную строку.


(... некоторые другие громоздкие решения, которые я не буду здесь обсуждать ...)


Комментарий № 81 от Чагатая Юкселя

Удалить этот файл конфигурации:

 sudo rm -rf /etc/resolv.conf
 

Добавьте эту строку в раздел [main] в / etc / NetworkManager / NetworkManager.conf :

 dns = dnsmasq
 

Если у вас установлен пакет dnsmasq , убедитесь, что служба dnsmasq не включена, в противном случае это не сработает. Вам также следует перезагрузиться.

Настоящее решение

Эта ошибка была исправлена ​​в Ubuntu 17.04 . Вместо того, чтобы пробовать случайные патчи в вашей системе, вероятно, лучше просто обновить. :)

2
ответ дан 4 August 2018 в 08:36

Другие вопросы по тегам:

Похожие вопросы: