Как запустить собственный DNS-сервер в локальной сети — CloudSavvy IT

Стилизованная иллюстрация "DNS" текст на синем фоне схемыjivacore / Shutterstock.com

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

Что такое DNS?

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

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

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

Зачем нужен собственный DNS?

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

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

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

DNS с Dnsmasq

Dnsmasq — это легкий DNS-сервер, входящий в состав большинства дистрибутивов Linux. Кроме того, его очень просто настроить.

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

Схема маршрутизации будет выглядеть так:

  • Сетевой маршрутизатор получает запрос от одного из ваших подключенных устройств. Маршрутизатор будет настроен на использование хоста Dnsmasq в качестве DNS-сервера.
  • Dnsmasq проверит, есть ли у него определенный маршрут для доменного имени, например, от веб-сервера до 192.168.0.101. Если запрос был для http: // web-server / example-page, он отправит 192.168.0.101 обратно на маршрутизатор.
  • Когда Dnsmasq не имеет подходящего маршрута, он пересылает DNS-запрос в Google 8.8.8.8, обеспечивая разрешение в общедоступном Интернете. Это гарантирует, что вы по-прежнему можете выходить в более широкую сеть при использовании собственного DNS.

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

Начиная

Мы предполагаем, что у вас уже есть работающая машина Linux, готовая для размещения Dnsmasq. Dnsmasq не особо ресурсоемкий — если у вас мало клиентских устройств, он легко будет работать на Raspberry Pi.

У вашего хозяина должен быть Статический IP назначенный. С этого момента IP 192.168.0.1 относится к серверу Dnsmasq.

Убедитесь, что Dnsmasq установлен:

# Предполагая, что система Debian apt update apt install dnsmasq

Файл конфигурации Dnsmasq обычно находится в /etc/dnsmasq.conf. Это предварительно заполнено начальными настройками. Для эффективной работы Dnsmasq в сценарии локальной сети необходимо внести некоторые изменения. Запустите sudo nano /etc/dnsmasq.conf, чтобы открыть файл, затем используйте сочетание клавиш Ctrl + W, чтобы найти и раскомментировать следующие строки:

# домен-необходим # фиктивный-приват

Удалите символ # в начале каждой строки. Вот что позволяют эти настройки:

  • требуется домен — это не позволяет Dnsmasq перенаправлять локальные имена без доменной части на вышестоящий DNS-сервер. В нашей установке это означает, что example.com может быть разрешен через Google, а example или веб-сервер — нет. Он резервирует имена без точки для вашей локальной сети.
  • bogus-priv — предотвращает пересылку DNS-запросов обратного просмотра вышестоящему DNS-серверу. Это означает, что внутренние IP-адреса, такие как 192.168.0.101, никогда не будут доступны Google. Если этого не сделать, это может непреднамеренно передать архитектуру вашей внутренней сети вашему вышестоящему провайдеру.

Чтобы настроить исходящий DNS-сервер, добавьте новую строку в файл конфигурации:

сервер = 8.8.8.8 сервер = 4.4.4.4

Это указывает Dnsmasq пересылать неразрешенные запросы в 8.8.8.8. Если этот сервер недоступен, вместо него будет использоваться 4.4.4.4. Эти адреса являются первичными и вторичными преобразователями для службы DNS Google.

Затем настройте размер кеша. По умолчанию это относительно низкое значение — 150 кэшированных запросов. Увеличение этого параметра позволит Dnsmasq обрабатывать больше запросов из кеша, уменьшая задержку в сети. Найдите строку размера кеша, раскомментируйте ее и измените ее значение:

размер кеша = 1000

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

Сопоставление имен хостов IP-адресам

Есть несколько разных способов сопоставить имена хостов с их IP-адресами. Самый простой — добавить записи в существующий файл вашего сервера / etc / hosts. Dnsmasq автоматически загружает правила из этого файла как часть своей конфигурации по умолчанию.

Откройте / etc / hosts и добавьте свои маршруты в конец файла. Сначала идет IP-адрес, а затем имя, которое нужно назначить:

192.168.0.101 веб-сервер 192.168.0.105 gateway.lan

Эти строки означают, что любой запрос к веб-серверу http: // будет направлен на адрес 192.168.0.101, а адрес http: //gateway.lan — на адрес 192.168.0.5. Сохраните и закройте файл, когда закончите сопоставление устройств.

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

Перезапустите Dnsmasq, чтобы применить все ваши изменения:

перезапуск службы sudo dnsmasq

Убедитесь, что сервер работает правильно:

статус службы sudo dnsmasq

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

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

вы google.com @localhost вы gateway.lan @localhost

Обе эти команды должны отображать IP-адрес в РАЗДЕЛЕ ОТВЕТОВ. В случае gateway.lan результат должен быть 192.168.0.5 в соответствии с правилом маршрутизации, установленным в / etc / hosts. Часть команд @localhost инструктирует dig запросить ваш локальный DNS-сервер.

Настройка вашей сети

Последний шаг — настроить сетевой маршрутизатор для поиска DNS через сервер Dnsmasq. В шаги для этого будет варьироваться в зависимости от используемого вами оборудования маршрутизации.

Как только вы найдете страницу с правильными настройками, установите IP-адрес вашего сервера (192.168.0.1 в этом руководстве) в качестве основного DNS-сервера маршрутизатора. Рекомендуется настроить общедоступного поставщика DNS, например Google 8.8.8.8, в качестве вторичного сервера. Это гарантирует, что у вас по-прежнему будет доступ в Интернет, если ваш DNS-сервер выйдет из строя и отключится.

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

Заключение

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *