Почему /etc/resolv.conf не обновляется при смене DNS?

Я пытался изменить свой DNS на 8.8.8.88.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 снова.

Другие вопросы по тегам