web-dev-qa-db-fra.com

Comment ajouter dnsmasq et garder systemd-resolu (18.04)

Je veux obtenir la résolution rapide de DNS avec Dnsmasq et garder le systemd par défaut résolu.

Vous cherchez un moyen élégant de le faire

9
cmak.fr

Je souhaitais obtenir une résolution rapide de DNS avec dnsmasq et conserver la configuration par défaut résolue par Systemd/NetworkManager pour une utilisation ultérieure. Oui, la mise en cache DNS massive de Dnsmasq peut améliorer la vitesse de navigation. Oui, l'objectif était de conserver la configuration DNS par défaut de 18.04

  1. Installez dnmasq
  2. Configurez-le (écoutez l'adresse et les serveurs DNS)
  3. Configurer NetWorkManager pour une adresse de serveur DNS manuelle
  4. Vérifier vérifier

1 - Avec Sudo

apt-get -y install dnsmasq

2 - Avec Sudo

tee -a /etc/dnsmasq.conf << ENDdm
interface=lo
bind-interfaces
listen-address=127.0.0.1
# DNS server from OpenDns. Use yours...
server=208.67.222.222
server=208.67.220.220
ENDdm

systemctl restart dnsmasq
systemctl enable dnsmasq

3 - Avec USER, configurez NetworkManager

# Get NM first active profile name
NetManProfile=$(nmcli -t  connection show --active | cut -f 01 -d ':')
# remove, if exists, current dns servers
nmcli con mod "$NetManProfile" ipv4.dns ""
# set 'manual' dns server
nmcli con mod "$NetManProfile" ipv4.ignore-auto-dns yes
# set dnsmasq as manually set dns server
nmcli con mod "$NetManProfile" ipv4.dns 127.0.0.1
# i also disabled ip6, do what u want
nmcli con mod "$NetManProfile" ipv6.method ignore
# reconnect to take effect
nmcli connection down "$NetManProfile"
nmcli connection up "$NetManProfile"

4 - vérifier vérifier

  • ecoute résolue par Systemd sur 127.0.0.53 comme par défaut
  • dnsmasq écoute le 127.0.0.1 comme défini dans/etc/dnsmasq
  • systemd-resol a pris 127.0.0.1 de NetworkManager
netstat -antup
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat       PID/Program name    
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1036/dnsmasq        
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      766/systemd-resolve
cat /run/systemd/resolve/resolv.conf 
nameserver 127.0.0.1
9
cmak.fr

J'ai essayé de trouver une solution raisonnable et il semble y avoir différentes approches.

Je voulais rester au maximum dans l'agencement de la distribution tout en respectant toutes les exigences de l'entreprise. Voici ce que j'ai collecté et testé pour travailler sur Ubuntu 18.04 et KDE Neon:

# Install required package and reconfigure service plans (i.e. disablesystemd-resolved, enable dnsmasq
Sudo apt-get install dnsmasq
Sudo systemctl disable systemd-resolved
Sudo systemctl stop systemd-resolved
Sudo systemctl enable dnsmasq

# These two lines should work on most environments, but .. :-) - so I kept them commented out for less experienced users
# Just add or change 'dns=dnsmasq' to your NetworkManager.conf to the section [main]
# and yes, the sed expression can be better :-)

#Sudo cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.backup
#Sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.backup |sed -e "s/^dns=.*//"| sed -e "s/\[main\]/\[main\]\ndns=dnsmasq/" >/etc/NetworkManager/NetworkManager.conf'

# Restart NetworkManager to make the change above applied
Sudo systemctl restart NetworkManager

# This removes the systemd resolv.conf link only if it has NetworkManager replacement :-)
ls /var/run/NetworkManager/resolv.conf && Sudo rm /etc/resolv.conf

# And add NetworkManager's resolv.conf available for the system resolver
Sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

(Veuillez noter que la seule différence générale avec les réponses ci-dessus est que NetworkManager gère automatiquement les attributions de serveur DNS Dnsmasq.

1
Venca B Spam

Ubuntu 18.10

IMHO, si vous allez exécuter Dnsmasq, vous devez assigner votre adresse IP de manière statique au lieu de l'obtenir à partir de DHCP. De cette façon, vous pouvez simplement désactiver tous les problèmes résolus par systemd.

  1. Sudo apt-get install dnsmasq

  2. Sudo systemctl désactiver la résolution système

  3. Sudo systemctl stop systemd-resolu

  4. Attribuez manuellement votre adresse IP, votre passerelle et l'adresse IP de votre ordinateur en tant que DNS.

  5. configurez /etc/dnsmasq.conf (vraiment ... RTFM -> man dnsmasq.conf)

  6. Sudo systemctl enable dnsmasq

  7. redémarrer
  8. Sudo systemctl status dnsmasq

  9. pointer dhcp sur votre serveur dhcp vers votre tout nouveau serveur dnsmasq (..si yumpto)

0
LiverWurst