- 🌐 Как сделать постоянными изменения DNS в resolv.conf на Linux
- Внесем постоянные изменения DNS в resolv.conf
- Использование фреймворка Resolvconf
- Обновление настроек DNS-сервера в dhclient.conf
- Как уcтановить IP-адрес сервера имен в настройках вашего интерфейса.
- Настройка DNS на Ubuntu Server 18.04 LTS
- Настройка службы systemd-resolved
- Настройка службы resolvconf.service
- Используем только resolv.conf
- Setup DNS Resolution With “resolv.conf” in Examples
- How do I edit the “/etc/resolv.conf” file?
- The “nameserver” directive
- The “domain” directive
- How the “domain” directive in the “resolv.conf” file works?
- The “search” directive
- How the “search” directive in the “resolv.conf” file works?
- 7 Replies to “Setup DNS Resolution With “resolv.conf” in Examples”
- Dns linux resolv conf
- Add name servers to the configuration file
- Add the same name servers with IPv6 addresses
- Share this information:
🌐 Как сделать постоянными изменения 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, выполнив такую команду:
Использование фреймворка Resolvconf
Resolvconf – это платформа для обновления системной информации о серверах DNS.
Он настраивается как посредник между программами, которые предоставляют эту информацию (такими как ifup и ifdown, DHCP-клиенты, демон PPP и локальные серверы имен) и программами, которые используют эту информацию, такими как кэши DNS и библиотеки resolver).
В дистрибутивах Ubuntu/Debian вы можете установить resolvconf, выполнив команду ниже;
После установки фреймворк стартует и запускается при загрузке системы.
Затем отредактируйте файл конфигурации /etc/resolvconf/resolv.conf.d/base и введите настройки DNS.
Затем обновите файл /etc/resolv.conf, чтобы внести постоянные изменения в DNS:
Обновление настроек DNS-сервера в dhclient.conf
Если вы используете DHCPd для автоматического назначения IP-адреса, отредактируйте файл /etc/dhcp/dhclient.conf и добавьте следующую строку;
supersede domain-name-servers IP1, IP2;
Замените IP1 и IP2 соответствующими IP-адресами DNS:
Сохраните файл и выйдите.
Теперь, если вы запустите dhclient, ваш /etc/resolv.conf будет обновлен с использованием серверов DNS, определенных в dhclient.conf.
Вы можете использовать опцию prepend вместо supersede, чтобы добавить дополнительные IP-адреса к IP-адресу по умолчанию, предоставленному интернет-провайдером.
Как уcтановить IP-адрес сервера имен в настройках вашего интерфейса.
Отредактируйте файл конфигурации сетевого интерфейса и добавьте адрес сервера имен.
В Ubuntu 18.04/20.04 вы должны обновить файл конфигурации Netplan, например:
Мы устанавили DNS на публичный адрес DNS-сервера Google, 8.8.8.8.
В вашем случае все может быть иначе.
Перезапустите сеть, чтобы изменения вступили в силу;
На CentOS и аналогичных производных отредактируйте соответствующий интерфейс следующим образом.
Замените INTERFACE своим именем интерфейса.
Также отключите управление сетевым интерфейсом с помощью демона NetworkManager.
Теперь у вас должен быть установлен статический DNS.
Источник
Настройка 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 эта служба уже установлена и запущена сразу после установки операционной системы. Но если это не так, установить ее несложно:
Следующим шагом будет правка файла /etc/nsswitch.conf — находим строку, которая начинается с hosts :
Эта строка отвечает за последовательность обращений приложения к системным компонентам с целью резолвинга доменного имени. В данном случае сначала программа заглянет в файл /etc/hosts , затем запросит демона systemd-resolved , а потом — к DNS серверам.
Осталось сообщить systemd-resolved ip-адреса DNS-серверов, к которым следует обращаться для резолвинга:
Для целей совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS-серверам напрямую, получая их ip-адреса из /etc/resolv.conf , следует создать символическую ссылку. Обычно этого не требуется, ссылка уже существует после установки systemd-resolved :
В файле /run/systemd/resolve/stub-resolv.conf указан один-единственный сервер 127.0.0.53 :
Кроме того, можно создать символическую ссылку на /run/systemd/resolve/resolv.conf . Этот файл содержит DNS-сервера, полученные от DHCP-сервера и из файла конфигурации /etc/systemd/resolved.conf . В этом случае локальный кеширующий сервер не используется, что замедлит резолвинг.
Как видите, у меня DNS-серверов получилось слишком много, так что последняя запись может быть проигнорирована. Все готово, остается только разрешить запуск службы при загрузке системы, если это еще не было сделано:
Настройка службы resolvconf.service
Служба предоставляет остальным программам централизованный интерфейс для добавления и удаления записей в /etc/resolv.conf при изменении сетевой конфигурации, запуске и остановке процессов и т.д.
После установки /etc/resolv.conf будет представлять из себя ссылку на /run/resolvconf/resolv.conf .
При этом исходный файл /etc/resolv.conf (который на самом деле ссылка на /run/systemd/resolve/resolv.conf ) будет сохранен как original в директории /etc/resolvconf/resolv.conf.d/ (чтобы восстановить его при удалении службы resolvconf.service ). В этой же директории есть есть еще три файла — base , head и tail — которые позволяют вручную добавить записи в динамически формируемый /run/resolvconf/resolv.conf .
Теперь добавим пару записей в файл tail (сервера OpenDNS):
Перезагрузим службу и посмотрим сформированный /run/resolvconf/resolv.conf :
Первая запись — это резолвер systemd-resolved , а две другие записи были добавлены в конец resolv.conf из файла tail . Благодаря тому, что первая запись это 127.0.0.53 — резолвинг будет работать быстро, потому что systemd-resolved кеширует ответы DNS-серверов.
Но если мы остановим службу systemd-resolved , резолвинг все равно будет работать, используя сервера 208.67.222.222 и 208.67.220.220 — хотя и гораздо медленнее.
Используем только resolv.conf
Так делать не рекомендуется, потому что резолвинг будет работать медленно, но рассмотрим и этот вариант для полноты картины. Первым делом изменим имя файла /etc/resolv.conf на /etc/resolv.conf.back , а потом создадим свой resolv.conf :
Для Ubuntu Desktop запретим вездесущему NetworkManager вмешиваться в процесс распознавания доменных имен:
Остановим службы resolvconf.service и systemd-resolved.service :
Проверим, как теперь работает распознавание доменных имен:
Источник
Setup DNS Resolution With “resolv.conf” in Examples
The /etc/resolv.conf configuration file contains information that allows a computer to convert alpha-numeric domain names into the numeric IP addresses.
The process of converting domain names to IP addresses is called resolving.
When using DHCP, dhclient usually rewrites resolv.conf with information received from the DHCP server.
How do I edit the “/etc/resolv.conf” file?
Use text editor such as vi or gedit from Linux desktop:
There are three main configuration directives in /etc/resolv.conf :
The “nameserver” directive
The nameserver directive points out to the IP address of a Name Server.
It can be your own Name Server, some public Name Server or the Name Server of your’s ISP.
Note: Up to 3 name servers may be listed.
The “domain” directive
Local domain name.
How the “domain” directive in the “resolv.conf” file works?
You can use domain directive for resolving short host-names – e.g. test .
So if you have the following in your /etc/resolv.conf :
Then your computer will try to resolve test.example.com .
The “search” directive
Search list for hostname lookup. The search list is normally determined from the local domain name but it can be set to a list of domains.
How the “search” directive in the “resolv.conf” file works?
You need to use search directive for resolving short host-names – e.g. test .
So if you have the following in your /etc/resolv.conf :
Then your computer will try to resolve test.example.com followed by test.company.net . It will return the first query that was successful.
7 Replies to “Setup DNS Resolution With “resolv.conf” in Examples”
Can you add an example for option: ndot:n
does it matter in which order those name-value pairs are mentioned in the file?
search / domain / nameserver key-value pairs…
Hi, this is very helpful 🙂
One question: As you stated domain is overwriten if DHCP Client is used. I’m having two ethernet interfaces, one with fixed IP and one running on dhcp. Is it possible to force a domain in this configuration?
How can we use resolv.conf to redirect all dns requests to local ip address?
If DHCP is being used, the default behavior in Red Hat and its derivatives (CentOS, etc) is to inherit the DNS information from the DHCP server. However, this can be disabled by defining PEERDNS=no in your network configuration file located at
/etc/sysconfig/network-scripts/ifcfg-ens192 .
Keep in mind that ‘ifcfg-ens192’ may vary depending on the network card type on your system.
Here is an example:
cat /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
NAME=ens192
DEVICE=ens192
ONBOOT=yes
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=no
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
IPV6_AUTOCONF=no
NM_CONTROLLED=no
USERCTL=no
MTU=”1500″
Other options like DOMAIN= and SEARCH= can be applied globally by defining them on this file.
Источник
Dns linux resolv conf
Authored by: Jered Heeschen
If you find that your server’s Domain Name Server (DNS) settings are misconfigured or you prefer to use your own, this article describes how to change your Linux® server’s DNS settings.
If you want to test your site without the test link prior to going live with SSL or verify that an alias site works prior to DNS changes, you can Modify your hosts file to override the DNS for a domain on a specific machine.
Add name servers to the configuration file
On most Linux operating systems, the DNS servers that the system uses for name resolution are defined in the /etc/resolv.conf file. That file should contain at least one nameserver line. Each nameserver line defines a DNS server. The name servers are prioritized in the order the system finds them in the file. Use the Internet Protocol (IP) addresses of the name servers when you enter them into the configuration file because the system doesn’t know what to do with domain names until after it knows how to get to the DNS servers.
In some cases, /etc/resolv.conf could be a directly managed file, populated by the network service ( network by using initscripts or NetworkManager ). To directly edit the configuration file, use the following steps to add the DNS servers:
Open the resolv.conf file with an editor, such as nano , to make the necessary changes. If the file doesn’t already exist, this command creates it:
sudo nano /etc/resolv.conf
Add lines for the name servers that you want to use. The following table displays which name server IP addresses to use depending on which datacenter houses your cloud servers. The “Name server IP address” column shows the lines to add to the configuration file:
Data center | Name server IP address |
---|---|
Hong Kong (HKG) | nameserver 120.136.32.62 nameserver 120.136.32.63 |
Northern Virginia (IAD) | nameserver 69.20.0.164 nameserver 69.20.0.196 |
London (LON) | nameserver 83.138.151.80 nameserver 83.138.151.81 |
Chicago (ORD) | nameserver 173.203.4.8 nameserver 173.203.4.9 |
Dallas/Fort Worth (DFW) | nameserver 72.3.128.240 nameserver 72.3.128.241. |
Sydney (SYD) | nameserver 119.9.60.62 nameserver 119.9.60.63. |
Frankfurt (FRA) | nameserver 159.135.130.45 nameserver 159.135.130.46 |
To ensure that your new settings are working, ping the domain name by using the following command:
ping -c 3 rackspace.com
You should see a result similar to the following one:
If you receive an unknown host message, double-check the IP addresses that you set as your DNS servers.
Add the same name servers with IPv6 addresses
If you’re using IPv6 on your server, you might need to add the IPv6 addresses of your name servers to the resolv.conf file. You can see if a DNS server has an IPv6 address by performing the following steps:
Use the following host command to get the domain name of the server (substitute your DNS server IP address):
Use the domain name you got back in another host lookup:
If an IPv6 address is returned, you can add that as another nameserver line in the resolv.conf file, as follows:
Then test as previously shown, by using the ping6 command instead of the regular ping command to force the system to use IPv6.
Share this information:
©2020 Rackspace US, Inc.
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License
Источник