Como posso impor diferentes servidores DNS quando conectado a uma VPN?

2

Eu tenho uma variedade de servidores VPN OpenVPN aos quais eu me conecto da minha máquina Ubuntu 17.04, todos os quais empurram servidores DNS usando o dhcp-option DNS A.B.C.D (que eu sei que é uma extensão do Windows, mas é assim que eles são empurrados). Os servidores DNS (para cada provedor) mudam raramente, então eu também posso inseri-los manualmente, se necessário.

Eu adiciono uma VPN usando seu arquivo de configuração .ovpn via Configurações de Rede do Gnome ("+" > "Importar do arquivo ..."), tornando-a disponível apenas para o usuário atual. Por outro lado, a conexão física é uma conexão Wi-Fi disponível para todos os usuários.

Os servidores DNS da VPN simplesmente não são usados pelo sistema. Se eu apenas aceitar a configuração conforme indicado no arquivo, a VPN se conecta, mas os servidores DNS nem aparecem na saída de systemd-resolve --status . Se eu adicioná-los manualmente às configurações do IPv4, eles serão usados, mas não serão usados.

Por exemplo, antes de se conectar, a saída de systemd-resolve --status mostra isso no final:

Link 3 (wlp3s0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1

Link 2 (enp0s31f6)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

192.168.1.1 é meu roteador. Depois de se conectar à VPN, vejo esta entrada extra acima dos outros:

Link 9 (tun0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: A.B.C.D
                      E.F.G.G

A.B.C.D etc. representa o DNS do provedor de VPN. No entanto, confirmei através da inspeção de pacotes que, mesmo com essas novas entradas, as pesquisas de DNS são feitas via 192.168.1.1 , que usa apenas os servidores do meu provedor.

Para completar, ip route show dá:

$ ip route show
default via 10.7.7.1 dev tun0 proto static metric 50 
default via 192.168.1.1 dev wlp3s0 proto static metric 600 
10.7.7.0/24 dev tun0 proto kernel scope link src 10.7.7.182 metric 50 
I.J.K.L via 192.168.1.1 dev wlp3s0 proto static metric 600 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.193 metric 600 
192.168.1.1 dev wlp3s0 proto static scope link metric 600 

( I.J.K.L é o endereço da VPN.) Parece estranho que existam rotas padrão muito diferentes, mas acho que a métrica serve para resolver isso?

Qualquer que seja a causa, quero usar o DNS do provedor de VPN quando estiver conectado à VPN e não usá-los quando não estiver. Considerei tentar criar um segundo perfil do Network Manager para o meu ponto de acesso Wi-Fi com as entradas DNS do provedor, mas não é possível criar um segundo perfil (ou específico do usuário) para um ponto de acesso que o Network Manager já conhece. / p>

Coisas que eu prefiro evitar:

  • Modifique os arquivos .ovpn config. Eu tenho cerca de cem deles, e eles são atualizados regularmente pelos provedores de VPN.
  • Altere permanentemente os servidores DNS para a conexão de todo o sistema usada para Wi-Fi ou para o próprio roteador. Eu só quero usar os servidores DNS da VPN quando estou conectado a uma VPN.
  • Executar um comando manualmente toda vez que eu me conectar a uma VPN. Eu ou outro usuário poderia facilmente esquecer de fazer isso.
por detly 16.07.2017 / 10:57

0 respostas