Как установить и настроить собственный DNS сервер на своем VPS / VDS сервере с Ubuntu
2024-07-19 10:44:09
В этой статье мы опишем настройку установку и настройку своего собственного DNS сервера, используя приложение для BIND9. Допустим у нас есть домен my-some-domain.ru и 2 сервера с IP-адресами 217.28.222.130 и 217.28.222.131. На оба этих сервера мы установим и настроим приложение bind9.
Далее мы создадим DNS записи ns1.my-some-domain.ru и ns2.my-some-domain.ru и привяжем их к нашим ip адресам в панели регистратора доменных имен.
Подключимся к нашему первому серверу 217.28.222.130 и установим и настроим Bind9.
-
Установите BIND9:
Если у вас не установлен BIND9, установите его. Для Ubuntu/Debian это можно сделать с помощью команды:
sudo apt-get update sudo apt-get install bind9 bind9utils bind9-doc
-
Настройте файл конфигурации BIND9:
Откройте файл конфигурации BIND9 с помощью любого текстового редактора:
sudo nano /etc/bind/named.conf.local
Добавьте следующие записи:
zone "my-some-domain.ru" { type master; file "/etc/bind/db.my-some-domain.ru"; allow-transfer { 217.28.222.131; }; };
Параметр "type master" говорит о том, что этот DNS сервер будет ведущим (основным). То есть именно на него мы будем добавлять записи. А все подчиненные DNS сервера будут копировать настройки с него в случае их изменений. В параметры allow-transfer укажем ip адрес нашего второго DNS сервера, который будет являться ведомым (slave).
-
Создайте файл зоны:
Создайте файл зоны для вашего домена:
sudo cp /etc/bind/db.local /etc/bind/db.my-some-domain.ru
Откройте файл и измените соответствующие строки на:
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.my-some-domain.ru. admin.my-some-domain.ru. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.my-some-domain.ru. @ IN NS ns2.my-some-domain.ru. @ IN A 217.28.222.130 ns1 IN A 217.28.222.130 ns2 IN A 217.28.222.131 ; Указываем IP адрес второго DNS сервера www IN A 217.28.222.130
Файлы своего сайта я разместил на том же сервере, поэтому сразу добавил A запись с тем же ip адресом. Сохраните и закройте файл.
-
Проверьте конфигурацию:
Проверьте конфигурацию BIND9 на наличие синтаксических ошибок:
sudo named-checkconf
Если вы видите ошибки, исправьте их и повторите команду.
- Если вы используете firewall - добавьте правило:
sudo ufw allow Bind9
-
Перезапустите BIND9:
Перезапустите BIND9 для применения изменений:
sudo service bind9 restart
-
Проверьте зону:
Проверьте, что зона была создана правильно:
sudo named-checkzone my-some-domain.ru /etc/bind/db.my-some-domain.ru
Если вы видите ошибки, исправьте их и повторите команду.
-
Теперь нужно настроить второй сервер (slave). Подключаемся к серверу 217.28.222.131, производим установку bind9, как описано в шаге 1. Затем настраиваем его конфигурацию, но в отличии от первого сервера - делаем его slave:
zone "my-some-domain.ru" { type slave; file "/var/lib/bind/slaves/db.my-some-domain.ru"; masters { 217.28.222.130; }; };
Сам файл создавать не надо, но нужно создать папку slaves по указанному пути и дать ей права. Для этого выполним команды:
sudo mkdir /var/lib/bind/slaves/ sudo chmod -R g+w /var/lib/bind/slaves/
После этого перезагружаем bind9 командой:
sudo service bind9 restart
Заходим в папку /var/lib/bind/slaves/ и убеждаемся, что файл с настройками зоны для домена появился и его содержимое совпадает с аналогичным файлом на master сервере. Еще рекомендую выполнить команду:
sudo service bind9 status
После выполнения команды отобразятся логи сервиса - следует убедиться, что в них нет ошибок.
-
Проверьте работоспособность DNS:
Убедитесь, что ваш DNS сервер работает правильно, используя nslookup или dig:
dig @217.28.222.130 my-some-domain.ru
Вы должны увидеть IP-адрес вашего сайта в ответе.
-
Теперь заходим в панель управления регистратора доменных имен и привязываем наши ns1 и ns2 сабдомены к ip адресам наших DNS серверов.
После чего, спустя некоторое время наш сайт будет доступен (если у нас настроен веб сервер).