В каком файле ОС Linux хранятся соответствия ip-адресов и DNS-имен

Обновлено: 21.11.2024

Служба доменных имен (DNS) — это интернет-служба, которая сопоставляет IP-адреса и полные доменные имена (FQDN) друг с другом. Таким образом, DNS избавляет от необходимости запоминать IP-адреса. Компьютеры, на которых работает DNS, называются серверами имен. Ubuntu поставляется с BIND (Berkley Internet Naming Daemon), наиболее распространенной программой, используемой для поддержки сервера имен в Linux.

В командной строке терминала введите следующую команду для установки DNS:

Очень полезным пакетом для тестирования и устранения проблем с DNS является пакет dnsutils. Очень часто эти инструменты уже установлены, но для проверки и/или установки dnsutils введите следующее:

Существует множество способов настройки BIND9. Некоторые из наиболее распространенных конфигураций — это кэширующий сервер имен, первичный сервер и вторичный сервер.

При настройке в качестве кэширующего сервера имен BIND9 найдет ответ на запрос имени и запомнит ответ при повторном запросе домена.

В качестве основного сервера BIND9 считывает данные для зоны из файла на своем хосте и является авторитетным для этой зоны.

В качестве вторичного сервера BIND9 получает данные зоны от другого сервера имен, уполномоченного для зоны.

Обзор

Файлы конфигурации DNS хранятся в каталоге /etc/bind. Основной файл конфигурации — /etc/bind/named.conf , который в макете, предоставляемом пакетом, включает только эти файлы.

  • /etc/bind/named.conf.options: глобальные параметры DNS
  • /etc/bind/named.conf.local: для ваших зон
  • /etc/bind/named.conf.default-zones: зоны по умолчанию, такие как localhost, его реверс и корневые ссылки

Раньше корневые серверы имен описывались в файле /etc/bind/db.root . Теперь это предоставляется файлом /usr/share/dns/root.hints, поставляемым с пакетом dns-root-data, и упоминается в файле конфигурации named.conf.default-zones выше.

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

Кэширующий сервер имен

Конфигурация по умолчанию действует как сервер кэширования. Просто раскомментируйте и отредактируйте /etc/bind/named.conf.options, чтобы установить IP-адреса DNS-серверов вашего провайдера:

Примечание

Замените 1.2.3.4 и 5.6.7.8 IP-адресами фактических серверов имен.

Чтобы включить новую конфигурацию, перезапустите DNS-сервер. Из командной строки терминала:

Информацию о тестировании кэширующего DNS-сервера см. в разделе dig.

Основной сервер

Файл зоны пересылки

Чтобы добавить зону DNS в BIND9, превратив BIND9 в основной сервер, сначала отредактируйте файл /etc/bind/named.conf.local:

Вы должны увеличивать серийный номер каждый раз, когда вносите изменения в файл зоны. Если вы вносите несколько изменений перед перезапуском BIND9, просто увеличьте серийный номер один раз.

Теперь вы можете добавить записи DNS в конец файла зоны. Дополнительные сведения см. в разделе Общие типы записей.

Примечание

Многие администраторы предпочитают использовать дату последнего редактирования в качестве серийного номера зоны, например 2020012100, что соответствует ггггммддсс. (где ss — серийный номер)

После внесения изменений в файл зоны необходимо перезапустить BIND9, чтобы изменения вступили в силу:

Файл обратной зоны

Теперь, когда зона настроена и имена преобразуются в IP-адреса, необходимо добавить обратную зону, чтобы DNS могла преобразовать адрес в имя.

Отредактируйте /etc/bind/named.conf.local и добавьте следующее:

Примечание

Замените 1.168.192 первыми тремя октетами сети, которую вы используете. Также назовите файл зоны /etc/bind/db.192 соответствующим образом. Он должен соответствовать первому октету вашей сети.

Теперь создайте файл /etc/bind/db.192:

После создания файла обратной зоны перезапустите BIND9:

Дополнительный сервер

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

Во-первых, на основном сервере необходимо разрешить передачу зоны. Добавьте параметр «разрешить передачу» в примеры определений прямой и обратной зон в файле /etc/bind/named.conf.local:

Примечание

Замените 192.168.1.11 на IP-адрес вашего вторичного сервера имен.

Перезапустите BIND9 на основном сервере:

Затем на вторичном сервере установите пакет bind9 так же, как и на первичном. Затем отредактируйте /etc/bind/named.conf.local и добавьте следующие объявления для зон Forward и Reverse:

Примечание

Замените 192.168.1.10 на IP-адрес вашего основного сервера имен.

Перезапустите BIND9 на вторичном сервере:

В /var/log/syslog вы должны увидеть что-то похожее на следующее (некоторые строки были разделены, чтобы соответствовать формату этого документа):

Примечание

Примечание. Зона передается только в том случае, если Серийный номер на основной зоне больше, чем на дополнительной. Если вы хотите, чтобы ваш основной DNS-сервер уведомлял другие вторичные DNS-серверы об изменениях зоны, вы можете добавить также-notify < ipaddress; >; в /etc/bind/named.conf.local, как показано в примере ниже:

Примечание

Каталог по умолчанию для файлов неавторизованных зон — /var/cache/bind/ . Этот каталог также настроен в AppArmor, чтобы позволить демону named писать в него. Дополнительную информацию о AppArmor см. в разделе Безопасность — AppArmor.

В этом разделе рассматривается диагностика проблем с конфигурациями DNS и BIND9.

Тестирование

resolv.conf

Первым шагом в тестировании BIND9 является добавление IP-адреса сервера имен в преобразователь хостов. Первичный сервер имен должен быть настроен так же, как и другой хост для двойной проверки. Подробную информацию о добавлении адресов серверов имен к сетевым клиентам см. в разделе Конфигурация DNS-клиентов. В конце строка вашего сервера имен в /etc/resolv.conf должна указывать на 127.0.0.53, и у вас должен быть параметр поиска для вашего домена. Что-то вроде этого:

Чтобы проверить, какой DNS-сервер использует ваш локальный преобразователь, выполните:

Примечание

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

Если вы установили пакет dnsutils, вы можете проверить свои настройки с помощью утилиты поиска DNS: dig:

После установки BIND9 используйте команду dig для интерфейса loopback, чтобы убедиться, что он прослушивает порт 53. В командной строке терминала:

В выводе команды вы должны увидеть строки, подобные приведенным ниже:

Если вы настроили BIND9 в качестве кэширующего сервера имен, «выкопайте» внешний домен, чтобы проверить время запроса:

Обратите внимание на время запроса в конце вывода команды:

После второго раскопа должно быть улучшение:

Теперь, чтобы продемонстрировать, как приложения используют DNS для разрешения имени хоста, используйте утилиту ping для отправки эхо-запроса ICMP:

именная контрольная зона

Отличный способ проверить файлы зон — использовать утилиту named-checkzone, установленную вместе с пакетом bind9. Эта утилита позволяет убедиться в правильности конфигурации перед перезапуском BIND9 и внесением изменений.

Чтобы проверить наш пример файла зоны пересылки, введите в командной строке следующее:

Если все настроено правильно, вы должны увидеть примерно такой результат:

Аналогично, чтобы проверить файл зоны Reverse, введите следующее:

Вывод должен быть похож на:

Примечание

Серийный номер вашего файла зоны, вероятно, будет другим.

Быстрая регистрация временных запросов

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

Чтобы включить ведение журнала запросов включить, выполните:

Точно так же, чтобы отключить его, запустите:

Журналы будут отправляться в syslog и по умолчанию отображаться в /var/log/syslog:

Примечание

Количество журналов, создаваемых при включении журнала запросов, может быть огромным!

Ведение журнала

BIND9 имеет множество доступных параметров настройки ведения журналов, но два основных – это канал и категория, которые определяют, куда направляются журналы и какая информация регистрируется. соответственно.

Если никакие параметры ведения журнала не настроены, конфигурация по умолчанию:

Давайте вместо этого настроим BIND9 на отправку отладочных сообщений, связанных с DNS-запросами, в отдельный файл.

Нам нужно настроить канал, чтобы указать, в какой файл отправлять сообщения, и категорию. В этом примере категория будет регистрировать все запросы. Отредактируйте /etc/bind/named.conf.local и добавьте следующее:

Примечание

Параметр debug может иметь значение от 1 до 3. Если уровень не указан, по умолчанию используется уровень 1.

Поскольку демон named запускается от имени пользователя bind, необходимо создать каталог /var/log/named и изменить владельца:

Теперь перезапустите BIND9, чтобы изменения вступили в силу:

Вы должны увидеть, что файл /var/log/named/query.log заполнен информацией о запросе. Это простой пример параметров ведения журнала BIND9. Подробные сведения о дополнительных параметрах см. в разделе Дополнительная информация.

Распространенные типы записей

В этом разделе рассматриваются некоторые наиболее распространенные типы записей DNS.

Запись: эта запись сопоставляет IP-адрес с именем хоста.

Запись CNAME: используется для создания псевдонима существующей записи A. Вы не можете создать запись CNAME, указывающую на другую запись CNAME.

Запись MX: используется для определения адреса электронной почты. Должен указывать на запись A, а не на CNAME .

Запись NS: используется для определения того, какие серверы обслуживают копии зоны. Он должен указывать на запись A, а не на CNAME. Здесь определяются первичный и вторичный серверы.

Дополнительная информация

DNS and BIND – популярная книга, выпущенная уже в пятом издании. Теперь также есть книга DNS и BIND на IPv6.

Система доменных имен поможет вам достичь желаемого в Интернете. Убедитесь, что вы знаете, что это такое и как его установить, настроить и протестировать.

Система доменных имен (DNS) используется для разрешения (преобразования) имен хостов в адреса интернет-протокола (IP) и наоборот. DNS-сервер, также известный как сервер имен, сопоставляет IP-адреса с именами хостов или доменными именами.

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

Как работает DNS

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

Дополнительные ресурсы по Linux

Откуда DNS получает IP-адреса?

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

Рабочий процесс DNS показывает, как происходит взаимодействие внутри DNS и как он разрешает адреса.

Прямой и обратный поиск

Зона прямого просмотра использует имя домена для поиска IP-адресов, тогда как зона обратного просмотра использует IP-адреса для поиска имени домена.

Установить и настроить DNS

BIND – это служба сервера имен, отвечающая за преобразование доменного имени в IP-адрес на DNS-серверах на базе Linux.

Пакет BIND предоставляет указанную службу. Он считывает конфигурацию из файлов /etc/named и /etc/named.conf. После установки этого пакета вы можете приступить к настройке DNS.

Настройте файл /etc/named.conf

Сначала добавьте или измените два значения в поле параметров. Один — это адрес DNS-сервера, а другой — запрос разрешения на любой из них.

Вот значения из приведенного выше файла:

  • 192.168.25.132 — адрес DNS-сервера
  • любой — соответствует каждому IP-адресу

Определите прямую и обратную зоны

Определите прямую и обратную зоны в файле /etc/named.conf или /etc/named.rfc1912.zones (зоны можно определить в любом из этих файлов). В этом примере я добавляю сведения об определении зоны в файл /etc/named.rfc1912.zones.

Создать файлы прямой и обратной зоны

Вам также необходимо создать файлы прямой и обратной зон в каталоге /var/named.

Примечание. По умолчанию файл named.conf включает каталог /var/named для проверки файлов зон. Примеры файлов зон named.localhost и named.loopback создаются во время установки пакета BIND.

Добавьте IP-адрес сервера имен в /etc/resolv.conf

Во-первых, вы должны отключить обработку DNS с помощью NetworkManager, поскольку он динамически обновляет файл /etc/resolv.conf с настройками DNS из своих активных профилей подключения. Чтобы отключить это и разрешить редактирование /etc/resolv.conf вручную, вы должны создать файл (например, 90-dns-none.conf) от имени пользователя root в каталоге /etc/NetworkManager/conf.d/, который содержит следующее:

Сохраните файл и перезагрузите (перезапустите) NetworkManager.

После перезагрузки NetworkManager он не будет обновлять файл /etc/resolv.conf . Теперь вы можете вручную добавить IP-адрес сервера имен в файл /etc/resolv.conf.

[ Будьте готовы, если что-то пойдет не так. Прочтите Введение в устранение неполадок DNS. ]

Запустить/перезапустить и включить указанную службу

Если указанная служба не запущена или отключена, запустите и включите ее. Если он уже активен (работает) и вы выполнили все эти настройки, вам необходимо перезапустить службу, чтобы внести изменения.

Проверьте разрешение имени DNS

Вы установили пакет BIND, настроили именованные файлы, создали зоны поиска и перезапустили службу, чтобы настройки вступили в силу.Теперь используйте команды nslookup и dig, чтобы проверить, правильно ли работает DNS, и убедитесь, что вы получаете ожидаемые результаты.

  • nslookup – это программа для запроса серверов доменных имен в Интернете.
  • dig — это инструмент для опроса DNS-серверов. Он выполняет поиск DNS и отображает ответы, возвращенные сервером имен.

Запрос с помощью nslookup

Запрос с копанием

[ Сеть выходит из-под контроля? Ознакомьтесь с бесплатной книгой «Сетевая автоматизация для всех» от Red Hat. ]

Подведение итогов

Из этой статьи вы узнали, что такое DNS и как он работает. Кроме того, теперь вы знаете, что такое зоны прямого и обратного просмотра и как они работают. Вы также узнали, как установить пакет BIND, который отвечает за настройку DNS в системе и настройку именованных файлов и зон поиска. Наконец, вы узнали две команды, nslookup и dig , для запроса разрешений DNS.

8.3. Установка имени хоста и настройка службы имен

Цель присвоения имен IP-номерам – облегчить их запоминание. На самом деле IP-адрес идентифицирует сетевой интерфейс, связанный с устройством, например сетевой картой. Поскольку каждая машина может иметь несколько сетевых карт и несколько интерфейсов на каждой плате, один компьютер может иметь несколько имен в системе доменных имен.

Однако каждая машина идентифицируется по основному (или «каноническому») имени, которое хранится в файле /etc/hostname и передается ядру Linux с помощью сценариев инициализации с помощью команды hostname. Текущее значение доступно в виртуальной файловой системе, и вы можете получить его с помощью команды cat /proc/sys/kernel/hostname.

НАЗАД К ОСНОВАМ /proc/ и /sys/ , виртуальные файловые системы

Файловые деревья /proc/ и /sys/ создаются «виртуальными» файловыми системами. Это практический способ восстановления информации из ядра (посредством перечисления виртуальных файлов) и передачи ее ему (путем записи в виртуальные файлы).

В частности,

/sys/ предназначен для обеспечения доступа к внутренним объектам ядра, особенно к тем, которые представляют различные устройства в системе. Таким образом, ядро ​​может обмениваться различной информацией: состояние каждого устройства (например, находится ли оно в режиме энергосбережения), является ли оно съемным устройством и т. д. Обратите внимание, что /sys/ существует только с версии ядра. 2.6. /proc/ описывает текущее состояние ядра: файлы в этом каталоге содержат информацию о процессах, запущенных в системе и ее оборудовании.

Удивительно, но доменное имя не управляется таким же образом, а происходит от полного имени машины, полученного посредством разрешения имен. Вы можете изменить его в файле /etc/hosts; просто напишите там полное имя машины в начале списка имен, связанных с адресом машины, как в следующем примере:

8.3.1. Разрешение имени

Механизм разрешения имен в Linux является модульным и может использовать различные источники информации, объявленные в файле /etc/nsswitch.conf. Запись, которая включает разрешение имен хостов, называется hosts. По умолчанию он содержит файлы dns , что означает, что система сначала обращается к файлу /etc/hosts, а затем к DNS-серверам. Другими возможными источниками являются серверы NIS/NIS+ или LDAP.

ПРИМЕЧАНИЕ NSS и DNS

Учтите, что команды, специально предназначенные для запроса DNS (особенно host ), не используют стандартный механизм разрешения имен (NSS). Как следствие, они не учитывают /etc/nsswitch.conf и, следовательно, не учитывают /etc/hosts.

8.3.1.1. Настройка DNS-серверов

Для доступа к информации DNS сервер DNS должен быть доступен для ретрансляции запросов. У Falcot Corp есть свои собственные, но отдельные пользователи с большей вероятностью будут использовать DNS-серверы, предоставленные их интернет-провайдером.

Используемые DNS-серверы указаны в файле /etc/resolv.conf, по одному в строке, с ключевым словом nameserver перед IP-адресом, как в следующем примере:

Обратите внимание, что файл /etc/resolv.conf может обрабатываться автоматически (и перезаписываться), когда сеть управляется NetworkManager или настраивается через DHCP.

8.3.1.2. Файл /etc/hosts

Если в локальной сети нет сервера имен, все же можно создать небольшую таблицу, отображающую IP-адреса и имена машин в файле /etc/hosts, который обычно зарезервирован для станций локальной сети. Синтаксис этого файла, как описано в hosts (5), очень прост: каждая строка указывает конкретный IP-адрес, за которым следует список любых связанных имен (первое из них является «полностью уточненным», то есть включает доменное имя).

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

Этого файла будет достаточно для небольшой сети, не подключенной к Интернету, но с 5 и более машинами, рекомендуется установить правильный DNS-сервер.

СОВЕТ Обход DNS

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

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

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

Файл hosts используется для сопоставления доменных имен (имен хостов) с IP-адресами. Это обычный текстовый файл, используемый всеми операционными системами, включая Linux, Windows и macOS.

Файл hosts имеет приоритет над DNS. Когда вы вводите доменное имя веб-сайта, который хотите посетить, доменное имя должно быть переведено в соответствующий IP-адрес. Операционная система сначала проверяет свой файл hosts на наличие соответствующего домена, и если для домена нет записи, она будет запрашивать настроенные DNS-серверы для разрешения указанного доменного имени. Это влияет только на компьютер, на котором внесены изменения, а не на то, как домен разрешается во всем мире.

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

В этой статье мы предоставим инструкции о том, как изменить файл hosts в Linux, macOS и Windows.

Записи в файле hosts имеют следующий формат:

Чтобы добавить запись в файл hosts, просто откройте файл в текстовом редакторе. Ниже приведен пример файла hosts:

Изменения в файле hosts вступают в силу немедленно, за исключением случаев, когда записи DNS кэшируются приложениями.

Чтобы отменить изменения, просто откройте файл и удалите добавленные строки.

В Linux полный путь к файлу — /etc/hosts .

Приведенные ниже инструкции действительны для всех дистрибутивов Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint:

В окне терминала откройте файл hosts в своем любимом текстовом редакторе:

При появлении запроса введите свой пароль sudo.

Прокрутите файл до конца и добавьте новые записи:

Сохраните изменения.

В Windows полный путь к файлу — c:\Windows\System32\Drivers\etc\hosts. Приведенные ниже инструкции действительны для Windows 10 и Windows 8.

Нажмите клавишу Windows и введите Блокнот в поле поиска.

Щелкните правой кнопкой мыши значок Блокнота и выберите "Запуск от имени администратора".

В Блокноте нажмите «Файл», затем «Открыть». В поле Имя файла вставьте c:\Windows\System32\drivers\etc\hosts .

Прокрутите файл до конца и добавьте новые записи:

Сохраните изменения, нажав Файл > Сохранить .

В macOS полный путь к файлу — /etc/hosts . Приведенные ниже инструкции действительны для всех версий macOS.

В окне терминала откройте файл hosts в своем любимом текстовом редакторе:

При появлении запроса введите пароль администратора.

Прокрутите файл до конца и добавьте новые записи:

Сохраните изменения и очистите кеш DNS:

Файл hosts позволяет вам установить IP-адрес данного доменного имени.

Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.

сообщить об этом объявлении

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