Как добавить dns сервер linux
Перейти к содержимому

Как добавить dns сервер linux

  • автор:

Updating Ubuntu/Debian (Both servers LNS1 and LNS2)

Ahmed.A

Before starting it is always a good practice to update your Linux system. To do this just open up your terminal and type the following commands:

Install Bind9 (Both servers LNS1 and LNS2)

The next step is to install Bind9 along with some utilities.

Configuring a static IP address (Both servers LNS1 and LNS2)

The next logical step is to set a static IP address. The first thing we will do is to type the following command to find out the name of the network interface we are using.

Open the YAML configuration file for your netplan by typing the command below.

Enter the information below but customize it to fit your network information. I.E your interface name, IP address etc.

Now let’s apply this netplan by typing the command below.

Finally restart your network manager by using the command below.

Changing the hosts file (Both servers LNS1 and LNS2)

In this step we will change the hosts file to include the fully qualified name to this Ubuntu machine. The fully qualified name is the machine name followed by the domain name. To do so first we open the hosts file. I will be using Nano text editor.

Once the file opens change the host and IP name with your own IP and hostname along with the fully qualified name (see figure 1 and 2).

Next we will restart our server for the changes to take effect.

Changing the DNS server (Both servers LNS1 and LNS2)

In this step we will point our Ubuntu machine to use itself as a DNS server. To do this open /etc/resolv.conf using your favourite text editor, I will be using Nano. After this just add the IP address of your Linux machine (see figure 3 and 4).

An issue that I ran to from time to time when changing my DNS server in Ubuntu, is that it reverts to using localhost.

A simple way to get passed this is removing the resolv.conf file > create it again, add the name server info to it, then deny access. Here are the commands below.

Editing Bind9 options file (Master Server)

Now that we have laid the groundwork for our Bind DNS server, let’s start editing the configuration.

Start with editing the named.conf.options file. In this file we will add what network/IP addresses can send a query to this server by defining an ACL (Access control list). We will also disable the recursion since we will only be using this server as an authoritative DNS server.

Open the Bind options file using the command below.

Edit the configuration below to fit your environment.

You can check the syntax using the following command. If everything is correct, you should get no error.

The next step is to edit the named.conf.local file to add some details about the zone we will create. To do so open the file using the command below:

Edit the details below to fit your infrastructure (zone name and secondary server IP address), then add those details to your file and save it.

Make sure to add the correct path for your master zone. I will create the zone within a folder called zones, that I will create in the next step.

The next step is to create the zones folder and then the zone file. To do so use the following commands. Note that you should edit the file name to fit your own zone name, and make sure to update the name in the configurations above as well.

The next step is to edit the file and configure our master DNS zone, along with adding some records for testing purposes.

To open the file, use the following command.

Add the following configuration to your own file, keeping in mind that you need to change the details to fit your environment.

P.S: Make sure to increment the serial by one every time you make a change.

The next step is to test the zone file using the named-checkzone utility. If there are no errors then your configurations are correct.

The last step is to restart the service. To do so type the command below.

That’s it for the master server.

Configuring the slave/secondary Bind DNS server

Following the steps above so far: the master server should be configured completely and the secondary/slave dns server should have a static IP address and Bind9 already installed.

The next step is to configure the secondary server to receive a copy of the master zone.

Much like the master server, the first thing we will configure is the Bind9 named.conf.options file. We will open the file using the following command.

Edit the following configuration to fit your environment.

You can check the syntax using the following command. If everything is correct, you should get no error.

The next step is to edit the file named.conf.local to add the zone information. To do so, use the following command.

Edit the following information to fit your environment, then add it to the file.

Let’s check the syntax again using the following command.

Finally, let’s restart the DNS server.

Now let’s check if the zone file has been transfered. This is usally transfered to the location “/var/cache/bind”. I will list all the files within that folder and do a search text on the word “linux” that is a part of my domain to list all files that includes that word. Make sure to edit the command below to fit your domain name.

If all went well, you should get a similar result as below, showing you that a copy of your master zone file exists on the secondary server.

That’s it. I hope this was relatively painless. Should you run into problems please do not hesitate to ask in the comments below.

Как настроить простой DNS-сервер для локальной сети

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

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

Далее будем считать, что имеется локальная сеть, состоящая из нескольких хостов. Локальная сеть настроена, сетевой доступ между хостами имеется. На хостах установлен Ubuntu 18.04.4 LTS (для других версий не проверялось).

Шаг 1. Установка необходимых пакетов

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

Установите Dnsmasq:

sudo apt-get install dnsmasq

При установке выведутся следующие ошибки:

failed to create listening socket for port 53: Address already in use
FAILED to start up
Failed to start dnsmasq — A lightweight DHCP and caching DNS server.

Это нормально! Мы ещё не настроили сервер – ошибка происходит из-за этого.

Установите resolvconf:

sudo apt-get install resolvconf

При установке ошибки о невозможности запуска Dnsmasq отобразятся ещё раз. Это нормально.

Пакет resolvconf устанавливается для того, чтобы в файл /etc/resolv.conf при перезапуске компьютера автоматически записывалась строчка nameserver 127.0.0.1 . Эта строчка показывает, по какому адресу необходимо выполнить DNS-запросы для определения IP адресов доменов.

Почему просто не прописать нужный адрес вручную

При рестарте системы файл /etc/resolv.conf автоматически пересоздаётся. Поэтому если прописать в него нужный адрес вручную, то изменения окажутся стёртыми после перезапуска.

По умолчанию после перезапуска в этот файл прописывается адрес 127.0.0.53 , который используется сервисом systemd-resolve . Этот сервис осуществляет определение IP-адресов доменов для приложений, работающих на том же хосте, на котором запущен сервис. Но мы планируем перестать использовать этот сервис и начать использовать dnsmasq .

Необязательный шаг. Установите net-tools:

sudo apt-get install net-tools

Эта команда устанавливает набор инструментов, которые пригодятся при тестировании.

Шаг 2. Настройка пакетов

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

sudo nano /etc/dnsmasq.conf

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

Эта настройка выключает загрузку настроек из /etc/resolv.conf . Все настройки будут браться из редактируемого файла /etc/dnsmasq.conf . Это сильно упрощает конфигурацию Dnsmasq’а, поскольку файл /etc/resolv.conf автоматически пересоздаётся при рестарте системы.

8.8.8.8 — это адрес DNS-сервера Гугл. Этот адрес можно заменить на любой другой адрес публичного DNS-сервера. Например, на адрес DNS-сервера вашего провайдера или ранее используемого DNS-сервера.

Запросы, которые не сможет обработать Dnsmasq будут направлены на этот сервер.

Эта настройка позволит осуществлять запросы к Dnsmasq’у с других хостов.

Задаёт режим, при котором Dnsmasq не осуществляет привязку к интерфейсам, по которым не должна осуществляться обработка запросов. Без этой настройки в предлагаемом варианте конфигурации сервер не работает.

Добавьте в файл /etc/hosts необходимые домены и их IP адреса.

sudo nano /etc/hosts

Обратите внимание, что доменные имена, состоящие из одного имени без точки (например, myserver ), по умолчанию не передаются в DNS-сервер. Запросы по таким именам по умолчанию обрабатываются только через локальный файл /etc/hosts . Поэтому если в файле /etc/hosts на хосте с сервисом Dnsmasq прописать следующую строку: 2.3.4.5 myserver , то IP-адрес домена myserver будет определяться только на хосте с сервисом Dnsmasq. На других хостах IP-адрес данного домена определяться не будет, поскольку запросы на хост с Dnsmasq’ом отправляться не будут.

Опциональный шаг. Если вы не хотите, чтобы systemd-resolve слушал адрес 127.0.0.53:53 , то выполните команду:

sudo nano /etc/systemd/resolved.conf

В открывшемся файле пропишите строчку:

Адрес 127.0.0.53:53 в предлагаемом варианте конфигурации не используется и его можно выключить.

Шаг 3. Настройка используемых DNS-серверов

Данная настройка выполняется на всех хостах-клиентах, с которых будут отправляться запросы на хост с сервисом Dnsmasq.

Проще всего настроить используемые DNS-сервера в графическом интерфейсе. Укажите адрес хоста, на котором установлен Dnsmasq, первым в списке:

Шаг 4. Локальное тестирование DNS-сервера

Проверку настроек можно и не делать. Но если вам интересно узнать, всё ли работает правильно, то выполните следующие команды на хосте с сервисом Dnsmasq.

Проверьте, что в файле /etc/resolve.conf прописан адрес 127.0.0.1 :

sudo netstat -tulpen

Вы должны увидеть, что адрес 0.0.0.0:53 занят Dnsmasq’ом, а адрес 127.0.0.53:53 не фигурирует в списке.

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

ya.ru. 220 IN A 87.250.250.242

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

myserver.tst. 0 IN A 1.2.3.4

Шаг 5. Тестирование DNS-сервера с других хостов

Теперь можно проверить работу DNS-сервера с других хостов.

Выполните пункты 3 и 4 из предыдущего раздела. Вывод в консоль должен быть аналогичен результатам, указанным в предыдущем разделе.

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

Следующая команда в режиме реального времени выводит в консоль все запросы, выполняемые на порт 53. Это помогает определить факт выполнения запросов.

sudo tcpdump -l port 53

Данную команду логично выполнять в другом терминале – не в том, в который вводятся команды, подлежащие проверке.

Обратите внимание, что DNS-запросы кэшируются и сервисом systemd-resolved, и сервисом dnsmasq. Для сброса кэша проще всего перезапустить используемый сервис:

sudo systemctl restart dnsmasq (на серверном хосте)

sudo systemctl restart systemd-resolved (на клиентских хостах)

Заключение

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

Настройка DNS в Linux

Настройка DNS в Linux

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

Настраиваем DNS в Linux

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

Способ 1: Меню графической оболочки

Этот способ в первую очередь нацелен на начинающих пользователей, поскольку чаще всего в Linux их пугает необходимость выполнять каждое действие, вводя команды в консоль. Уже давно практически во всех окружениях присутствуют соответствующие пункты, позволяющие реализовывать различные конфигурации без единого обращения к «Терминалу». К DNS это тоже относится. Давайте посмотрим, как производится данное редактирование в стандартной графической оболочке Ubuntu.

Открытие панели задач для перехода к конфигурации сети при настройке DNS в Linux

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

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

Способ 2: Редактирование конфигурационных файлов

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

  1. Запустите консоль так, как это было показано ранее, или используйте любой удобный способ, например, созданный значок на панели «Избранное». Запуск терминала через избранное для настройки DNS в Linux
  2. Для начала просмотрите список существующих сетевых интерфейсов, чтобы проверить файл для конфигурации. Введите ls /sys/class/net/ и нажмите на Enter. Команда для просмотра названий сети при настройке DNS в Linux
  3. Проверьте, присутствует ли здесь ваше название интерфейса. По умолчанию оно выглядит так: enp0s3. В случае отсутствия подобной строки придется добавить ее самостоятельно, чему и будут посвящены следующие шаги. Пропустите их, если имя присутствует. Просмотр текущего названия сети при конфигурации DNS в Linux
  4. Далее дело будет касаться взаимодействия с конфигурационными текстовыми файлами. Для этого вы можете использовать любой редактор, установленный по умолчанию, например, vi. Однако начинающим юзерам не всегда удобно управлять подобным софтом. В таких ситуациях мы советуем установить более подходящее решение. Пропишите sudo apt install nano и нажмите на Enter. Установка нового текстового редактора для дальнейшей конфигурации DNS в Linux
  5. Подтвердите свои намерения добавить софт, а после успешной инсталляции переходите к работе с файлами. Введите команду sudo nano /etc/network/interfaces и затем подтвердите ее. Открытие конфигурационного файла для ввода имени сети при настройке DNS в Linux
  6. Вставьте строки auto enp0s3 и iface enp0s3 inet dhcp , чтобы задать конфигурацию интерфейса. Ввод имени сети и стандартного DNS в Linux через конфигурационнй файл
  7. Используйте комбинацию Ctrl + O для сохранения настроек. В будущем запомните, что знак ^ обозначает Ctrl, то есть, например, выход из редактора осуществляется через Ctrl + X. Сохранение изменений и выход из текстового редактора при настройке DNS в Linux
  8. При сохранении не изменяйте имя файла для записи, а просто нажимайте на Enter. Сохранение имени файла при настройке DNS в Linux
  9. Следом в этом же файле введите dns-nameserver 8.8.8.8 для установки DNS от Google, и уже после этого можете закрыть данный объект. Команда для определения DNS в первом конфигурационном файле Линукс
  10. Далее понадобится настроить другой элемент, перейдите к нему через sudo nano /etc/dhcp/dhclient.conf . Переход к конфигурации второго файла для изменения DNS в Linux
  11. При запросе пароля суперпользователя введите его. Учтите, что символы при таком методе набора не отображаются в целях безопасности. Ввод пароля суперпользователя для доступа к файлу при настройке DNS в Linux
  12. Опуститесь в самый низ по содержимому и вставьте строку supersede domain-name-servers 8.8.8.8 . Затем сохраните изменения и закройте файл. Вставка команды для второго конфигурационного файла DNS в Linux
  13. Осталось отредактировать последние параметры в sudo nano /etc/resolvconf/resolv.conf.d/base . Запуск третьего конфигурационного файла DNS в Linux
  14. Вставьте строку nameserver 8.8.8.8 , определяющую DNS. Перед выходом не забудьте применить изменения в этом же файле. Изменение третьего конфиуграционного файла DNS в Linux
  15. Все изменения DNS вступят в силу сразу же после перезагрузки сети. Осуществляется это командой sudo systemctl restart networking . Перезапуск сети после изменений DNS в Linux
  16. Появившаяся пустая строка для ввода означает, что перезапуск прошел успешно. Успешный перезапуск сети после изменений настроек DNS в Linux

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

Настройка DNS в Ubuntu

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

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

Настройка DNS в Ubuntu через GUI

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

Этот способ до сих пор работает, но в нем вы можете настроить DNS на LiveCD, или до перезагрузки. После перезагрузки все настройки собьются и придется все делать заново. Поэтому, чтобы все сохранилось нужно выполнять все действия через интерфейс NetworkManager. Сначала откройте контекстное меню для значка сети на панели и выберите «Изменить подключения»:

Выберите ваше подключение и нажмите «Изменить»:

В открывшемся окне перейдите на вкладку «Параметры IPv4»:

Затем, в поле «Способ настройки» выберите «Автоматически (DHCP, только адрес)»:

Теперь немного ниже появиться поле «Серверы DNS», где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:

Поле этого нажмите «Сохранить» и «Закрыть». Теперь можете переподключитесь к этому соединению и можете проверять текущий DNS сервер:

Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.

Настройка DNS через терминал Ubuntu

В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:

Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:

sudo vi /etc/network/interfaces

auto enp0s3
iface enp0s3 inet dhcp

Затем, добавьте в эту секцию строчку:

Здесь адрес 8.8.8.8 — это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:

sudo vi /etc/dhcp/dhclient.conf

supersede domain-name-servers 8.8.8.8

Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:

sudo vi /etc/resolvconf/resolv.conf.d/base

Чтобы настройки вступили в силу необходимо перезапустить сеть:

sudo systemctl restart networking

Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:

Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

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

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