Blog

DNSs separados al conectar a VPN con systemd-resolved

DNSs separados al conectar a VPN con systemd-resolved

Al conectarme a una VPN he observado que todas las queries DNS se mandaban a servidores internos de ésta. Por privacidad prefiero mantener mis DNS habituales, empleando los de la VPN sólo para sus dominios. Para ello he utilizado systemd-resolved.

Uso NetworkManager, y al conectar a la VPN se sobreescribe el fichero /etc/resolv.conf. En la wiki de Arch he encontrado este artículo, en el que se explica cómo cambiar a systemd-resolved. Básicamente:

sudo systemctl start systemd-resolved

j@bt ~ % sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf                                                                                                                                     [0]
[sudo] password for j: 
j@bt ~ % ls -l /etc/resolv.conf                                                                                                                                                                                 [0]
lrwxrwxrwx 1 root root 37 Sep 22 18:36 /etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf

Con resolvectl podemos ver los DNSs configurados:

j@bt ~ % resolvectl                                                                                                                                                                                             [2]
Global
           Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
    resolv.conf mode: stub
  Current DNS Server: 192.168.1.1
         DNS Servers: 192.168.1.1
Fallback DNS Servers: 1.1.1.1 9.9.9.10 8.8.8.8 2606:4700:4700::1111 2620:fe::10 2001:4860:4860::8888
          DNS Domain: hitronhub.home

Link 2 (wlan0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 3 (br-91ceae38b5f3)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 4 (docker0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 5 (enp7s0u2u4)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1
        DNS Domain: hitronhub.home

Link 18 (vpn0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

…y al conectar a la VPN, cambia para la interfaz vpn0:

Link 18 (vpn0)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.12.82
       DNS Servers: 10.0.12.82 10.0.12.83
        DNS Domain: ibmutua.inet

Activamos los logs de depuración

j@bt ~ % sudo resolvectl log-level debug 
j@bt ~ % journalctl -u systemd-resolved -f

Al conectar a la VPN podemos observar cómo se actualizan los DNS y dominios (en mi caso ibmutua.inet):

Sep 22 18:50:12 bt systemd-resolved[507906]: vpn0: Bus client reset search domain list.
Sep 22 18:50:12 bt systemd-resolved[507906]: vpn0: Bus client reset DNS server list.

Hagamos una petición a un dominio fuera de la VPN y otro interno:




Sep 22 18:46:32 bt systemd-resolved[507906]: Looking up RR for danbooru.donmai.us IN AAAA.
Sep 22 18:46:32 bt systemd-resolved[507906]: Cache miss for danbooru.donmai.us IN AAAA
Sep 22 18:46:32 bt systemd-resolved[507906]: Firing regular transaction 63823 for <danbooru.donmai.us IN AAAA> scope dns on */* (validate=yes).
Sep 22 18:46:32 bt systemd-resolved[507906]: Using feature level UDP for transaction 63823.
Sep 22 18:46:32 bt systemd-resolved[507906]: Using DNS server 192.168.1.1 for transaction 63823.


Sep 22 18:48:48 bt systemd-resolved[507906]: Looking up RR for proxy3.ibmutua.inet IN A.
Sep 22 18:48:48 bt systemd-resolved[507906]: Cache miss for proxy3.ibmutua.inet IN A
Sep 22 18:48:48 bt systemd-resolved[507906]: Firing regular transaction 53391 for <proxy3.ibmutua.inet IN A> scope dns on vpn0/* (validate=yes).
Sep 22 18:48:48 bt systemd-resolved[507906]: Using feature level UDP+EDNS0 for transaction 53391.
Sep 22 18:48:48 bt systemd-resolved[507906]: Using DNS server 10.0.12.82 for transaction 53391.


Para danbooru.donmai.us se ha utilizado el DNS 192.168.1.1 (DNS por defecto, integrado en el router de mi operadora). Para proxy3.ibmutua.inet, se ha dirigido a 10.0.12.82.

Para dejar activado systemd-resolved al inicio:

j@bt ~ % sudo systemctl enable systemd-resolved

y no olvidemos desactivar la depuración en los logs para no llenar el disco:

j@bt ~ % sudo resolvectl log-level info