13

Я не могу сохранить адрес сервера имен, который я установил через /etc/resolv.conf . Каждый раз, когда я устанавливаю значение, сетевой менеджер перезаписывает его с помощью шлюза по умолчанию при перезагрузке.

Как правильно это настроить?

Я бы предпочел другой способ, чем изменить имя сервера в маршрутизаторе.

6 ответов6

14

Это зависит. Пожалуйста, прочитайте до конца.

Если у вас не установлен пакет resolvconf , то это легко: после его изменения выполните команду

 sudo chattr +i /etc/resolv.conf

Команда изменяет атрибуты файла, делая его immutable (опция +i).

Однако, если у вас установлен пакет resolvconf, файл /etc/resolv.conf может быть преобразован в символическую ссылку,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

который является файлом в виртуальной файловой системе, воплощением непостоянной версии. Самое смешное, что вы, возможно, не знаете, что у вас установлен resolvconf, потому что последние версии Debian-подобных ОС поставляются с предустановленным. Вы можете установить, установил ли это ваш дистрибутив, выполнив команду:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Даже самое главное, вы можете установить, был ли ваш /etc/resolv.conf преобразован в ссылку, с помощью команды (файл /etc/resolv.conf) выше. Если ответ - ASCII text , используйте chattr , иначе ...

Если вы используете статический IP-адрес, проще всего добавить следующую строку (или что-то подобное)

 dns-nameservers 8.8.4.4 8.8.8.8

разделу, определяющему свойства вашего статического интерфейса в /etc /network /interfaces.

Если вы используете ноутбук, который постоянно подключен к разным сетям, вы можете последовать прекрасному предложению LawrenceC . Но если в вашей системе есть resolvconf , правильный (и самый простой) способ предоставить фиксированный набор DNS - это использовать файлы в /etc/resolvconf/resolv.conf.d . В частности, используются следующие файлы (см . Страницу Стефана Грабера):

база: используется, когда никакие другие данные не могут быть найдены

head: Используется для заголовка resolv.conf, может использоваться для обеспечения того, чтобы DNS-сервер всегда был первым в списке

tail: любая запись в tail добавляется в конце результирующего resolv.conf.

Итак, поместите ваши любимые сервера имен в голову следующим образом

  nameserver 8.8.8.8

и вы сделали.

8

Добавьте аналогичную строку в /etc/dhcp/dhclient.conf используя корневой терминал:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Это заставляет dhclient , программу, которая выдает запрос DHCP и вносит изменения в соответствии с тем, что было сказано в ответе, чтобы заменить информацию, полученную с сервера DHCP, на приведенную выше, прежде чем вносить изменения.

Выше приведены два сервера OpenNIC DNS. Замените по мере необходимости для любых серверов, которые вы хотите использовать.

Так как это происходит всякий раз, когда вы получаете информацию о конфигурации от DHCP, используйте dhclient -v eth0 или любой другой интерфейс, чтобы обновить его и увидеть изменения.

3

@Rik, как уже упоминалось, говорит о том, что причина замены DNS при перезагрузке кроется в сетевом менеджере / утилите, которые установлены так. В Linux Mint, как показано на снимке экрана, мой метод IPv4 был установлен только на автоматические (DHCP) адреса. Затем вы можете ввести правильные настройки в /etc/resolv.conf или в разделе DNS-серверов. Я помню, что в Ubuntu 13.04 мои серверы имен менялись несколько раз в течение длительного периода времени, но после того, как я действительно перешел и отредактировал их в графическом интерфейсе, с этого момента все казалось стабильным.

3

Была такая же проблема, но я использую статический IP-адрес. Исправление было просто добавление DNS в /etc /network /interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]
1

Если вы использовали wicd, щелкните правой кнопкой мыши значок и выберите информацию о соединении. Когда откроется окно, нажмите на свойства того, к которому вы подключены.

Проверьте использование статического DNS и в строке, которая говорит, что DNS-сервер 1, введите IP-адрес для Google DNS 8.8.8.8 и в строке для DNS-сервера 2 введите 8.8.4.4 затем нажмите "ОК".

Если вы получаете ошибки по умолчанию, вы можете связаться с вашим Интернет-провайдером и сообщить об этом им. Обычно они назначают DNS-серверы вашему модему, когда вы подключаетесь к ним.

0

Взломать ваш путь с помощью chattr +i или подобного - это быстрый обходной путь в лучшем случае, и его следует избегать всякий раз, когда это возможно (по крайней мере, в долгосрочной перспективе - как уже говорилось, это краткосрочный обходной путь, пока не найдется время реальное решение). Как уже указывалось, это работа для NetworkManager, который предлагает CLI, который мы можем использовать для этого:

# find which interface to adjust
nmcli device
# output looks like:
# DEVICE  TYPE      STATE      CONNECTION
# enp0s3  ethernet  connected  my-office
# lo      loopback  unmanaged  --
# From that, we need the CONNECTION.

# Now add our "search domains":
nmcli connection modify my-office ipv4.dns-search example1.com
nmcli con mod my-office +ipv4.dns-search example2.com

# And our name servers:
nmcli con modify my-office ipv4.dns 213.73.91.35
nmcli con modify my-office +ipv4.dns 87.118.100.175
# note the "+" in the second line: add another one,
# while the first line overwrites the existing entry.
# we could have done that with a single call:
nmcli con modify my-office ipv4.dns "213.73.91.35 87.118.100.175"

# OK, so now let's tell it to ignore updates from the DHCP server:
nmcli con modify my-office ipv4.ignore-auto-dns yes

# and apply the modifications to our running configuration
nmcli con up my-office

Если вы используете статический IP-адрес, вы также можете использовать решение из ответа kanelbolle.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .