сетевой менеджер: как остановить обновление нм /etc/resolv.conf

26

Я не хочу, чтобы сетевой менеджер добавил DNS-серверы, полученные от DHCP, к моему /etc/resolv.conf.

При настройке из GUI / Connections / IPV4 и выбора метода Automatic (только адрес) он все равно добавляет DNS-серверы, полученные через DHCP.

Можно ли сделать это для каждого соединения (конкретный ssid?)

user2913139
источник
Если вы выберете метод «Только автоматические (DHCP) адреса», то NetworkManager не будет или не должен изменять resolv.conf при активации этого соединения. Если NetworkManager фактически добавляет адреса в resolv.conf, несмотря на настройку «только адреса», то в NetworkManager есть ошибка, и вы должны сообщить об этой ошибке с помощью панели запуска. Чтобы остановить NetworkManager от изменения resolv.conf, вы должны выбрать «Только (DHCP) адреса» во всех конфигурациях подключения, которые становятся активными в вашей системе.
Jdthood
1
Вы можете использовать графический интерфейс в настройках IPv4 для соединения и выбрать «только адреса» в режиме, или сделать то, что он делает сам, отредактировав соответствующий файл соединения в / etc / NetworkManager / system-connections / и добавив ignore-auto -dns = истинная строка раздела [ipv4].
Саша Пачев

Ответы:

32

Один из способов запретить Network Manager добавлять dns-серверы в /etc/resolv.confфайл:

Сначала откройте файл conf nm /etc/NetworkManager/NetworkManager.conf:

sudo vim /etc/NetworkManager/NetworkManager.conf

И добавьте это в [main]раздел:

dns=none

Сохранить и выйти.

крит
источник
Основной раздел [main], а не[Main]
AB
/etc/resolv.confкак правило, символическая ссылка - вы уверены, что сделать его неизменным делает цель ссылки также неизменным?
Муру
5
Это не работает для меня в Debian Джесси
Дмитрий Коприва
5
Это не работает в Ubuntu 18.04
LuizAngioletti
1
Мне нужно было, чтобы sudo service network-manager restartизменения в файле .conf вступили в силу.
Крис Мур
3

Мой личный фаворит , чтобы использовать линию supersede domain-name-serversв /etc/dhcp/dhclient.conf. Независимо от того, что обеспечивает точка доступа DNS, ваша Ubuntu всегда будет использовать те DNS, указанные вdhclient.conf

Образец из моего файла

#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name-servers 208.67.220.220;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.fqdn, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;
Сергей Колодяжный
источник
создание строки, как описано (с использованием сервера 8.8.8.8), не работает в Ubuntu 18.04.
LuizAngioletti
3
@LuizAngioletti 18.04 использует другое приложение для управления сетями netplan. Этот ответ был написан для выпусков до 18.04. Я могу обновить его позже, хотя.
Сергей Колодяжный
2

/etc/resolv.confявляется символической ссылкой на /run/resolvconf/resolv.conf. NetworkManager не обновляет /etc/resolv.conf напрямую (только обновляет /run/resolvconf/resolv.conf). Так:

  • удалить символическую ссылку ( rm /etc/resolv.conf)
  • напишите свою собственную версию /etc/resolv.conf
Таха Джахангир
источник
1
Я знаю, что это форум по Ubuntu, но в то время как поиск в поиске Centos это был мой первый результат в Google, поэтому оставляю комментарии для будущих Centos Google. это не решило мою проблему на Centos. Похоже, сетевой менеджер centos напрямую работает с /etc/resolv.conf.
Томми
Это, конечно, не верно для Debian Stretch. Он удаляет ваш файл и заменяет его другой символической ссылкой. Очень надоедливый.
HörmannHH
Вот пример для (виртуализированной) Fedora 25 с использованием nmcli: /etc/sysconfig/network-scripts/ifcfg-ens3Мы видим, PEERDNS=yesчто означает (в данном случае, неверно) информацию DNS, полученную DHCP, и она заканчивается в /etc/resolv.conf. Я просто хочу 127.0.0.1 в качестве сервера имен. Запуск nmcli con mod ens3 ipf4.ignore-auto.dns yesрезультат в PEERDNS=noв файле конфигурации интерфейса. Однако /etc/resolv.confвсе еще имеет случайные namseserverзаписи, поэтому, если придется перезапустить соединение nmcli con down ens3; nmcli con up ens3. Смотрите также: certdepot.net/rhel7-configure-ipv4-addresses
Дэвид Тонхофер,
В Ubuntu 18.04 перезапуск «перезапуска менеджера сети службы» заставит NM перезаписать /etc/resolv.conf, даже если это жесткий файл, а не символическая ссылка.
LuizAngioletti
0

Что я сделал на Debian Stretch:

  • rm /etc/resolv.conf ### (символическая ссылка)
  • коснитесь /etc/resolv.conf
  • echo "nameserver xxxx" >> /etc/resolv.conf

Где «xxxx» - ваш предпочитаемый IP-адрес DNS-сервера, например, от OpenDNS, Google или Cloudflare.

Спасибо за идею Таха Джахангир! Я могу подтвердить, что ваше предложение сработало для моего дистрибутива Debian Stretch

Эммануэль Супермену15
источник