É possível remover meu gateway padrão de /etc/resolv.conf após uma conexão VPN bem-sucedida?

1

Eu configurei a conexão PPTP VPN no Ubuntu 16.04.3 LTS via NetworkManager (nm-pptp-ppp-plugin) e funciona. Minha configuração:

  1. VPN
    • Gateway
    • Nome de usuário
    • Senha
    • Avançado - define algumas opções em Opções Avançadas do PPTP
  2. Configurações IPv4
    • Método : Endereços automáticos (VPN) somente
    • servidores DNS : 192.168.1.1 (endereço IP interno do gateway padrão da VPN)
  3. IPv6 Settins
    • Método : Ignore

Comentei #dns=dnsmasq em /etc/NetworkManager/NetworkManager.conf , corri sudo dpkg-reconfigure resolvconf e sudo resolvconf -u .

Sem conexão VPN, meu /etc/resolv.conf contém a seguinte linha:

nameserver 192.168.3.1

onde 192.168.3.1 é o IP do meu roteador.
Depois disso, a conexão VPN /etc/resolv.conf muda para:

nameserver 192.168.1.1
nameserver 192.168.3.1

Mas, tanto quanto eu posso entender, deve conter apenas 192.168.1.1.

É possível remover o IP do meu roteador (192.168.3.1) de /etc/resolv.conf programaticamente?
Quero dizer, por NetworkManager Dispatcher ou similar.

Parece que eu não tenho o problema de vazamento de DNS com minha configuração atual.

P.S. Eu entendo que minha pergunta pode ter sido discutida antes, mas possíveis duplicatas não se encaixam em minhas necessidades.

Atualização 1. Em meu outro laptop 16.04, também precisei desativar systemd-resolved.service com:

sudo systemctl stop systemd-resolved.service
sudo systemctl disable systemd-resolved.service
    
por N0rbert 04.08.2017 / 14:40

2 respostas

1

Atualização 2 Eu escrevi um simples despachante simples e direto e coloquei /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 [ "" = "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 [ "" = "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

Pode ser ativado com

sudo chown root:root /etc/NetworkManager/dispatcher.d/03vpn
sudo chmod 755 /etc/NetworkManager/dispatcher.d/03vpn

Eu testei com conexões OpenVPN e PPTP.

Também encontrei outros testes de vazamento de DNS: Whoer e WhatLeaks .

    
por N0rbert 05.08.2017 / 01:28
2

Este é um bug bem conhecido do NetworkManager, especificamente é # 1211110 . Ele volta para o Ubuntu 13.04 até 16.04 e para um pior ponto para o Ubuntu 16.10.

  

Parece que não tenho problema de fuga de DNS com a minha configuração atual.

Em seguida, considere-se bastante sortudo. :) A maioria dos usuários (inclusive eu) sofreu vazamentos severos de DNS e tentou abordagens diferentes para resolvê-los.

Aqui estão algumas abordagens sugeridas no relatório de erros (resumidas):

Comentário # 22 por Mac Bassett

  

Faça uma cópia de backup desse arquivo NetworkManager:

sudo cp /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper.orig
     

Adicione as seguintes 3 linhas ao arquivo.

#!/bin/bash
/etc/openvpn/update-resolv-conf $@
/usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper.orig $@
     

Então:

sudo chmod +x /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper
     

Advertência: você precisa executar o seguinte comando depois de desconectar a VPN.

sudo script_type=down dev=tun0 /etc/openvpn/update-resolv-conf

Comentários # 27 e # 29 por mim mesmo

  

Edite sua conexão VPN (via NM) e configure o DNS estático, por exemplo, usando os servidores do Google:

8.8.8.8, 8.8.4.4
     

Dessa forma, a solicitação de DNS é enviada por meio de um IP externo e, portanto, é roteada usando a VPN.

     

Em seguida, configure também sua conexão sem fio para usar esses servidores DNS estáticos.

Comentário # 31 por DaveHenson

  

Execute openvpn pela linha de comando.

(... algumas outras soluções complicadas que não vou discutir aqui ...)

Comentário # 81 por Çağatay Yüksel

  

Remover este arquivo de configuração:

sudo rm -rf /etc/resolv.conf
     

Adicione esta linha à seção [main] de /etc/NetworkManager/NetworkManager.conf :

dns=dnsmasq
     

Se você tiver o pacote dnsmasq instalado, certifique-se de que o serviço dnsmasq não esteja ativado, caso contrário, isso não funcionará. Você também deve reiniciar.

A solução real

Este bug foi corrigido no Ubuntu 17.04 . Em vez de tentar patches aleatórios no seu sistema, provavelmente é melhor atualizá-lo. :)

    
por Andrea Lazzarotto 04.08.2017 / 22:35