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

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

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

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

5 ответов

Решение

Один из способов остановить Network Manager от добавления DNS-серверов в /etc/resolv.conf Файл должен сделать это:

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

sudo vim /etc/NetworkManager/NetworkManager.conf

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

dns=none

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

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

  • удалить символическую ссылку (rm /etc/resolv.conf)
  • напишите свою собственную версию /etc/resolv.conf

Мой личный фаворит - использовать линию 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;

На всякий случай я сделал небольшой скрипт, чтобы сделать это автоматически (здесь с помощью Google DNS) для каждого Ethernet/беспроводного соединения:

      nmcli -g name,type connection  show  --active | awk -F: '/ethernet|wireless/ { print $1 }' | while read connection
do
  nmcli con mod "$connection" ipv6.ignore-auto-dns yes
  nmcli con mod "$connection" ipv4.ignore-auto-dns yes
  nmcli con mod "$connection" ipv4.dns "8.8.8.8 8.8.4.4"
  nmcli con down "$connection" && nmcli con up "$connection"
done

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

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

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

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

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