Ab Ubuntu 17.04 übernimmt systemd-resolved die Auflösung von DNS-Anfragen. Manchmal möchte man ein bißchen mehr vom lokalen DNS-Server. Vielleicht möchte man zum Beispiel alle auf .dev endenden Domains auf lokale Verzeichnisse umleiten (siehe dazu hier). Hier kommt man mit systemd-resolved nicht mehr weiter.
In Vorgänger-Versionen von Ubuntu konnte man noch dnsmasq nutzen, meist im Zusammenspiel mit dem NetworkManager. Dies wird nun verhindert, bzw. die Konfiguration ist so komplex, dass ich die systemd-Komponente lieber deaktiviere. Dazu muss man sowohl systemd-resolved, wie auch dnsmasq stoppen und deaktivieren. Die dnsmasq-Funktionalität wird danach vom NetworkManager angeboten. Damit das klappt muss der auch wieder die /etc/resolv.conf stellen. Hier ein bißchen Copy-Pasta:
sudo systemctl stop systemd-resolved.service sudo systemctl disable systemd-resolved.service sudo systemctl stop dnsmasq.service sudo systemctl disable dnsmasq.service sudo mv /etc/resolv.conf{,.bak} sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf echo -e "[main]\ndns=dnsmasq\n" | sudo tee /etc/NetworkManager/conf.d/enable-dnsmasq.conf sudo systemctl restart NetworkManager.service
Jetzt sollte man kurz prüfen, ob Domains weiterhin aufgelöst werden. Wenn ja, ist man wieder mit dem guten alten dnsmasq unterwegs. Nur der Vollständigkeit halber hier die Befehle, um das ganze wieder rückgängig zu machen.
sudo rm /etc/NetworkManager/conf.d/enable-dnsmasq.conf sudo rm /etc/resolv.conf sudo mv /etc/resolv.conf{.bak,} sudo systemctl enable systemd-resolved.service sudo systemctl start systemd-resolved.service sudo systemctl enable dnsmasq.service sudo systemctl start dnsmasq.service sudo systemctl restart NetworkManager.service
Jetzt kann man sich für lokale Entwicklung von PHP-Projekten (Symfony, Drupal, WordPress, Laravel, Magento, u.v.m) sehr einfach Laravel Valet installieren. Wie dies geht habe ich im folgenden Artikel beschrieben.