Настройка DNS-сервера для пересылки пакетов на другие DNS-серверы

Обновлено: 01.07.2024

Большинство приложений используют функцию getaddrinfo() библиотеки glibc для разрешения DNS-запросов. По умолчанию glibc отправляет все DNS-запросы на первый DNS-сервер, указанный в файле /etc/resolv.conf. Если этот сервер не отвечает, Red Hat Enterprise Linux использует следующий сервер в этом файле.

В этом разделе описывается, как настроить порядок DNS-серверов.

31.1. Как NetworkManager упорядочивает DNS-серверы в /etc/resolv.conf

NetworkManager упорядочивает DNS-серверы в файле /etc/resolv.conf на основе следующих правил:

    Если существует только один профиль подключения, NetworkManager использует порядок DNS-серверов IPv4 и IPv6, указанный в этом подключении.

Если активировано несколько профилей подключения, NetworkManager упорядочивает DNS-серверы на основе значения приоритета DNS. Если вы устанавливаете приоритеты DNS, поведение NetworkManager зависит от значения, установленного в параметре dns. Вы можете установить этот параметр в секции [main] в файле /etc/NetworkManager/NetworkManager.conf:

dns=default или если параметр dns не задан:

NetworkManager упорядочивает DNS-серверы из разных подключений на основе параметров ipv4.dns-priority и ipv6.dns-priority в каждом подключении.

Если вы не задали никакого значения или установили для ipv4.dns-priority и ipv6.dns-priority значение 0 , NetworkManager использует глобальное значение по умолчанию. См. раздел Значения по умолчанию для параметров приоритета DNS.

dns=dnsmasq или dns=systemd-resolved :

При использовании одного из этих параметров NetworkManager устанавливает либо 127.0.0.1 для dnsmasq, либо 127.0.0.53 в качестве записи сервера имен в файле /etc/resolv.conf.

Как dnsmasq, так и systemd-resolved службы перенаправляют запросы для поискового домена, установленного в соединении NetworkManager, на DNS-сервер, указанный в этом соединении, и перенаправляют запросы к другим доменам на соединение с маршрутом по умолчанию. Когда для нескольких подключений задан один и тот же поисковый домен, dnsmasq и systemd-resolved пересылают запросы для этого домена на DNS-сервер, установленный в подключении с самым низким значением приоритета.

Значения параметров приоритета DNS по умолчанию

NetworkManager использует следующие значения по умолчанию для соединений:

  • 50 для VPN-соединений
  • 100 для других подключений

Действительные значения приоритета DNS:

Вы можете установить для глобальных параметров ipv4.dns-priority и ipv6.dns-priority значения по умолчанию и для конкретных подключений в диапазоне от -2147483647 до 2147483647 .

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

Если несколько подключений имеют одинаковый приоритет DNS, NetworkManager отдает приоритет DNS в следующем порядке:

  1. VPN-подключения
  2. Соединение с активным маршрутом по умолчанию. Активный маршрут по умолчанию — это маршрут по умолчанию с наименьшей метрикой.

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

  • Описание параметра dns-priority в разделах ipv4 и ipv6 на справочной странице nm-settings(5)
  • Использование разных DNS-серверов для разных доменов

31.2. Установка значения приоритета DNS-сервера по умолчанию для всего NetworkManager

NetworkManager использует следующие значения приоритета DNS по умолчанию для подключений:

  • 50 для VPN-соединений
  • 100 для других подключений

В этом разделе описывается, как переопределить эти общесистемные значения по умолчанию с помощью настраиваемого значения по умолчанию для подключений IPv4 и IPv6.

Процедура

Отредактируйте файл /etc/NetworkManager/NetworkManager.conf:

Добавьте раздел [connection], если он не существует:

Добавьте пользовательские значения по умолчанию в раздел [connection]. Например, чтобы установить новое значение по умолчанию для IPv4 и IPv6 равным 200 , добавьте:

Вы можете установить для параметров значения от -2147483647 до 2147483647 . Обратите внимание, что установка параметров на 0 включает встроенные значения по умолчанию (50 для VPN-подключений и 100 для других подключений).

Перезагрузите службу NetworkManager:

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

  • Раздел подключения на справочной странице NetworkManager.conf(5)

31.3. Установка приоритета DNS для подключения NetworkManager

В этом разделе описывается, как определить порядок DNS-серверов, когда NetworkManager создает или обновляет файл /etc/resolv.conf.

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

Предпосылки

  • В системе настроено несколько подключений NetworkManager.
  • В системе либо не задан параметр dns в файле /etc/NetworkManager/NetworkManager.conf, либо параметр установлен по умолчанию.

Процедура

При необходимости отобразите доступные соединения:

Установите параметры ipv4.dns-priority и ipv6.dns-priority. Например, чтобы установить оба параметра равными 10 для подключения Example_con_1:

Повторно активируйте обновленное соединение:

Этапы проверки

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

Интернет и всемирная паутина – это дикие границы, в которых компьютерные языки и коды используются для поиска и обмена данными и информацией. Одним из самых фундаментальных инструментов Интернета является система доменных имен или DNS. (Хотя многие думают, что «DNS» означает «Сервер доменных имен», на самом деле это означает «Система доменных имен».) DNS — это протокол, входящий в набор стандартов того, как компьютеры обмениваются данными в Интернете и во многих частных сетях. известный как набор протоколов TCP/IP. Его цель жизненно важна, поскольку он помогает преобразовывать простые для понимания доменные имена, такие как «howstuffworks.com», в адрес интернет-протокола (IP), например 70.42.251.42, который компьютеры используют для идентификации друг друга в сети. Короче говоря, это система сопоставления имен с числами.

Концепция DNS похожа на телефонную книгу для Интернета. Без такой системы навигации вам пришлось бы прибегать к гораздо более сложным и эзотерическим средствам, чтобы просеивать виртуальные открытые равнины и плотные города данных, разбросанных по всему Интернету. и вы можете поспорить, что это было бы не так весело, тем более что сейчас существуют сотни миллионов доменных имен [источник: VeriSign].

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

Вне зависимости от того, заходите ли вы на веб-сайт или отправляете электронную почту, ваш компьютер использует DNS-сервер для поиска доменного имени, к которому вы пытаетесь получить доступ. Правильным термином для этого процесса является разрешение имени DNS, и вы бы сказали, что сервер DNS разрешает доменное имя в IP-адрес. Например, когда вы вводите «www.howstuffworks.com» в браузере, часть сетевого подключения включает преобразование доменного имени «howstuffworks.com» в IP-адрес, например 70.42.251.42, для веб-серверов HowStuffWorks.< /p>

Но вы, скорее всего, вспомните "howstuffworks.com", когда захотите вернуться позже. Кроме того, IP-адрес веб-сайта может со временем меняться, и некоторые сайты связывают несколько IP-адресов с одним доменным именем.

Без DNS-серверов Интернет очень быстро отключился бы. Но как ваш компьютер узнает, какой DNS-сервер использовать? Как правило, когда вы подключаетесь к домашней сети, интернет-провайдеру (ISP) или сети Wi-Fi, модем или маршрутизатор, который назначает сетевой адрес вашего компьютера, также отправляет важную информацию о конфигурации сети на ваш компьютер или мобильное устройство. Эта конфигурация включает один или несколько DNS-серверов, которые устройство должно использовать при преобразовании DNS-имен в IP-адрес.

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

DNS-серверы и IP-адреса

Вы только что узнали, что основной задачей сервера доменных имен или DNS-сервера является разрешение (преобразование) доменного имени в IP-адрес. Звучит как простая задача, и она была бы такой, если бы не следующие моменты:

  • В настоящее время используются миллиарды IP-адресов, и у большинства машин также есть удобочитаемые имена.
  • DNS-серверы (в совокупности) обрабатывают миллиарды запросов через Интернет в любой момент времени.
  • Каждый день миллионы людей добавляют и меняют доменные имена и IP-адреса.

С учетом стольких задач DNS-серверы полагаются на эффективность сети и интернет-протоколы. Частично эффективность IP заключается в том, что каждая машина в сети имеет уникальный IP-адрес в стандартах IPV4 и IPV6, управляемых Управлением по присвоению номеров в Интернете (IANA). Вот несколько способов узнать IP-адрес:

Откуда берется IP-адрес вашего компьютера?Если мы говорим о вашем настольном или портативном компьютере, он, вероятно, исходит от сервера протокола динамической конфигурации хоста (DHCP) в вашей сети. Работа DHCP-сервера состоит в том, чтобы убедиться, что ваш компьютер имеет IP-адрес и другую сетевую конфигурацию, необходимую ему, когда вы находитесь в сети. Поскольку это «динамический», IP-адрес вашего компьютера, вероятно, будет время от времени меняться, например, когда вы выключите компьютер на несколько дней. Как пользователь, вы, вероятно, никогда не заметите, как все это происходит. См. боковую панель на этой странице, чтобы узнать, где найти IP-адрес, присвоенный вашему компьютеру или мобильному устройству.

Веб-серверы и другие компьютеры, которым требуется постоянная точка контакта, используют статические IP-адреса. Это означает, что один и тот же IP-адрес всегда назначается сетевому интерфейсу этой системы, когда она подключена к сети. Чтобы убедиться, что интерфейс всегда получает один и тот же IP-адрес, IP связывает адрес с адресом управления доступом к среде (MAC) для этого сетевого интерфейса. Каждый сетевой интерфейс, как проводной, так и беспроводной, имеет уникальный MAC-адрес, встроенный производителем.

Теперь давайте посмотрим на другую сторону уравнения DNS: доменные имена.

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

  • Windows. Хотя вы можете щелкнуть в пользовательском интерфейсе, чтобы найти настройки своего сетевого интерфейса, одним из быстрых способов узнать свой IP-адрес является открытие приложения командной строки в разделе «Стандартные» и ввод следующей команды: ipconfig
  • Mac: откройте «Системные настройки», нажмите «Сеть», убедитесь, что выбрано текущее сетевое подключение (с зеленой точкой рядом с ним), нажмите «Дополнительно» и перейдите на вкладку TCP/IP.
  • Linux или UNIX. Если у вас еще нет командной строки, откройте терминальное приложение, например XTERM или iTerm. В командной строке введите следующую команду: ifconfig
  • Смартфоны, использующие Wi-Fi. Посмотрите сетевые настройки вашего телефона. Это зависит от телефона и версии его операционной системы.

Обратите внимание, что если вы находитесь в домашней или небольшой локальной сети, ваш адрес, вероятно, будет иметь вид 192.168.x.x, 172.16.x.x или 10.x.x.x (где x – число от 0 до 255). Это зарезервированные адреса, используемые в каждой локальной сети, и маршрутизатор в этой сети затем подключает вас к Интернету [источники: Modi, Price, Rusen].

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

Вы распознаете доменные имена по строкам символов, разделенным точками (точками). Последнее слово в имени домена представляет собой домен верхнего уровня. Эти домены верхнего уровня контролируются IANA в так называемой базе данных корневой зоны, которую мы более подробно рассмотрим позже. Существует более 1000 доменов верхнего уровня, и вот некоторые из наиболее распространенных:

  • COM — коммерческие веб-сайты, открытые для всех.
  • NET — сетевые веб-сайты, открытые для всех.
  • ORG – веб-сайты некоммерческих организаций, открытые для всех.
  • EDU – только школы и образовательные организации.
  • MIL — только для вооруженных сил США
  • GOV – только для правительства США.
  • США, Великобритания, Россия и другие двухбуквенные коды стран — каждый из них назначается уполномоченному органу по доменным именам в соответствующей стране.

В доменном имени каждое сочетание слов и точек, которое вы добавляете перед доменом верхнего уровня, указывает на уровень в структуре домена. Каждый уровень относится к серверу или группе серверов, которые управляют этим уровнем домена. Например, «howstuffworks» в нашем доменном имени — это домен второго уровня вне домена COM верхнего уровня. У организации может быть иерархия поддоменов, дополнительно организующая ее присутствие в Интернете, например, «bbc.co.uk», который является доменом BBC под CO, дополнительным уровнем, созданным органом по доменным именам, отвечающим за код страны Великобритании.

Самое левое слово в имени домена, например www или mail, является именем хоста. Он указывает имя конкретной машины (с определенным IP-адресом) в домене, обычно предназначенном для определенной цели. Определенный домен потенциально может содержать миллионы имен хостов, если все они уникальны для этого домена. (Часть «http» означает протокол передачи гипертекста и представляет собой протокол, по которому пользователь отправляет информацию на веб-сайт, который он посещает. В настоящее время вы, скорее всего, увидите «https», что является признаком того, что информация отправляется по защищенному протоколу, где информация зашифрована. Это особенно важно, если вы предоставляете номер кредитной карты веб-сайту [источник: EasyNews].)

Позже, когда мы рассмотрим, как создать доменное имя, мы увидим, что часть регистрации домена требует определения одного или нескольких серверов имен (DNS-серверов), которые имеют полномочия для разрешения имен хостов и поддоменов. в этом домене. Как правило, вы делаете это через службу хостинга, которая имеет свои собственные DNS-серверы. Далее мы рассмотрим, как эти DNS-серверы управляют вашим доменом и как DNS-серверы в Интернете работают вместе, чтобы обеспечить правильную маршрутизацию трафика между IP-адресами.

Распределенная система

Часть "www" в адресе домена означает "Всемирная паутина" и означает, что вы ищете что-то в Интернете (в отличие от другой части Интернета, например почты). Включение этих трех букв в адрес стало менее важным, чем раньше. Hemera Technologies/Getty Images

У каждого домена есть сервер доменных имен, обрабатывающий его запросы, и есть человек или ИТ-группа, которые ведут записи в базе данных этого DNS-сервера. Ни одна другая база данных на планете не получает столько запросов, сколько DNS-серверы, и они обрабатывают все эти запросы, а также ежедневно обрабатывают обновления данных от миллионов людей. Это одна из самых удивительных частей DNS — она полностью распределена по всему миру на миллионах машин, управляется миллионами людей, и при этом ведет себя как единая интегрированная база данных!

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

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

Когда вы вводите URL-адрес в веб-браузер, ваш DNS-сервер использует свои ресурсы для преобразования имени в IP-адрес соответствующего веб-сервера.

DNS-серверы, выполняющие первую задачу, обычно управляются вашим интернет-провайдером (ISP). Как упоминалось ранее, DNS-сервер провайдера является частью конфигурации сети, которую вы получаете от DHCP, как только подключаетесь к сети. Эти серверы находятся в центрах обработки данных вашего интернет-провайдера и обрабатывают запросы следующим образом:

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

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

Это распространение является результатом того, что каждый DNS-сервер кэширует результат поиска в течение ограниченного времени, известного как время жизни (TTL), которое варьируется от нескольких минут до нескольких дней. Люди, управляющие DNS-сервером, могут настроить его TTL, поэтому значения TTL будут различаться в Интернете. Таким образом, каждый раз, когда вы ищете «www.howstuffworks.com», возможно, что DNS-сервер вашего интернет-провайдера найдет результаты поиска «70.42.251.42» в своем собственном кеше, если вы или кто-то другой, использующий этот сервер, искал его раньше. в пределах TTL сервера.

Эта большая сеть DNS-серверов включает в себя корневые серверы имен, которые начинаются с вершины иерархии доменов для данного домена верхнего уровня. Для каждого домена верхнего уровня доступны сотни корневых серверов имен. Хотя запросы DNS не обязательно начинать с корневого сервера имен, они могут обратиться к корневому серверу имен в качестве крайней меры, чтобы помочь отследить SOA для домена.

Теперь, когда вы знаете, как взаимосвязаны DNS-серверы для улучшения процесса разрешения имен, давайте рассмотрим, как настроить DNS-сервер в качестве авторитетного для вашего домена.

Мой MS DNS настроен на использование трех IP-адресов в политике переадресации. Какой IP-адрес DNS-запрос будет отправлен на три IP-адреса.
По сути, я хочу знать весь поток пакетов, когда MS DNS решает выполнить переадресацию.

Bind поддерживает RTT, когда речь идет о переадресации. Поддерживает ли его MS?

Здравствуйте,
Могу ли я узнать, есть ли у вас новости по этому вопросу?

2 ответа

Да, выполняется переадресация (если на вкладке "Дополнительно" не установлен флажок "Отключить рекурсию").

Вы можете настроить серверы переадресации следующим образом:

Войдите на DNS-сервер как администратор. Нажмите «Пуск» и введите DNSMgmt.msc, затем нажмите «Ввод», чтобы открыть консоль управления DNS. Найдите сервер в списке, затем щелкните правой кнопкой мыши и выберите свойства. Перейдите на вкладку Forwarders и добавьте DNS-серверы пересылки. Если вы не настроите серверы пересылки, для запросов будут использоваться корневые серверы.

Вот краткое руководство по настройке DNS-сервера MS:

Вот ссылка на подробную информацию о вопросе RTT:

Что касается вашей проблемы, вот мои предложения:

Если вы настроите три сервера пересылки на DNS-сервере, DNS-запросы будут следующими:

(1) Клиент запрашивает DNS-сервер. DNS-сервер немедленно перенаправляет запрос своему первому серверу пересылки

(2) Через несколько секунд, если первый сервер пересылки не ответил, DNS-сервер запрашивает второго сервера пересылки

(3) Еще через +1 секунду, если второй сервер пересылки не ответил, DNS-сервер отправляет запрос третьему серверу пересылки

(4) В течение этого времени, после того как один из трех серверов пересылки ответит на запрос, в следующий раз запрос с этим DNS-суффиксом будет отправлен первым этому серверу пересылки.

Сервер Microsoft DNS поддерживает RTT. DNS-сервер использует (RTT) для выбора между полномочными серверами имен для одной и той же зоны. Время приема-передачи — это показатель того, сколько времени требуется удаленному серверу имен для ответа на запросы. Когда сервер имен должен выбрать, к какому из группы авторитетных серверов имен обращаться, он просто выбирает сервер с наименьшим временем приема-передачи.

-------Если мой ответ полезен для вас, не забудьте отметить его как ответ. Спасибо!------

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

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

Предпосылки и цели

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

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

< td>192.0.2.1
Роль IP-адрес
DNS-сервер
Клиент 192.0.2.100

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

Кэширующий DNS-сервер

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

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

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

Переадресация DNS-сервера

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

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

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

Установите Bind на DNS-сервере

Независимо от того, какой вариант конфигурации вы хотите использовать, первым шагом в реализации Bind DNS-сервера является установка фактического программного обеспечения.

Программное обеспечение Bind доступно в репозиториях Ubuntu по умолчанию, поэтому нам просто нужно обновить наш локальный индекс пакетов и установить программное обеспечение с помощью apt. Мы также включим документацию и некоторые общие утилиты:

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

Настроить в качестве кэширующего DNS-сервера

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

Файлы конфигурации Bind по умолчанию хранятся в каталоге /etc/bind . Перейдите в этот каталог сейчас:

Большинство файлов в этом каталоге нас не интересует. Основной файл конфигурации называется named.conf (named и bind — это два имени одного и того же приложения). Этот файл просто является источником файла named.conf.options, файла named.conf.local и файла named.conf.default-zones.

Для кэширующего DNS-сервера мы будем изменять только файл named.conf.options. Откройте это в текстовом редакторе с правами sudo:

С удаленными комментариями для удобочитаемости файл выглядит следующим образом:

Чтобы настроить кэширование, в первую очередь необходимо настроить список управления доступом или ACL.

Как DNS-сервер, который будет использоваться для разрешения рекурсивных запросов, мы не хотим, чтобы DNS-сервер использовался злоумышленниками. Атака, называемая атакой с усилением DNS, особенно опасна, поскольку она может привести к тому, что ваш сервер будет участвовать в распределенных атаках типа «отказ в обслуживании».

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

Размещение общедоступного рекурсивного DNS-сервера требует особых настроек и администрирования. Чтобы избежать возможности использования вашего сервера в злонамеренных целях, мы настроим список IP-адресов или сетевых диапазонов, которым мы доверяем.

Над блоком параметров мы создадим новый блок с именем acl. Создайте метку для группы ACL, которую вы настраиваете. В этом руководстве мы будем называть группу goodclients .

В этом блоке укажите IP-адреса или сети, которым должно быть разрешено использовать этот DNS-сервер. Поскольку и наш сервер, и клиент работают в одной и той же подсети /24, мы ограничим пример этой сетью. Мы также добавим localhost и localnet, которые попытаются сделать это автоматически:

Теперь, когда у нас есть ACL клиентов, для которых мы хотим разрешить запросы, мы можем настроить эти возможности в блоке параметров. В этом блоке добавьте следующие строки:

Мы явно включили рекурсию, а затем настроили параметр allow-query для использования нашей спецификации ACL. Мы могли бы использовать другой параметр, например, allow-recursion для ссылки на нашу группу ACL. Если присутствует и рекурсия включена, параметр allow-recursion определяет список клиентов, которые могут использовать рекурсивные службы.

Однако, если параметр allow-recursion не установлен, то Bind возвращается к списку allow-query-cache, затем к списку allow-query и, наконец, по умолчанию только к локальным сетям и локальным хостам. Так как мы настраиваем только кеширующий сервер (он не имеет собственных авторитетных зон и не пересылает запросы), список разрешенных запросов всегда будет применяться только к рекурсии. Мы используем его, потому что это наиболее общий способ указания ACL.

После внесения этих изменений сохраните и закройте файл.

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

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

Настроить в качестве пересылающего DNS-сервера

Если DNS-сервер переадресации лучше подходит для вашей инфраструктуры, мы можем легко настроить его вместо него.

Мы начнем с конфигурации, которую мы остановили в конфигурации сервера кэширования. Файл named.conf.options должен выглядеть так:

Мы будем использовать тот же список ACL, чтобы ограничить наш DNS-сервер определенным списком клиентов. Однако нам нужно изменить конфигурацию, чтобы сервер больше не пытался сам выполнять рекурсивные запросы.

Для этого мы не меняем рекурсию на no. Сервер пересылки по-прежнему предоставляет рекурсивные услуги, отвечая на запросы зон, для которых он не является полномочным. Вместо этого нам нужно настроить список серверов кэширования, на которые будут пересылаться наши запросы.

Это будет сделано в блоке опций <>. Во-первых, мы создаем блок внутри под названием пересылки, который содержит IP-адреса рекурсивных серверов имен, на которые мы хотим пересылать запросы. В нашем руководстве мы будем использовать общедоступные DNS-серверы Google (8.8.8.8 и 8.8.4.4):

После этого мы должны установить для директивы forward значение «только», поскольку этот сервер будет пересылать все запросы и не должен пытаться разрешать запросы самостоятельно.

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

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

Чтобы избежать этого, измените параметр проверки dnssec на «да» и явно включите dnssec:

Сохраните и закройте файл, когда закончите. Теперь у вас должен быть настроен пересылающий DNS-сервер. Перейдите к следующему разделу, чтобы проверить файлы конфигурации и перезапустить демон.

Проверьте свою конфигурацию и перезапустите привязку

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

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

Это легко сделать, набрав:

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

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

Убедившись, что в файлах конфигурации нет синтаксических ошибок, перезапустите демон Bind, чтобы изменения вступили в силу:

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

Теперь откройте новое окно терминала, чтобы настроить клиентские машины.

Настройка клиентского компьютера

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

Войдите на свой клиентский компьютер. Убедитесь, что используемый вами клиент был указан в группе ACL, которую вы установили для своего DNS-сервера. В противном случае DNS-сервер откажется обслуживать запросы клиента.

Нам нужно отредактировать файл /etc/resolv.conf, чтобы указать нашему серверу сервер имен. Внесенные здесь изменения будут действовать только до перезагрузки, что отлично подходит для тестирования. Если мы удовлетворены результатами наших тестов, мы можем сделать эти изменения постоянными.

Откройте файл с правами sudo в текстовом редакторе:

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

Сохраните и закройте файл.

Теперь вы можете проверить правильность обработки запросов с помощью некоторых распространенных инструментов.

Вы можете использовать команду ping для проверки возможности подключения к доменам:

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

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

Как видите, кешированный ответ работает значительно быстрее.

Мы также можем протестировать обратный поиск, используя найденный IP-адрес (в нашем случае 140.211.169.4) с опцией -x команды dig:

Как видите, обратный поиск также выполняется успешно.

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

Это указывает на то, что сервер пытается разрешить информацию IPv6, но сервер не настроен для IPv6. Вы можете решить эту проблему, указав Bind использовать только IPv4.

Для этого откройте файл /etc/default/bind9 с правами sudo:

Внутри измените параметр OPTIONS, включив в него флаг -4, чтобы заставить работать только IPv4:

Сохраните и закройте файл.

Перезапустите сервер:

Вы больше не должны видеть эти ошибки в журналах.

Сделать настройки DNS клиента постоянными

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

Если на клиентском компьютере работает Debian или Ubuntu, откройте файл /etc/network/interfaces с правами sudo:

Ищите параметр dns-nameservers. Вы можете удалить существующие записи и заменить их своим DNS-сервером или просто добавить свой DNS-сервер в качестве одного из вариантов:

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

Если клиент работает под управлением CentOS или Fedora, вместо этого вам нужно открыть файл /etc/sysconfig/network/network-scripts/ifcfg-eth0:

Внутри найдите строки, начинающиеся с DNS . Измените DNS1 на свой DNS-сервер. Если вы не хотите использовать другие DNS-серверы в качестве запасного варианта, удалите другие записи:

Сохраните и закройте файл, когда закончите. Ваш клиент должен использовать эти настройки при следующей загрузке.

Заключение

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

Если вы хотите создать DNS-сервер, являющийся доверенным для ваших доменных зон, вы можете настроить только доверенный DNS-сервер или объединить эти решения.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Серия руководств: Введение в управление DNS

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

системы доменных имен dns

Инструменты

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

По сути, DNS – это каталог имен, совпадающих с числами. Числа в данном случае — это IP-адреса, которые компьютеры используют для связи друг с другом. В большинстве описаний DNS используется аналогия с телефонной книгой, что подходит для людей старше 30 лет, которые знают, что такое телефонная книга.

Если вам меньше 30 лет, подумайте о DNS как о списке контактов вашего смартфона, в котором имена людей сопоставляются с их номерами телефонов и адресами электронной почты. Затем умножьте этот список контактов на всех остальных на планете.

Краткая история DNS

Очевидно, что это была неприемлемая ситуация по мере роста Интернета, не в последнюю очередь потому, что Feinler обрабатывал запросы только до 18:00. по калифорнийскому времени и взял отпуск на Рождество. В 1983 году Полу Мокапетрису, исследователю Университета Южной Калифорнии, было поручено найти компромисс между многочисленными предложениями по решению проблемы. Он практически проигнорировал их все и разработал свою собственную систему, которую назвал DNS. Хотя с тех пор он, очевидно, сильно изменился, на фундаментальном уровне он по-прежнему работает так же, как и почти 40 лет назад.

Как работают DNS-серверы

Каталог DNS, имя которого совпадает с номером, не находится в одном месте в каком-то темном уголке Интернета. С учетом того, что на конец 2017 года было зарегистрировано более 332 миллионов доменных имен, один каталог был бы действительно очень большим. Как и сам Интернет, каталог распространяется по всему миру и хранится на серверах доменных имен (обычно называемых для краткости DNS-серверами), которые регулярно взаимодействуют друг с другом для предоставления обновлений и избыточности.

Авторитетные DNS-серверы и рекурсивные DNS-серверы

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

DNS-серверы и IP-адреса

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

Что такое кэширование DNS?

Как мне найти свой DNS-сервер?

Могу ли я использовать DNS 8.8.8.8?

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

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

Как DNS повышает эффективность

Поскольку DNS работает уже более 30 лет, большинство людей считают это само собой разумеющимся. Безопасность также не учитывалась при создании системы, поэтому хакеры в полной мере воспользовались этим, создавая различные атаки.

Атаки отражения DNS

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

Отравление кеша DNS

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

Исчерпание ресурсов DNS

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

Что такое DNSSec?

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

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

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

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

По мере того, как создается все больше доменных имен и все больше устройств продолжают подключаться к сети через устройства Интернета вещей и другие «умные» системы, а также по мере того, как все больше сайтов переходят на IPv6, будет требоваться поддержание здоровой экосистемы DNS. Рост объемов больших данных и аналитики также приводит к увеличению потребности в управлении DNS.

SIGRed: обнаружена уязвимость DNS, связанная с червями

Недавно мир внимательно изучил тот хаос, который могут вызвать слабые места в DNS после обнаружения уязвимости в DNS-серверах Windows. Потенциальная дыра в безопасности, получившая название SIGRed, требует сложной цепочки атак, но может использовать незакрытые DNS-серверы Windows для потенциальной установки и выполнения произвольного вредоносного кода на клиентах. Кроме того, эксплойт является «червячным», что означает, что он может распространяться с компьютера на компьютер без вмешательства человека. Уязвимость была сочтена настолько тревожной, что федеральным агентствам США дали всего несколько дней на установку исправлений.

Это решение вызывает споры. Пол Викси, который сделал большую часть ранней работы над протоколом DNS еще в 1980-х годах, называет этот шаг «катастрофой» для безопасности: например, корпоративным ИТ-специалистам будет гораздо труднее отслеживать или направлять трафик DoH, который проходит через их сеть. Тем не менее, Chrome вездесущ, и DoH скоро будет включен по умолчанию, так что посмотрим, что нас ждет в будущем.

(Кит Шоу бывший старший редактор Network World и отмеченный наградами писатель, редактор и рецензент продуктов, который написал для многих публикаций и веб-сайтов по всему миру.)

(Джош Фрулингер — писатель и редактор, живет в Лос-Анджелесе.)

Присоединяйтесь к сообществам Network World на Facebook и LinkedIn, чтобы комментировать самые важные темы.

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