Почему /etc/resolv.conf не обновляется при смене DNS?
Я пытался изменить свой DNS на 8.8.8.8
8.8.4.4
но, кажется, не в состоянии это сделать.
В /etc/resolv.conf
я имею
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
В /etc/resolvconf/resolv.conf.d/base
я добавил
nameserver 8.8.8.8
nameserver 8.8.4.4
и перезагрузил с sudo resolvconf -u
но ничего не меняется в /etc/resolv.conf
Если я что-то напишу в /etc/resolvconf/resolv.conf.d/base
например добавление ameserver 8.8.8.8
и перезагрузка cat /etc/resolv.conf
сейчас показывает.
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
ameserver 8.8.8.8
Что я должен сделать, чтобы изменить DNS и как я могу проверить, сработало ли это?
2 ответа
Чтобы подробнее остановиться на другом ответе здесь и устранить некоторые недоразумения, если вы используете Network Manager для управления своими соединениями, он также включает небольшую версию dnsmasq. Это адрес 127.* в вашем resolv.conf - IP-адресе localhost, к которому привязан dnsmasq.
Диспетчер сети, настроенный с DNS-серверами, сообщит dnsmasq, на какие DNS-серверы следует ретранслировать запросы.
Если вы установили 8.8.8.8 в качестве DNS-сервера в настройках Network Manager, dnsmasq будет перенаправлять все запросы, которые не кэшированы, на 8.8.8.8 для фактического разрешения, в то время как ваш компьютер отправляет запросы DNS напрямую в dnsmasq для обработки.
Я знаю, что это сбивает с толку, но вы не можете полагаться на resolv.conf, чтобы показать используемые DNS-серверы, когда вы используете Network Manager для управления соединениями.
Сначала отмените все, что мы сделали в комментариях.
Использование:
$ nmcli device
чтобы получить статус Сетевого менеджера:
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected myConnection
Так что мой интерфейс enp3s0
и мое имя подключения myConnection
,
Я могу проверить, какой DNS-сервер использует мое соединение:
$ nmcli -f IP4.DNS connection show myConnection
Для вас, я думаю, это покажет:
ipv4.dns: 127.0.0.1
Теперь давайте установим желаемую DNS-серверу:
nmcli connection modify myConnecion ipv4.dns "8.8.8.8, 8.8.4.4"
После перезагрузки соединения:
nmcli connection down myConnecion
nmcli connection up myConnecion
Тогда проверь /etc/resolv.conf
:
cat /etc/resolv.conf
Если это все еще говорит, что вы используете 127.0.0.1
в качестве вашего DNS-сервера существует высокая вероятность того, что вы используете "dnsmasq", чтобы убедиться, что запустите:
sudo ss -pln sport = 53
Вы должны получить dnsmasq
name как процесс, слушающий порт 53, так что все в порядке, и вы используете правильные DNS-имена, 127.0.0.1 - это просто слой между вами и серверами, которые вы установили.
Если вы хотите увидеть "8.8.8.8" в /etc/resolv.conf
тогда вы должны отключить "dnsmasq".
Откройте этот файл:
/etc/NetworkManager/NetworkManager.conf
+ Изменить dns=dnsmasq
в #dns=dnsmasq
,
В заключение:
sudo systemctl restart NetworkManager
Сейчас проверю /etc/resolv.conf
снова.