Как отключить systemd-resolved и заменить на что-то вменяемое в Ubuntu 18?
Я решил, что systemd-resolved - это безвозвратно сломанный мусор, и я хотел бы заменить его. У меня есть собственный локальный DNS-сервер по адресу 192.168.1.2. Я также хотел бы подключиться к VPN с NetExtender, который дает мне DNS-сервер для домена.local. Я хотел бы, чтобы эти две вещи работали вместе, что я могу сделать?
3 ответа
Ответ Ганнета неверен. Если вы хотите использовать простой ifupdown, как в более ранних версиях, без netplan или NetworkManager (например, на сервере), с dhcp, вам нужно сделать следующее:
systemctl disable systemd-resolved.service
systemctl stop systemd-resolved.service
# check if resolv.conf is pointing to resolvconf
ls -la /etc/resolv.conf
# lrwxrwxrwx 1 root root 27 May 7 16:15 /etc/resolv.conf -> /run/resolvconf/resolv.conf
# if not, delete /etc/resolv.conf and symlink it like this:
rm /etc/resolv.conf
ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
# this will remove the resolved stub resolver entry from resolv.conf
resolvconf -d systemd-resolved
# fix dhclient scripts
chmod -x /etc/dhcp/dhclient-enter-hooks.d/resolved
chmod +x /etc/dhcp/dhclient-enter-hooks.d/resolvconf
# on my machine just chmod -x wasn't enough, I had to move the resolved script somewhere else
mv /etc/dhcp/dhclient-enter-hooks.d/resolved ~
# ifdown/ifup your interface to regenerate resolv.conf (or systemctl restart ifup@eth0)
ifdown eth0; ifup eth0
# check /etc/resolv.conf has the right settings
Вы всегда можете отключить системное разрешениеsystemctl disable systemd-resolved.service
команда. И запустить:sudo rm /etc/resolv.conf && sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
использовать /etc/resolv.conf
Конфиг, как это было ранее в предыдущих версиях Ubuntu.
Оба ответа могут привести к проблемам с VPN. Кроме того, если желательно сохранить NetworkManager, можно сделать следующее:
Отключите resolvconf, если он связан с resolvectl:
ls -lah $(which resolvconf)
Если resolveconf связан с resolvectl, как показано ниже:
/usr/local/bin/resolvconf -> /usr/bin/resolvectl
Нам нужно отвязать его:
sudo unlink /usr/local/bin/resolvconf
Теперь установите resolvconf, потому что его использует большинство VPN:
sudo apt-get install resolvconf
установлен
dns=none
к
[main]
раздел в
/etc/NetworkManager/NetworkManager.conf
:
[main]
...
dns=none
Теперь у нас есть два варианта:
- Вручную установить DNS для всей системы
- Используйте resolvconf для настройки DNS:
Вручную установить DNS для всей системы
Поместите нужные DNS-серверы в качестве сервера имен в
/etc/resolv.conf
:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
Используйте resolvconf для настройки DNS
Это предпочтительный способ, если вы используете VPN с определенными DNS-серверами, настроенными через него.
sudo ln -sfn /run/resolvconf/resolv.conf /etc/resolv.conf