Установка и настройка DNS в Ubuntu
Установка и настройка DNS сервера Ubuntu | Информационный портал К2®
Для начала нужно установить самые последние обновления системы
sudo apt-get update sudo apt-get upgrade
После этого установим службу DNS сервера Bind9
Следующим шагом, генерируем ключ для обновления DNS записей
Key: 4GD8OIb8pZk4vAueACAfUQ==
Настраиваем DNS сервер Bind9
Открываем файл конфигурации
sudo nano /etc/bind/named.conf.options
sudo nano /etc/bind/named.conf.options |
Добавим следующий код:
forwarders { 8.8.8.8; 8.8.4.4; }; listen-on { 127.0.0.1; 192.168.0.1; };
- forwaders – вышестоящий dns сервер (сервер гугла), используется если url запроса не найден в нашей базе.
- listen-on – адреса через которые будет обслуживаться наш DNS сервер.
Сохраняем (Ctrl+O) и закрываем (Ctrl+X) файл.
Перезапустим bind9
sudo service bind9 restart
sudo service bind9 restart |
Теперь можно протестировать работу нашего DNS сервера
Добавим в фал /etc/resolv.conf строчку с нашим DNS сервером (так как файл /etc/resolv.conf при перезагрузке меняет значения на дефолтные, добавить запись нужно в тот файл из которого будут браться дефолтные значения)
sudo nano /etc/resolvconf/resolv.conf.d/tail
sudo nano /etc/resolvconf/resolv.conf.d/tail |
в этот файл пишем следующее:
domain lab.loc search lab.loc nameserver 127.0.0.1
Сохраняем файл, закрываем его и перезагружаем сервер. После перезагрузки протестируем работу сервера, выполните следующую команду:
в ответ вы получите ответ с временем выполнения запроса (выделено цветом)
Как видите запрос был выполнен за 284 мсек. Теперь еще раз выполним этот же запрос и проверим время запроса
Повторный запрос был выполнен за 7 мсек! Отлично! Кэширование запросов работает. Двигаемся дальше.
Настройка основного DNS сервера
Исходные данные:
- Доменное имя – lab.loc
- IP сервера – 192.168.0.1
- Имя сервера – srv-01.lab.loc
Нам нужно будет указать две зоны (прямого и обратного просмотра) и прописать их в конфигурации сервера.
Я начну с конца и укажу настройки зон в файле конфигурации. Открываем его
sudo nano /etc/bind/named.conf.local
sudo nano /etc/bind/named.conf.local |
и вставляем следующее:
key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret «4GD8OIb8pZk4vAueACAfUQ==»; }; zone «lab.loc» { type master; file «/var/lib/bind/db.lab.loc»; allow-update { key DHCP_UPDATER; }; }; //reverse zone zone «0.168.192.in-addr.arpa» { type master; file «/var/lib/bind/db.192»; allow-update { key DHCP_UPDATER; }; };
algorithm HMAC-MD5.SIG-ALG.REG.INT; secret «4GD8OIb8pZk4vAueACAfUQ==»; file «/var/lib/bind/db.lab.loc»; allow-update { key DHCP_UPDATER; };zone «0.168.192.in-addr.arpa» { file «/var/lib/bind/db.192»; allow-update { key DHCP_UPDATER; }; |
- key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ)
- zone «lab.loc» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
- zone «0.168.192.in-addr.arpa» — создание зоны обратного просмотра
Теперь создадим сами файлы в которых будут храниться данные зоны lab.loc. Для этого скопируем образец файла прямого просмотра:
sudo cp /etc/bind/db.local /var/lib/bind/db.lab.loc
sudo cp /etc/bind/db.local /var/lib/bind/db.lab.loc |
откроем его
sudo nano /var/lib/bind/db.lab.loc
sudo nano /var/lib/bind/db.lab.loc |
и внесем правки как у меня:
; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA srv-01.lab.loc. root.srv-01.lab.loc. ( 20141126 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS srv-01.lab.loc. @ IN A 192.168.0.1 @ IN AAAA ::1 srv-01 IN A 192.168.0.1
; BIND data file for local loopback interface@ IN SOA srv-01.lab.loc. root.srv-01.lab.loc. ( 604800 ) ; Negative Cache TTL |
Теперь скопируем файл зоны обратного просмотра:
sudo cp /etc/bind/db.127 /var/lib/bind/db.192
sudo cp /etc/bind/db.127 /var/lib/bind/db.192 |
откроем его
sudo nano /var/lib/bind/db.192
sudo nano /var/lib/bind/db.192 |
Вносим в него следующее:
; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA srv-01.lab.loc. root.srv-01.lab.loc. ( 20141126 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS srv-01. 1 IN PTR srv-01.lab.loc.
; BIND reverse data file for local loopback interface@ IN SOA srv-01.lab.loc. root.srv-01.lab.loc. ( 604800 ) ; Negative Cache TTL |
Сохраняем, закрываем, перезапускаем Bind9
sudo /etc/init.d/bind9 restart
sudo /etc/init.d/bind9 restart |
Сохраняем, закрываем, проверяем работу DNS сервера:
в ответ вы должны увидеть следующее: Как видите зона прямого просмотра работает, нам показался адрес проверяемого имени. Теперь проверим работу зоны обратного просмотра
В ответ должны получить следующее:
Как видите в ответ мы получили имя сервера по его адресу. Если у вас в ответ на nslookup так же все корректно отображается, значит вы все сделали правильно! Если нет, проверяйте что сделали не так.
Настройка динамического обновления зон DHCP сервером
Если вы вместе со мной настраивали сервер с самого начала, тогда у вас не должно возникнуть трудностей. Откроем файл /etc/dhcp/dhcpd.conf
sudo nano /etc/dhcp/dhcpd.conf
sudo nano /etc/dhcp/dhcpd.conf |
Проверяем что опция option domain-name содержит имя домена lab.loc, строку ddns-update-style none; закомментировать. Теперь добавим строчку update-static-leases on; – она отвечает за создание зон для клиентов у которых статичный IP адрес. Для автоматизации этого процесса, добавим следующий код:
ddns-update-style interim; update-static-leases on; key DHCP_UPDATER { algorithm hmac-md5; secret «CO0WnumqxGoxqGEDjaR3YA==»; } zone lab.loc. { primary 127.0.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; }
ddns-update-style interim;secret «CO0WnumqxGoxqGEDjaR3YA==»;zone 0.168.192.in-addr.arpa. { |
где secret это тот самый код который мы делали вначале статьи.
Вот пример моего файла /etc/dhcp/dhcpd.conf:
default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.254; option domain-name-servers 192.168.0.1; option domain-name «lab.loc»; option routers 192.168.0.1; option broadcast-address 192.168.0.255; default-lease-time 604800; max-lease-time 604800; } ddns-update-style interim; update-static-leases on; key DHCP_UPDATER { algorithm hmac-md5; secret «LUH8l/F2OtaVrA6eSffJog==»; } zone lab.loc. { primary 127.0.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; } log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {range 192.168.0.10 192.168.0.254;option domain-name-servers 192.168.0.1;option domain-name «lab.loc»;option routers 192.168.0.1;option broadcast-address 192.168.0.255;default-lease-time 604800; max-lease-time 604800; }ddns-update-style interim;secret «LUH8l/F2OtaVrA6eSffJog==»;zone 0.168.192.in-addr.arpa. { |
Больше никакие настройки DHCP не трогаем, перезапускаем bind9 и dhcp
sudo /etc/init.d/bind9 restart
sudo /etc/init.d/bind9 restart |
sudo /etc/init.d/isc-dhcp-server restart
sudo /etc/init.d/isc-dhcp-server restart |
Теперь нужно проверить как все это дело работает “в бою”. Запускаем клиентскую машину, которая находиться в сети с сервером. После включения машина получит IP адрес от DHCP сервера, а DHCP сервер создаст запись вроде klient-pc.lab.loc.
На запрос nslookup yos-pc (yos-pc это имя клиентской машины), мы должны увидеть ответ от сервера
Как видите по скриншоту, работает и прямой и обратный запросы к DNS.
После перезагрузки сервера, можно посмотреть на файлы прямого и обратного просмотра, в них вы увидите записи о новых машинах, вот пример моего файла, после перезагрузки сервера
Установка и настройка DNS сервера Ubuntu
Для начала нужно установить самые последние обновления системы
sudo apt-get update sudo apt-get upgrade
После этого установим службу DNS сервера Bind9
sudo aptitude install bind9
после установки службы, она автоматически запуститься
Следующим шагом, генерируем ключ для обновления DNS записей
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER
выводим его на экран
cat Kdhcp_updater.*.private|grep Key
на экране вы должны увидеть ключ, что то подобно этому:
Key: 4GD8OIb8pZk4vAueACAfUQ==
Установка DNS сервера на Ubuntu 16.04
Сегодня установим DNS сервер bind9 с последующей его настройкой. Так же разберем настройку двух зон: зона прямого и зона обратного просмотров.
DNS – это система доменных имен для преобразования имени в ip адреса компьютера и наоборот.
Зная имя компьютера, вам не нужно запоминать его ip адрес. Простыми словами набирая адрес интернет странички в Вашем браузере DNS сервер всемирной паутины преобразует его в ip-адрес хостинга на котором расположен данный домен. И так у нас уже есть установленная ОС Ubuntu Server 16.
04 LTS, настроенный DHCP сервер и настроенный кэширующий прокси-сервер squid.
Установка DNS сервера на Ubuntu
Установим службу DNS сервера Bind9 на наш сервер.
sudo apt install bind9
Следующим шагом, генерируем ключ для обновления DNS записей или же воспользуемся уже имеющимся у Вас в системе.
Первый вариант:
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER
выведем ключ на экран
cat Kdhcp_updater.*.private|grep Key
на экране вы должны увидеть , что то подобно этому:
Key: 9DxMmNw7J813qviXajG7rQ==
Обязательно сохраните этот ключ, в последующей настройке он нам понадобится.
Второй вариант:
добавим в файл /etc/bind/named.conf запись о ключе, который уже присутствует у Вас в системе
sudo nano /etc/bind/named.conf
Добавьте запись:
include «/etc/bind/rndc.key»;
Настройка прямой зоны DNS
создадим файл в котором будет храниться данные о зоне прямого просмотра dom. Для этого создадим копию образца файла прямого просмотра:
sudo cp /etc/bind/db.local /var/lib/bind/db.dom
откроем его
sudo nano /var/lib/bind/db.dom
и отредактируем по моему примеру:
$ORIGIN .$TTL 604800 ; 1 weekdom IN SOA ns.dom. root.ns.dom. ( 201605277 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) )@ IN NS ns.dom.@ IN A 192.168.0.1@ IN AAAA ::1$ORIGIN dom.$TTL 604800 ; 1 weekns IN A 192.168.0.1
Записи вида А — предназначен для ip адресов версии 4
Запись вида АААА — предназначен для ip адресов версии 6
Настройка обратной зоны DNS
Создадим копию только что созданного и отредактированного файла прямого просмотра:
sudo cp /var/lib/bind/db.dom /var/lib/bind/db.192.dom
откроем его
sudo nano /var/lib/bind/db.192.dom
и также отредактируем его:
$ORIGIN .$TTL 604800 ; 1 week0.168.192.in-addr.arpa IN SOA ns.dom. root.ns.dom. ( 2016052655 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) )@ IN NS ns.dom.$ORIGIN 0.168.192.in-addr.arpa.$TTL 604800 ; 1 week1 IN PTR ns.dom.
Настройки зон в файле конфигурации bind9
Открываем файл конфигурации зон
sudo nano /etc/bind/named.conf.local
И тут опять два пути если вы создавали секретный ключ по первому варианту то пишем следующее:
key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret «9DxMmNw7J813qviXajG7rQ==»; }; // зона прямого просмотраzone «dom»{ type master; file «/var/lib/bind/db.dom»; allow-update { key DHCP_UPDATER; };}; // зона обратного просмотраzone «0.168.192.in-addr.arpa»{ type master; file «/var/lib/bind/db.192»; allow-update { key DHCP_UPDATER; };};
key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ) если же по второму варианту то вставляем следующее:
// зона прямого просмотраzone «dom»{ type master; file «/var/lib/bind/db.dom»; allow-update { key rndc-key; };}; // зона обратного просмотраzone «3.168.192.in-addr.arpa»{ type master; file «/var/lib/bind/db.192»; allow-update { key rndc-key; };};
- key rndc-key — информация о ключе взятая из системы.
- zone «dom» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
- zone «0.168.192.in-addr.arpa» — создание зоны обратного просмотра
Сохраняем, закрываем.
Теперь проверим правильность синтаксиса конфигурационных файлов BIND.
Если конфигурационные файлы не содержат ошибок, вывод этой программы будет пуст.
Перезапускаем bind9
sudo /etc/init.d/bind9 restart
Проверяем работу DNS сервера:
nslookup ns.dom
в ответ вы должны увидеть:
Server: 127.0.0.1Address: 127.0.0.1#53 Name: ns.domAddress: 192.168.0.1
Как видите зона прямого просмотра работает, нам показался ip адрес проверяемого имени. Теперь проверим работу зоны обратного просмотра
nslookup 192.168.0.1
В ответ должны получить:
Server: 127.0.0.1Address: 127.0.0.1#53 1.0.168.192.in-addr.arpa name = ns.dom.
Как видим в ответе мы получили имя сервера по его адресу. Если у вас в ответ на nslookup так же все корректно отображается, значит вы все сделали правильно! Если нет, проверяйте что сделали не так.
Проверяем версию DNS сервера
dig @ns.dom version.bind chaos txt
Примерный вывод команды:
;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;version.bind. CH TXT ;; ANSWER SECTION:version.bind. 0 CH TXT «DNS server v.1.0» ;; AUTHORITY SECTION:version.bind. 0 CH NS version.bind. ;; Query time: 0 msec;; SERVER: 192.168.0.1#53(192.168.0.1);; WHEN: Thu Mar 23 09:59:39 +04 2017;; MSG SIZE rcvd: 85
Пример файла dhcpd.conf:
ddns-updates on;ddns-update-style interim;update-static-leases on; key rndc-key { algorithm hmac-md5; secret «2mu11eRajAdm4KV0x0Pmcg==»;} zone dom. {primary 192.168.0.1;key rndc-key;} zone 0.168.192.in-addr.arpa. {primary 192.168.0.
1;key rndc-key;} #default-lease-time 600;#max-lease-time 7200; authoritative;log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.120; option routers 192.168.0.1; option broadcast-address 192.168.0.255; option domain-name-servers 192.
168.0.1; option domain-name «dom»; option subnet-mask 255.255.255.0; default-lease-time 604800; max-lease-time 604800;} host home-asus { hardware ethernet 00:00:00:00:00:00; fixed-address 192.168.0.
100; }
Больше никакие настройки DHCP не трогаем, перезапускаем bind9 и dhcp
sudo service bind9 restartsudo service isc-dhcp-server restart
Теперь нужно проверить как все это дело работает “в бою”. Запускаем клиентскую машину, которая находится в сети с сервером. После включения машина получит IP адрес от DHCP сервера, а DHCP сервер создаст запись вроде client-pc.dom.
На запрос nslookup client-pc (client-pc это имя клиентской машины), мы должны увидеть ответ от сервера После перезагрузки сервера, можно посмотреть на файлы прямого и обратного просмотра, если все сделали правильно, то в них вы увидите записи о новых машинах.
На этом настройка сервера bind9 закончена.
Установка и настройка DNS в Ubuntu
Для тех, кто не знает, что DNS представляет собой систему доменных имён, которая служит для преобразования имени в IP-адрес ПК и обратно.
Таким образом, когда вы вводите адрес веб-страницы в браузере, система доменных имён преобразует его в IP-адрес хостинга, на котором располагается конкретный домен.
В этой статье детально разберём, как установить и настроить DNS-сервер Ubuntu. Давайте же начнём. Поехали!
Из нашей статьи вы точно узнаете, как установить и настроить DNS-сервер Ubuntu правильно
Первый этап
Первый этап — установка. Рекомендуется использовать сервер Bind9. Для этого перейдите в терминал и введите:
sudo apt install bind9
Далее необходимо сгенерировать ключ для обновления записей либо воспользоваться уже имеющимся. Чтобы сгенерировать его, выполните:
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER
для вывода ключа на экран нужно ввести
cat Kdhcp_updater.*.private|grep Key
Его обязательно нужно сохранить, так как в дальнейшем secret key вам понадобится.
Чтобы воспользоваться уже имеющимся ключом, добавьте в /etc/bind/named.conf запись. Сперва необходимо выполнить:
sudo nano /etc/bind/named.conf,
а после добавить в файл строку:
include «/etc/bind/rndc.key»;
Настройка Bind9
Теперь перейдём к настройке Bind9. Откройте файл конфигурации, прописав в терминале:
sudo nano /etc/bind/named.conf.options
и добавьте туда следующие строки:
forwarders {8.8.8.8;8.8.4.4;};listen-on {127.0.0.1;192.168.0.1;
};
forwaders — вышестоящий DNS, используемый в случаях, когда в базе не удаётся найти URL-запрос.
listen-on — адреса, через которые будет обслуживаться ваш DNS-сервер.
Перезапуск bind9
Далее необходимо перезапустить bind9. Для этого пропишите в терминале:
sudo service bind9 restart
Теперь укажите зоны прямого и обратного просмотра, а также введите их в конфигурации bind9. Исходные данные следующие:
Доменное имя — domIP-адрес сервера — 192.168.0.1
Имя сервера — ns.dom
Чтобы настроить зону прямого просмотра, создайте соответствующий файл и скопируйте его образец:
sudo cp /etc/bind/db.local /var/lib/bind/db.dom
далее отройте командой:
sudo nano /var/lib/bind/db.dom
и отредактируйте следующим образом:
$ORIGIN .$TTL 604800 ; 1 weekdom IN SOA ns.dom. root.ns.dom.
(201605277 ; serial604800 ; refresh (1 week)86400 ; retry (1 day)2419200 ; expire (4 weeks)604800 ; minimum (1 week))@ IN NS ns.dom.@ IN A 192.168.
0.1@ IN AAAA ::1$ORIGIN dom.$TTL 604800 ; 1 week
ns IN A 192.168.0.1
Далее необходимо настроить обратную. Для этого сделайте копию файла прямого просмотра, которую вы только что создали:
sudo cp /var/lib/bind/db.dom /var/lib/bind/db.192.dom
открываете его командой:
sudo nano /var/lib/bind/db.192.dom
и также редактируете:
$ORIGIN .$TTL 604800 ; 1 week0.168.192.in-addr.arpa IN SOA ns.dom. root.ns.dom. (2016052655 ; serial604800 ; refresh (1 week)86400 ; retry (1 day)2419200 ; expire (4 weeks)604800 ; minimum (1 week))@ IN NS ns.$ORIGIN 0.168.192.in-addr.arpa.$TTL 604800 ; 1 week
1 IN PTR ns.dom.
Чтобы настроить зоны в конфигурации bind9, нужно открыть файл конфигурации командой:sudo nano /etc/bind/named.conf.local,
а дальше появляется снова два варианта развития событий. Если вы создавали secret key первым способом, пропишите:
key DHCP_UPDATER {algorithm HMAC-MD5.SIG-ALG.REG.INT;secret «9DxMmNw7J813qviXajG7rQ==»;
};
// зона прямого просмотра
zone «dom»{type master;file «/var/lib/bind/db.dom»;allow-update { key DHCP_UPDATER; };
};
// зона обратного просмотра
zone «0.168.192.in-addr.arpa»{type master;file «/var/lib/bind/db.192»;allow-update { key DHCP_UPDATER; };
};
key DHCP_UPDATER — информация о secret key, который вы записывали в самом начале (его необходимо прописывать в кавычках). Если ранее, вы воспользовались вторым способом, введите:
// зона прямого просмотра
zone «dom»{type master;file «/var/lib/bind/db.dom»;allow-update { key rndc-key; };
};
// зона обратного просмотра
zone «3.168.192.in-addr.arpa»{type master;file «/var/lib/bind/db.192»;allow-update { key rndc-key; };
};
где key rndc-key — данные ключа, взятые из системы, а zone «dom» — данные о зоне применения системы доменных имён. Остаётся сохранить всё это дело, затем закрыть и перезапустить bind9, введя:
sudo /etc/init.d/bind9 restart
Проверка работы системы доменных имён
Теперь проверьте работу системы доменных имён:
nslookup ns.dom
в результате вы должны получить нечто вроде:
Server: 127.0.0.1Address: 127.0.0.1#53Name: ns.dom
Address: 192.168.0.1
Как вы можете убедиться, зона прямого просмотра работает. Теперь удостоверьтесь, что также работает и обратная:
nslookup 192.168.0.1
В результате вы должны увидеть:
Server: 127.0.0.1Address: 127.0.0.1#53
1.0.168.192.in-addr.arpa name = ns.dom.
В итоге вы должны получить имя сервера, введя его IP. Если у вас всё отображается подобным образом, значит, настройка была произведена верно. Если же нет, значит, ранее была допущена ошибка.
Настройка динамического обновления
Чтобы настроить динамическое обновление, откройте /etc/dhcp/dhcpd.conf, выполнив команду:
sudo nano /etc/dhcp/dhcpd.conf
Строку ddns-update-style none нужно заменить на ddns-update-style interim. Далее добавьте строку update-static-leases on, которая отвечает за создание зон для клиентов со статичным IP.
Убедитесь, что в option domain-name содержится название домена «dom».
В строке «key» должно быть название вашего ключа (если вы ранее выбирали первый способ, пропишите DHCP_UPDATER, если второй, то rndc-key), содержит ваш секретный ключ. Чтобы посмотреть rndc-key выполните:
cat /etc/bind/rndc.key |grep secret
в результате должно получиться нечто подобное:
secret «2mu11eRajAdm4KV0x0Pmcg==»;
На этом с настройками DHCP всё. Теперь необходимо перезапустить bind9 и dhcp. Для этого пропишите:sudo service bind9 restart
sudo service isc-dhcp-server restart
Остаётся проверить как всё работает. Запустите клиентскую машину, находящуюся в сети с сервером. После запуска машина получит IP от DHCP, а он, в свою очередь, создаст запись типа client-pc.dom.
По запросу «nslookup имя_клиентской_машины», вы должны получить ответ. Перезапустив server, можно будет посмотреть файлы прямого и обратного просмотра.
Если на предыдущих этапах вы всё настроили правильно, там вы увидите информацию о новых машинах. Готово. Настройка завершена.
Итоги
Настройка DNS сервера BIND в DEBIAN-Ubuntu
DNS — служба, позволяющая преобразовывать IP-адреса в доменные имена.
DNS-сервер не является обязательным элементом корпоративной сети, однако часто применяется (наряду с DHCP).
Настройка DNS будет производиться на примере самого популярного в настоящее время программного пакета, позволяющего реализовать DNS — BIND9.
Преимуществом наличия DNS-сервера является возможность иметь в сети ресурсы, имеющие абсолютно любые имена, в том числе — принадлежащие другим Интернет ресурсам.
При работе с DNS можно использовать любые доменные имена в любых зонах (.com, .org, .ru и т.д.). Единственной рекомендацией может быть следующая — не использовать при экспериментах с DNS доменные имена в зоне .local поскольку в этом случае может наблюдаться ряд побочных эффектов в результате чего настраиваемый программный пакет может работать некорректно.
Настройка BIND Ubuntu
Следует иметь в виду, что при конфигурации DNS для работы с реально существующим доменным именем все запросы из сети к данному домену, доступному глобально будут блокироваться.
Прежде всего, устанавливаем для сервера статический IP-адрес
Проверяем актуальное значение IP-адреса
ip a
Нужный адрес относится к интерфейсу eth0
Отправляемся в файл, отвечающий за сетевые настройки и меняем способ выдачи адреса с DHCP на static
mcedit /etc/network/interfaces
iface eth0 inet static
address 192.168.11.76
network 255.255.255.0
gateway 192.168.11.21
Данный адрес установлен с учетом того, что он заведомо находится за пределами диапазона адресов, назначаемых DHCP
Чтобы изменения вступили в силу опускаем интерфейс и вновь поднимаем его
ifdown eth0 && ifup eth0
Удаление resolvconf в Ubuntu старше 12.04
Для демонстрации используется Ubuntu 16.04, начиная с версии 12.04 данный дистрибутив использует утилиту resolvconf, которая контролирует DNS автоматически. Для рабочих станций данная утилита очень полезна, для серверов — нет.
cat /etc/resolv.conf
Видим в файле информацию о том, что он заполняется автоматически и править конфигурацию вручную нельзя. Поскольку нас это не вполне устраивает — удаляем утилиту (на рабочих станциях вносить изменения DNS можно редактируя файлы head, base и tail в каталоге /etc/resolvconf/resolv.conf.d — структура файлов будет рассмотрена в одной из следующих статей).
apt-get remove resolvconf
cat /etc/resolv.conf
Сейчас предупреждения, которое выводилось раньше, нет.
Установка и настройка bind9
Устанавливаем bind9
apt-get install bind9
Конфигурационные файлы располагаются в каталоге /etc/bind. Основные файлы: named.conf и named.conf.local
Общая форма конфига bind9 представлена в файле db.local
cat db.local
Конфигурации также представлены в named.conf.default-zones
Здесь можно увидеть записи двух типов:
zone «localhost» {
type master;
file «/etc/bind/db.local»;
};
zone «127.in-addr.arpa» {
type master;
file «/etc/bind/db.127»;
};
Первая запись характеризует прямое преобразование — доменного имени в IP-адрес, вторая — обратное преобразование — IP-адреса в доменное имя.
Дальнейшие изменения вносим в файл named.conf.local
zone «example.com» {
type master;
file «/etc/bind/example.com.zone»;
};
mcedit example.com.zone
$TTL 3600
@ IN SOA localhost localhost (
20170211001 ;серийный номер
3600 ;время обновления
3600 ;повторная попытка запроса обновления от мастера
3600 ;время истечения срока действия
3600 ;кэширование TTL
)
IN NS server01.example.com.
IN A 192.168.11.76
alias IN CNAME server01
При использовании FQDN — в NS записи — (полностью определенного доменного имени) точка в его конце обязательна
Серийный номер — чаще всего дата + порядковый номер изменеий за день, инкрементировать число нужно каждый раз обновляя зону для того чтобы слэйв сервера DNS могли среагировать на то, что информация обновилась и обновить свои записи
Значения времени обновления,повторной попытки запроса обновления от мастера, времени истечения срока действия и кэширования TTL всех указанных параметров можно варьировать, в большинстве случаев используется значение 3600 секунд, в случае большой нагрузки на сервер — при использовании его в публичных местах — значения можно увеличивать для того чтобы уменьшить трафик в сети.
NS запись DNS — запись, определяющая к какому серверу будет происходить запрос при попытке разрешеиня имени или адреса.
А запись DNS — запись согласно которой производится запрос к серверу на наличие файлов сайта.
CNAME запись используется для создания синонимов — при запросе к alias.example.com в данном случае производится обращение к server01.example.com.
/etc/init.d/bind9 restart
В случае если при перезапуске службы ошибок не возникло — конфигурационные файлы составлены корректно
Чтобы проверить корректность работы bind9 заставим сервер обращаться к себе
mcedit /etc/resolv.conf
nameserver 192.168.11.76
domain example.com
search example.com
Проверяем (о том, как проверять DNS записи для домена)
host alias.example.com
В выводе присутсвует адрес 192.168.11.76, что означает, что успешно разрешаются как CNAME, так и A записи).
ping alias.example.com
Пинг есть, значит bind работает корректно
Теперь настроим обратное преобразование
cat named.conf.default-zones
Как и ранее идем в named.conf.local; добавляем следующие строки
zone «11.168.192.in-addr.arpa» {
type master;
file «/etc/bind/192.168.11.zone»;
};
mcedit 192.168.11.zone
$TTL 3600
@ IN SOA localhost localhost (
20170211001 ;серийный номер
3600 ;время обновления
3600 ;повторная попытка запроса обновления от мастера
3600 ;время истечения срока действия
3600 ;кэширование TTL
)
IN NS server01.example.com.
IN A 192.168.11.76
76 IN PTR server01.example.com.
В PTR записи прописывается только последний октет адреса 192.168.11.76, bind добавляет остальные октеты, если пренебречь этим правилом обратное преобразование происходить не будет.