Как resolve conf изменить

Прочтите это руководство, чтобы узнать, как внести постоянные изменения DNS в resolv.conf на Linux.

Прочтите это руководство, чтобы узнать, как внести постоянные изменения DNS в resolv.conf на Linux.

Согласно man resolv.conf, resolv.conf – это файл конфигурации резолвера.

Resolver – это набор процедур в библиотеке C, которые обеспечивают доступ к системе доменных имен Интернета (DNS).

Файл предназначен для чтения человеком и содержит список ключевых слов со значениями, которые предоставляют различные типы информации о резолвере.

Файл конфигурации считается надежным источником информации DNS (например, информация о битах AD DNSSEC будет возвращена из этого источника без изменений).

Если этот файл не существует, будет опрошен только сервер имен (nameserver) на локальном компьютере, а список search будет содержать имя локального домена, определенное по имени хоста.

Внесем постоянные изменения DNS в resolv.conf

Внесем постоянные изменения DNS в resolv.conf

Любые изменения, внесенные вручную в файл конфигурации /etc/resolv.conf, обязательно будут перезаписаны при изменениях в сети или перезагрузке системы.

Согласно комментариям, сделанным в файле, файл является динамическим. «DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN».

Итак, возьмем, к примеру, если вы хотите добавить DNS-сервер в свой Linux-сервер, вы обычно обновляете этот файл, указывая IP-адрес сервера имен, который должен запрашивать резолвер.

См. Приведенную ниже команду, которая обновляет файл resolv.conf общедоступным первичным DNS-сервером Google DNS, выполнив такую команду:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Использование фреймворка Resolvconf

Resolvconf – это платформа для обновления системной информации о серверах DNS.

Он настраивается как посредник между программами, которые предоставляют эту информацию (такими как ifup и ifdown, DHCP-клиенты, демон PPP и локальные серверы имен) и программами, которые используют эту информацию, такими как кэши DNS и библиотеки resolver).

В дистрибутивах Ubuntu/Debian вы можете установить resolvconf, выполнив команду ниже;

sudo apt install resolvconf

После установки фреймворк стартует и запускается при загрузке системы.

Затем отредактируйте файл конфигурации /etc/resolvconf/resolv.conf.d/base и введите настройки DNS.

Пример настройки:

sudo vim /etc/resolvconf/resolv.conf.d/base
domain itisgood.ru
nameserver 8.8.8.8
nameserver 8.8.4.4

Затем обновите файл /etc/resolv.conf, чтобы внести постоянные изменения в DNS:

sudo resolvconf -u

Обновление настроек DNS-сервера в dhclient.conf

Если вы используете DHCPd для автоматического назначения IP-адреса, отредактируйте файл /etc/dhcp/dhclient.conf и добавьте следующую строку;

supersede domain-name-servers IP1, IP2;

Замените IP1 и IP2 соответствующими IP-адресами DNS:

vim /etc/dhcp/dhclient.conf
supersede domain-name-servers 8.8.8.8, 8.8.4.4;

Сохраните файл и выйдите.

Теперь, если вы запустите dhclient, ваш /etc/resolv.conf будет обновлен с использованием серверов DNS, определенных в dhclient.conf.

Вы можете использовать опцию prepend вместо supersede, чтобы добавить дополнительные IP-адреса к IP-адресу по умолчанию, предоставленному интернет-провайдером.

Больше информации:

man dhclient.conf

Как уcтановить IP-адрес сервера имен в настройках вашего интерфейса.

Отредактируйте файл конфигурации сетевого интерфейса и добавьте адрес сервера имен.

В Ubuntu 18.04/20.04 вы должны обновить файл конфигурации Netplan, например:

sudo vim /etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
          wlp0s20f3:
                  dhcp4: no
                  addresses: [192.168.100.80/24]
                  gateway4: 192.168.100.1
                  nameservers:
                          addresses: [8.8.8.8]

Мы устанавили DNS на публичный адрес DNS-сервера Google, 8.8.8.8.

В вашем случае все может быть иначе.

Применим изменения:

sudo netplan apply

На Debian и <= Ubuntu 16.04;

I think the issue here is with NetworkManager that is populating your resolv.conf file.

To disable dns updates.

1- Open the conf file with an editor :

sudo vi /etc/NetworkManager/NetworkManager.conf

2- Add the above to [main] section :
dns=none

3- Restart NetworkManager :

sudo service network-manager restart

SINCE you last EDIT :

As I see here you are using NetworkManager.service :

A- If you are using dhcp for your interface, then check the DNS setup by your DHCP server :

cat /var/lib/NetworkManager/*.lease | grep 'domain-name-servers'

You can set directly your dns entries needed in this case and disabling DHCP from supplying them :

# Edit dhclient configuration file
vi /etc/dhcp/dhclient.conf
# Set the fixed your dns server entries
supersede domain-name-servers 84.200.69.80, 84.200.70.40;

B- It’s clear here that your /etc/resolv.conf is clearly managed by systemd-resolved service.

So you can disable this service or let it running and edit its configuration in /etc/systemd/resolved.conf, so to disable it :

1- First check the output of the current systemd-resolved.conf file & check systemd-resolved is running :

sudo cat /run/systemd/resolve/resolv.conf
sudo systemd-resolve status

2- Stop / Disable the service :

  sudo systemctl disable systemd-resolved.service
  sudo systemctl stop systemd-resolved.service

3- Set the DNS processing mode in NetworkManager so it will not be anymore managed by systemd-resolved nor NetworKService ( Edit /etc/NetworkManager/NetworkManager.conf
) :

  [main]
  dns=none

4- Destroy the symlink /etc/resolv.conf -> /run/systemd/resolve/resolv.conf :

sudo unlink /etc/resolv.conf

5- Restart NetworkManager :

sudo systemctl restart NetworkManager

6- Recreate resolv.conf file :

sudo touch /etc/resolv.conf
sudo chown root:root /etc/resolv.conf
sudo chmod 644 /etc/resolv.conf

7- Populate manually resolv.conf file :

echo 'nameserver 84.200.70.40
nameserver 84.200.69.80
nameserver 192.168.4.1 
nameserver 192.168.4.1
nameserver 192.168.1.1
nameserver 1.1.1.1' > /etc/resolv.conf

Итак, сегодня мы поговорим с вами о настройке DNS в Debian. Тем, кто «в теме», не потребуются объяснения, но для остальных пройдемся от малого. Что такое DNS? Это компьютерная распределенная система для получения информации о доменах. Она используется для получения IP-адреса той самой уютной ЖЖшки, или ВК. Нужна она прежде всего для человека, так как нам, как ни странно, будет проще запомнить адрес в буквенном формате, чем в числовом. Но это не единственный плюс.

Раньше сеть была гораздо меньше нынешней и на каждой машине находился файл hosts, его рассылали автоматически и «централизованно». Он отвечал за преобразование между доменными и IP-адресами, но сеть непрерывно росла, а данный метод уже явно не справлялся с поставленными задачами. Вот здесь и выходит на сцену механизм, способный делать все то же самое и в больших объемах — DNS. С основными определениями разобрались, теперь перейдем к сути статьи.

Сперва мы ознакомимся с файлом /etc/resolv.conf. Это — это основной файл настройки библиотеки распознавателя имен DNS. Распознаватель — это библиотека на языке , именно она обеспечивает доступ к DNS для программ в системе.

Его функции настроены на следующее:

  • На проверку записей в файле /etc/hosts или на нескольких серверах DNS;
  • На использование базы данных хостов NIS (Информационная служба сети);

В современных Linux-системах, которые используют systemd, локальные приложения получают доступ к DNS через демон systemresolved. По умолчанию эта служба имеет четыре различных режима и использует по умолчанию файл-заглушку. Его путь: /run/systemd/resolve/stub-resolv.conf.

В данном файле используется в качестве единственного DNSсервера заглушка — 127.0.0.53, которая перенаправляет обращения к локальному DNS серверу, а он, в свою очередь уже получает информацию от других серверов в интернете. Надеюсь, вы поняли суть.

К сожалению, из-за того, что /etc/resolv.conf не прямо управляется службой systemd-resolved, а иногда с помощью использования initscripts или NetworkManager, любые пользовательские изменения НЕ будут сохранены. С учетом всех сложностей, описанных выше, я хочу поделиться с вами информацией о том, как настроить DNS на Debian в этом злополучном файле /etc/resolv.conf.

Шаг 1. Содержимое /etc/resolv.conf

Чтобы это сделать мы откроем терминал и напишем команду:

cat /etc/resolv.conf

В нем мы видим имя сервера nameserver 192.168.1.1 и больше ничего. Это пока что, но мы к нему вернемся.

Шаг 2. Установка resolvconf

Обязательно обновим систему с помощью команды:

sudo apt update

После обновления устанавливаем resolvconf. Для этого пишем команду:

sudo apt install resolvconf

После установки система должна автоматически запустить службу resolvconf.service. Чтобы проверить так ли это вам надо будет использовать команду:

sudo systemctl status resolvconf.service

Здесь мы видим, что служба не запущена, но бывает, что триггер срабатывает автоматически. Так или иначе, нам надо запустить эту службу. Используем следующие команды:

sudo systemctl start resolvconf.service

sudo systemctl enable resolvconf.service

sudo systemctl status resolvconf.service

Как вы поняли, с помощью sudo systemctl start resolvconf.service и sudo systemctl enable resolvconf.service мы запускаем службу, а sudo systemctl status resolvconf.service отобразит состояние активности этой службы.

Шаг 3. Настройка DNS

Теперь откройте файл /etc/resolvconf/resolv.conf.d/head. Делается это с помощью команды:

sudo nano /etc/resolvconf/resolv.conf.d/head

Прекрасно, следующим шагом будет внесение данных в этот файл. Вписываем в него следующие строки так, как это показано на скриншоте:

nameserver 8.8.8.8
nameserver 8.8.4.4

Сохраняем изменения с помощью ctrl+o -> Enter -> ctrl+x. Теперь надо перезагрузить систему, чтобы изменения пришли в действие.

Шаг 4. Проверяем файл /etc/resolv.conf

После перезагрузки снова открываем терминал и пишем команду для запуска службы (это вторичная мера, у меня, например, триггер сработал автоматически):

sudo systemctl start resolvconf.service

Видим, что служба запущена. Переходим в наш конфигурационный файл, который был описан в самом начале статьи. Используем команду:

cat /etc/resolv.conf

На скриншоте отображены те самые данные, которые мы внесли в файл — nameserver 8.8.8.8 и nameserver 8.8.4.4 На этом все! Настройка DNS Debian завершена. Достаточно легко и просто, а главное, что все работает.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Red Hat Training

A Red Hat training course is available for RHEL 8

By default, NetworkManager on Red Hat Enterprise Linux (RHEL) 8 dynamically updates the /etc/resolv.conf file with the DNS settings from active NetworkManager connection profiles. However, you can disable this behavior and manually configure DNS settings in /etc/resolv.conf.

32.1. Disabling DNS processing in the NetworkManager configuration

By default, NetworkManager manages DNS settings in the /etc/resolv.conf file, and you can configure the order of DNS servers. Alternatively, you can disable DNS processing in NetworkManager if you prefer to manually configure DNS settings in /etc/resolv.conf.

Procedure

  1. As the root user, create the /etc/NetworkManager/conf.d/90-dns-none.conf file with the following content by using a text editor:

    [main]
    dns=none
  2. Reload the NetworkManager service:

    # systemctl reload NetworkManager

    After you reload the service, NetworkManager no longer updates the /etc/resolv.conf file. However, the last contents of the file are preserved.

  3. Optionally, remove the Generated by NetworkManager comment from /etc/resolv.conf to avoid confusion.

Verification steps

  1. Edit the /etc/resolv.conf file and manually update the configuration.
  2. Reload the NetworkManager service:

    # systemctl reload NetworkManager
  3. Display the /etc/resolv.conf file:

    # cat /etc/resolv.conf

    If you successfully disabled DNS processing, NetworkManager did not override the manually configured settings.

32.2. Replacing /etc/resolv.conf with a symbolic link to manually configure DNS settings

By default, NetworkManager manages DNS settings in the /etc/resolv.conf file, and you can configure the order of DNS servers. Alternatively, you can disable DNS processing in NetworkManager if you prefer to manually configure DNS settings in /etc/resolv.conf. For example, NetworkManager does not automatically update the DNS configuration if /etc/resolv.conf is a symbolic link.

Prerequisites

  • The NetworkManager rc-manager configuration option is not set to file. To verify, use the NetworkManager --print-config command.

Procedure

  1. Create a file, such as /etc/resolv.conf.manually-configured, and add the DNS configuration for your environment to it. Use the same parameters and syntax as in the original /etc/resolv.conf.
  2. Remove the /etc/resolv.conf file:

    # rm /etc/resolv.conf
  3. Create a symbolic link named /etc/resolv.conf that refers to /etc/resolv.conf.manually-configured:

    # ln -s /etc/resolv.conf.manually-configured /etc/resolv.conf

Стало достаточно традиционным для Linux запускать небольшой локальный DNS-сервер, который ускоряет работу, кешируя ответы на повторяющиеся DNS-запросы. В этом случае в общесистемный /etc/resolv.conf помещается директива nameserver 127.0.0.1, а ip-адреса внешних DNS-серверов переносятся в настройки локального.

При изменении сетевой конфигурации, запуске и остановке процессов, некоторым программам необходимо динамически изменять файл resolv.conf. При одновременном доступе программы мешают друг другу и сохраняют неверную информацию в файл. Утилита resolvconf действует как посредник между программами, которые предоставляют информацию о сервере имен, и программами, которые используют информацию о сервере имен.

При этом файл resolv.conf заменяется символической ссылкой на /run/resolvconf/resolv.conf и программы используют динамически сгенерированный файл. В системе без службы resolvconf.service файл resolv.conf поддерживается вручную или набором скриптов. И эти скрипты могут мешать друг другу при попытках одновременного доступа к файлу.

Всё работало хорошо, пока не появились NetworkManager и Systemd. Система инициализации Systemd имеет свой собственный резолвер systemd-resolved, запущенный по умолчанию и требующий отдельной настройки. А NetworkManager пытается дружить со всеми — с resolvconf, с Systemd, с наиболее распространёнными DNS-резолверами.

Всё это привело к тому, что теперь в одной системе порт 53 может слушать несколько разных резолверов, причём для избежания конфликтов NetworkManager и systemd-resolved используют вместо 127.0.0.1 другие ip-адреса в loopback-сети:

  • 127.0.0.1dnsmasq или unbound с настройками по умолчанию
  • 127.0.1.1dnsmasq или unbound, запущенный NetworkManager
  • 127.0.0.53systemd-resolved, запущенный по умолчанию

Настройка службы systemd-resolved

В Ubuntu Server эта служба уже установлена и запущена сразу после установки операционной системы. Но если это не так, установить ее несложно:

# apt install systemd-resolved

Следующим шагом будет правка файла /etc/nsswitch.conf — находим строку, которая начинается с hosts:

# nano /etc/nsswitch.conf
passwd:         compat systemd
group:          compat systemd
shadow:         compat
gshadow:        files

hosts:          files resolve dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Эта строка отвечает за последовательность обращений приложения к системным компонентам с целью резолвинга доменного имени. В данном случае сначала программа заглянет в файл /etc/hosts, затем запросит демона systemd-resolved, а потом — к DNS серверам.

Осталось сообщить systemd-resolved ip-адреса DNS-серверов, к которым следует обращаться для резолвинга:

# nano /etc/systemd/resolved.conf
[Resolve]
# сервера DNS от Cloudflare
DNS=1.1.1.1 1.0.0.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

Для целей совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS-серверам напрямую, получая их ip-адреса из /etc/resolv.conf, следует создать символическую ссылку. Обычно этого не требуется, ссылка уже существует после установки systemd-resolved:

# ln -svi /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

В файле /run/systemd/resolve/stub-resolv.conf указан один-единственный сервер 127.0.0.53:

$ cat /run/systemd/resolve/stub-resolv.conf
nameserver 127.0.0.53
option edns0

Кроме того, можно создать символическую ссылку на /run/systemd/resolve/resolv.conf. Этот файл содержит DNS-сервера, полученные от DHCP-сервера и из файла конфигурации /etc/systemd/resolved.conf. В этом случае локальный кеширующий сервер не используется, что замедлит резолвинг.

# ln -svi /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ cat /run/systemd/resolve/resolv.conf
nameserver 1.1.1.1 # из файла конфигурации /etc/systemd/resolved.conf
nameserver 1.0.0.1 # из файла конфигурации /etc/systemd/resolved.conf
nameserver 8.8.8.8 # этот DNS-сервер получен от DHCP-сервера сети
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.4.4 # этот DNS-сервер получен от DHCP-сервера сети

Как видите, у меня DNS-серверов получилось слишком много, так что последняя запись может быть проигнорирована. Все готово, остается только разрешить запуск службы при загрузке системы, если это еще не было сделано:

# systemdctl enable systemd-resolved
# reboot

Настройка службы resolvconf.service

Служба предоставляет остальным программам централизованный интерфейс для добавления и удаления записей в /etc/resolv.conf при изменении сетевой конфигурации, запуске и остановке процессов и т.д.

# apt install resolvconf

После установки /etc/resolv.conf будет представлять из себя ссылку на /run/resolvconf/resolv.conf.

$ cat /run/resolvconf/resolv.conf
nameserver 127.0.0.53
option edns0

При этом исходный файл /etc/resolv.conf (который на самом деле ссылка на /run/systemd/resolve/resolv.conf) будет сохранен как original в директории /etc/resolvconf/resolv.conf.d/ (чтобы восстановить его при удалении службы resolvconf.service). В этой же директории есть есть еще три файла — base, head и tail — которые позволяют вручную добавить записи в динамически формируемый /run/resolvconf/resolv.conf.

/etc/resolvconf/resolv.conf.d/base
    File  containing  basic  resolver  information.  The lines in this 
    file are included in the resolver configuration file even when no
    interfaces are configured.

/etc/resolvconf/resolv.conf.d/head
    File to be prepended to the dynamically generated resolver 
    configuration file.  Normally this is just a comment line.

/etc/resolvconf/resolv.conf.d/tail
    File to be appended to the dynamically generated resolver 
    configuration file.  To append nothing, make this  an  empty  
    file.   This file is a good place to put a resolver options line 
    if one is needed, e.g. options inet6

Теперь добавим пару записей в файл tail (сервера OpenDNS):

# nano /etc/resolvconf/resolv.conf.d/tail
# сервера DNS от OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Перезагрузим службу и посмотрим сформированный /run/resolvconf/resolv.conf:

# systemctl restart resolvconf.service
$ cat /run/resolvconf/resolv.conf
nameserver 127.0.0.53
# сервера DNS от OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Первая запись — это резолвер systemd-resolved, а две другие записи были добавлены в конец resolv.conf из файла tail. Благодаря тому, что первая запись это 127.0.0.53 — резолвинг будет работать быстро, потому что systemd-resolved кеширует ответы DNS-серверов.

$ nslookup ya.ru
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Но если мы остановим службу systemd-resolved, резолвинг все равно будет работать, используя сервера 208.67.222.222 и 208.67.220.220 — хотя и гораздо медленнее.

# systemctl stop systemd-resolved.service
# systemctl disable systemd-resolved.service
# reboot
$ cat /etc/resolv.conf
# сервера DNS от OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
$ nslookup ya.ru
Server:     208.67.222.222
Address:    208.67.222.222#53

Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Используем только resolv.conf

Так делать не рекомендуется, потому что резолвинг будет работать медленно, но рассмотрим и этот вариант для полноты картины. Первым делом изменим имя файла /etc/resolv.conf на /etc/resolv.conf.back, а потом создадим свой resolv.conf:

# mv /etc/resolv.conf /etc/resolv.conf.back
# nano /etc/resolv.conf
# сервера DNS от Yandex
nameserver 77.88.8.8
nameserver 77.88.8.1

Для Ubuntu Desktop запретим вездесущему NetworkManager вмешиваться в процесс распознавания доменных имен:

# nano /etc/NetworkManager/conf.d/dns.conf
[main]
dns=no
rc-manager=unmanaged

Остановим службы resolvconf.service и systemd-resolved.service:

# systemctl stop resolvconf.service
# systemctl disable resolvconf.service
# systemctl stop systemd-resolved.service
# systemctl disable systemd-resolved.service
# reboot

Проверим, как теперь работает распознавание доменных имен:

$ nslookup ya.ru
Server:     77.88.8.8
Address:    77.88.8.8#53

Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Поиск:
Linux • Ubuntu • Кеширование • Конфигурация • Настройка • Сервер • Установка • DNS • nslookup • resolv.conf

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Файл настроек /etc/resolv.conf содержит информацию, которая позволяет компьютеру преобразовывать буквенно-цифровые доменные имена в цифровые IP адреса.

При использовании DHCP, dhclient обычно перезаписывает resolv.conf информацией полученной от DHCP сервера.

Как редактировать файл «/etc/resolv.conf»?

Используйте текстовые редакторы, такие как vi или gedit, в Linux:

# vi /etc/resolv.conf

В /etc/resolv.conf настраиваются три основные опции (директивы):

nameserver # IP адрес DNS сервера
domain # Доменное Имя локального хоста
search # Какие Доменные Имена искать

Директива «nameserver»

Опция nameserver указывает на IP адрес DNS сервера.

nameserver <IP адрес>

Это может быть Ваш личный DNS сервер, какой-либо публичный DNS сервер либо DNS сервер Вашего интернет провайдера.

Замечание: Вы можете указать максимум 3 DNS сервера.

Пример:

nameserver 192.168.0.100
nameserver 8.8.8.8
nameserver 8.8.4.4

Директива «domain»

Локальное доменное имя хоста.

domain <локальное доменное имя>

Пример:

domain domain.com
nameserver 192.168.0.100
nameserver 8.8.4.4
Как работает директива «domain» в файле «resolv.conf»?

Вы можете использовать директиву domain для преобразования коротких доменных имен. В качестве примера, предположим, что в домене есть компьютер с именем test.

Таким образом, если в файл /etc/resolv.conf поместить следующую строку:

domain example.com

Тогда, Ваш компьютер будет пытаться преобразовать test, как доменное имя test.example.com.

Директива «search»

Задает список поиска для имен хостов. Список поиска обычно определяется по имени локального домена. Это можно изменить, перечислив список доменов для поиска в этой директиве.

search <список поиска>

Пример:

search example.com company.net
nameserver 192.168.0.100
nameserver 8.8.8.8
Как работает директива «search» в файле «resolv.conf»?

Вам необходимо использовать директиву search для преобразования коротких доменных имен. В качестве примера, предположим, что в домене есть компьютер с именем test.

Таким образом, если в файл /etc/resolv.conf поместить следующие строки:

search example.com company.net

Тогда, Ваш компьютер будет пытаться преобразовать test, как доменное имя test.example.com, а затем как test.company.net. В качестве IP адреса будет возвращено первое успешное преобразование.


Post Views:
2 587

Translation(s): 한국어

Ordinarily, the resolv.conf(5) file is managed dynamically by various network service daemons. This is the default, and is intended for laptops and other highly mobile systems which may connect to different networks. It also works well for many desktop and server systems, so long as the network infrastructure is perfect.

For some systems, on some networks, the system administrator may wish to configure /etc/resolv.conf by hand. This leads to a conflict between the administrator’s changes, and the dynamic changes performed by the network service daemons.

If you edit resolv.conf by hand, and need to stop daemons from overwriting your changes, this page documents some of your options.

Configuring openresolv or resolvconf

Debian provides two packages, each of which contains a program named resolvconf, which may be used to control (or outright prevent) the alteration of the /etc/resolv.conf file by various networking programs. These packages are openresolv and resolvconf. They conflict with each other, because they literally both provide the same program, so you have to pick at most one of them.

These packages include various configuration files for other packages (such as isc-dhcp-client). For example, resolvconf includes a file which modifies the make_resolv_conf shell function used by dhclient-script(8).

If openresolv is installed, you can tell it to do nothing whenever some daemon tries to modify resolv.conf, by putting resolvconf=NO in the /etc/resolvconf.conf file. (Note: this is not the /etc/resolv.conf file!)

If resolvconf is installed, and if you’re using ifupdown to configure your interface(s), you can use dns-nameserver entries in the appropriate stanza(s) in /etc/network/interfaces:

 iface eth0 inet static
    address 192.168.1.3
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameserver 192.168.1.254
    dns-nameserver 8.8.8.8
    dns-search foo.org bar.com

Configuring dhclient

The most common daemon which overwrites resolv.conf is dhclient(8) (from isc-dhcp-client). In many cases, simply stopping this one daemon from touching the file will suffice.

Stop dhclient from modifying /etc/resolv.conf

Another approach makes use of dhclient-script’s hook scripts. According to dhclient-script(8):

  • When it starts, the client script first defines a shell function, make_resolv_conf , which is later used to create the /etc/resolv.conf file. To override the default behaviour, redefine this function in the enter hook script.

Therefore, we can stop dhclient from overwriting resolv.conf by doing the following:

echo 'make_resolv_conf() { :; }' > /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
chmod 755 /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone

The execute bit is required because dhclient-script uses run-parts(8) to decide which files to read. For that same reason, the filename must not contain anything but letters, digits, underscores and hyphens.

Modifying /etc/dhcp/dhclient.conf

The /etc/dhcp/dhclient.conf file can be populated with directives that will override the options sent by the DHCP server. For example, these directives will override the domain, search, and nameserver parameters that are placed into /etc/resolv.conf:

supersede domain-name "example.com";
supersede domain-search "example.com";
supersede domain-name-servers 127.0.0.1;

Another option is to remove «domain-name, domain-name-servers, domain-search» from the request line. However, this only works on some networks, and not on others. If the DHCP server sends unsolicited domain-name-servers (et al.) responses, dhclient will still heed them, and will still overwrite the resolv.conf file.

Making /etc/resolv.conf immutable

This approach will render /etc/resolv.conf immutable so that it cannot be changed, regardless of what packages are installed or what tries to modify it.

rm -f /etc/resolv.conf
editor /etc/resolv.conf
chattr +i /etc/resolv.conf

Obviously, you will need to put the appropriate content into the file before setting the immutable bit. Any time you wish to change the file, you will have to remove the bit, make your change, and then restore the bit.

A consequence of making /etc/resolv.conf immutable is that if dhclient-script tries to change it and fails, it clutters /etc with temporary files. See 860928 for details. The user/admin may need to periodically clean these files out of /etc until #860928 is fixed.


CategoryNetwork

The /etc/resolv.conf is the main configuration file for the DNS name resolver library. The resolver is a set of functions in the C library that provide access to the Internet Domain Name System (DNS). The functions are configured to check entries in the /etc/hosts file, or several DNS name servers, or to use the host’s database of Network Information Service (NIS).

On modern Linux systems that use systemd (system and service manager), the DNS or name resolution services are provided to local applications via the systemd-resolved service. By default, this service has four different modes for handling the Domain name resolution and uses the systemd DNS stub file (/run/systemd/resolve/stub-resolv.conf) in the default mode of operation.

The DNS stub file contains the local stub 127.0.0.53 as the only DNS server, and it is redirected to the /etc/resolv.conf file which was used to add the name servers used by the system.

If you run the following ls command on the /etc/resolv.conf, you will see that this file is a symlink to the /run/systemd/resolve/stub-resolv.conf file.

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Feb 15  2019 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Unfortunately, because the /etc/resolv.conf is indirectly managed by the systemd-resolved service, and in some cases by the network service (by using initscripts or NetworkManager), any changes made manually by a user can not be saved permanently or only last for a while.

In this article, we will show how to install and use the resolvconf program to set permanent DNS name servers in /etc/resolv.conf file under Debian and Ubuntu Linux distributions.

Why Would You Want to Edit /etc/resolv.conf File?

The main reason could be because the system’s DNS settings are misconfigured or you prefer to use specific name servers or your own. The following cat command shows the default name server in the /etc/resolv.conf file on my Ubuntu system.

$ cat /etc/resolv.conf

Check DNS Name Servers

Check DNS Name Servers

In this case, when local applications such as the APT package manager try to access FQDNs (Fully Qualified Domain Names) on the local network, the result is a “Temporary failure in name resolution” error as shown in the next screenshot.

Temporary Failure Resolving

Temporary Failure Resolving

The same happens when you run a ping command.

$ ping google.com

Temporary Failure in Name Resolution

Temporary Failure in Name Resolution

So when a user tries to manually set the name servers, the changes do not last for long or are revoked after a reboot. To resolve this, you can install and use the reolvconf utility to make the changes permanent.

To install the resolvconf package as shown in the next section, you need to first manually set the following name servers in the /etc/resolv.conf file, so that you access the FQDMs of Ubuntu repository servers on the internet.

nameserver 8.8.4.4
nameserver 8.8.8.8

Read Also: How to Setup Local DNS Using /etc/hosts File in Linux

Installing resolvconf in Ubuntu and Debian

First, update the system software packages and then install resolvconf from the official repositories by running the following commands.

$ sudo apt update
$ sudo apt install resolvconf

Once the resolvconf installation is complete, the systemd will trigger the resolvconf.service to be automatically started and enabled. To check if it is up and running issues the following command.

$ sudo systemctl status resolvconf.service

If the service is not started and enabled automatically for any reason, you can start and enable it as follows.

$ sudo systemctl start resolvconf.service
$ sudo systemctl enable resolvconf.service
$ sudo systemctl status resolvconf.service

Check Resolvconf Service Status

Check Resolvconf Service Status

Set Permanent DNS Nameservers in Ubuntu and Debian

Next, open the /etc/resolvconf/resolv.conf.d/head configuration file.

$ sudo nano /etc/resolvconf/resolv.conf.d/head

and add the following lines in it:

nameserver 8.8.8.8 
nameserver 8.8.4.4

Set Permanent DNS Name Servers in Resolvconf

Set Permanent DNS Name Servers in Resolvconf

Save the changes and restart the resolvconf.service and systemd-resolved or reboot the system.

$ sudo systemctl restart resolvconf.service
$ sudo systemctl restart systemd-resolved.service

Now when you check the /etc/resolv.conf file, the name server entries should be stored there permanently. Henceforth, you will not face any issues concerning name resolution on your system.

Permanent DNS Name Servers

Permanent DNS Name Servers

I hope this quick article helped you in setting the permanent DNS nameservers in your Ubuntu and Debian systems. If you have any queries or suggestions, do share them with us in the comments section below.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Like this post? Please share to your friends:
  • Как onedrive изменить папку синхронизации
  • Как hr может изменить ситуацию
  • Как eeprom изменить
  • Как death stranding изменила мою жизнь
  • Как android изменить на iphone