Linux resolv conf настройка

Настройка DNS на Ubuntu Server 18.04 LTS

Стало достаточно традиционным для 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.1 — dnsmasq или unbound с настройками по умолчанию
  • 127.0.1.1 — dnsmasq или unbound , запущенный NetworkManager
  • 127.0.0.53 — systemd-resolved , запущенный по умолчанию

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

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

# apt install systemd-resolved

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

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 при изменении сетевой конфигурации, запуске и остановке процессов и т.д.

Читайте также:  Zabbix agent linux centos

После установки /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
# сервера 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

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

Читайте также:  Zabbix agent linux centos

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.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Настройка Преобразования DNS с Помощью «resolv.conf» в Примерах

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

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

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

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

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

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

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

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

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

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

nameserver 192.168.0.100 nameserver 8.8.8.8 nameserver 8.8.4.4

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

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

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

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

Читайте также:  X96 mini прошивка linux

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

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

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

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 адреса будет возвращено первое успешное преобразование.

Читайте также

Dns_probe_finished_no_internet Бывает так, что значок интернета говорит, что интернет есть, ping отвечает тем же, в браузере мы видим фигу, а Chrome…

Настройка Docker Compose в Windows 10 Если во время docker-compose up -d вы получаете ошибки типа подобных: Cannot create container for service redis: invalid volume specification: ‘C:\projects\storage\redis\data:/data:rw’…

Настройка стран в Tor Browser Как выходить в сеть Tor через IP адрес определённой страны Для того чтобы задать страну выхода в сеть в Tor…

Источник

Оцените статью
Adblock
detector