Rimuovere un server DNS da systemd risolto?

Aug 26 2020

Mi sono connesso a una openconnectcosa simile a una VPN e ha aggiunto un server DNS (e un dominio DNS) al mio systemd-resolvede non funzionano, quindi l'utilizzo di Internet è rallentato, perché ogni nuova richiesta deve attendere il timeout per il server DNS rotto, prima di andare al server DNS funzionante, originariamente configurato ( presumo ).

Come posso rimuovere quel server DNS da systemd-resolved?

$ systemd-resolve --status
Global
         DNS Servers: 10.127.201.221
                      10.63.101.221
                      172.25.2.253
          DNS Domain: blah1.example
                      example.com
          DNSSEC NTA: 10.in-addr.arpa
          ...

Ubuntu Linux 18.04. system v237

Risposte

111--- Aug 26 2020 at 19:43

Systemd < v239

Il comando che stai cercando dovrebbe essere:

systemd-resolve --interface=tun0 --revert

Dove tun0sarebbe l'interfaccia per rimuovere le impostazioni DNS da:

--revert
       Revert the per-interface DNS configuration. This option must be combined with
       --interface= to indicate the network interface the DNS configuration shall be reverted
       on. If the DNS configuration is reverted all per-interface DNS setting are reset to
       their defaults, undoing all effects of --set-dns=, --set-domain=, --set-llmnr=,
       --set-mdns=, --set-dnssec=, --set-nta=. Note that when a network interface disappears
       all configuration is lost automatically, an explicit reverting is not necessary in
       that case.

Sembra che questi strumenti siano cambiati in systemd v239 (che in realtà era sulla mia macchina di prova Bionic).

Systemd >= v239

Il comando precedente dovrebbe essere ancora disponibile nella versione più recente di systemd, in caso contrario provare resolvectlil comando revert di . Avrai bisogno del nome dell'interfaccia del collegamento che desideri reimpostare. Ex:

sudo resolvectl revert tun0

Dal resolvectlmanuale:

ripristinare LINK

Ripristina la configurazione DNS per interfaccia. Se la configurazione DNS viene ripristinata, tutte le impostazioni DNS per interfaccia vengono ripristinate ai valori predefiniti, annullando tutti gli effetti di dns, domain, llmnr, mdns, dnssec, dnsovertls, nta. Si noti che quando un'interfaccia di rete scompare tutta la configurazione viene persa automaticamente, in tal caso non è necessario un ripristino esplicito.

Poiché systemd-resolved associa i server DNS alle interfacce di rete, questo dovrebbe eliminare i server DNS di cui ha appreso da quell'interfaccia.

Note risolte da Systemd

Questo comportamento di systemd-resolvedè menzionato anche in quella voce manuale, estratto pertinente:

Altri nomi con più etichette vengono instradati a tutte le interfacce locali che dispongono di un server DNS configurato, oltre al server DNS configurato a livello globale, se presente.

Credo che tu voglia dire a systemd-resolved di dimenticare i server DNS per la tua interfaccia tunnel, resolvectl revertsembra il modo per farlo.