Мне надоело, что в своей домашней сети я к ресурсам обращаюсь по IP
адресу, почему я до сих пор не поднял локальный DNS
— лень или что? Это дело надо поправить тем более что на моем микросервере есть ресурсы. Думаю, 512Mb
оперативной памяти будет более чем достаточно, тем более что я все это дело разверну и введу в эксплуатацию на Ubuntu 18.04 Server
. В роли сервиса ответственного за DNS
у меня будет dnsmasq
. С ним я работал, он прост и не требователен.
Поднял VM
с осью Ubuntu 18.04 Server
на боевом микросервере (HP MicroServer Gen8 (4CPUs x 2,494Ghz, Intel Xeon CPU E3-1265L V2 2.50GHz, RAM 12Gb))
под ESXi 6.0
RAM: 512Mb
HDD: 50Gb
CPU: 1
IP: 172.35.35.5 (VLAN 5)
Шаг №1:
Активирую для себя что все команды через sudo
без запроса повышения прав доступа:
ekzorchik@srv-dns:~$ sudo visudo ekzorchik ALL=(ALL) NOPASSWD:ALL ekzorchik@srv-dns:~$ sudo nano /etc/hosts 127.0.0.1 localhost 127.0.1.1 srv-dns ekzorchik@srv-dns:~$ sudo nano /etc/hostname srv-dns.polygon.lan
Шаг №2:
Отключаю сервис systemd-resolved:
ekzorchik@srv-dns:~$ sudo systemctl disable systemd-resolved Removed /etc/systemd/system/dbus-org.freedesktop.resolve1.service. Removed /etc/systemd/system/multi-user.target.wants/systemd-resolved.service. ekzorchik@srv-dns:~$ ekzorchik@srv-dns:~$ sudo systemctl stop systemd-resolved
Шаг №3:
Запрещаю изменение файла /etc/resolv.conf:
ekzorchik@srv-dns:~$ ls -lh /etc/resolv.conf lrwxrwxrwx 1 root root 39 Apr 29 15:35 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf ekzorchik@srv-dns:~$ sudo rm /etc/resolv.conf ekzorchik@srv-dns:~$ sudo bash -c "echo 'nameserver 127.0.0.1'" | sudo -s tee /etc/resolv.conf ekzorchik@srv-dns:~$ sudo bash -c "echo 'nameserver 8.8.8.8'" | sudo tee -a /etc/resolv.conf ekzorchik@srv-dns:~$ cat /etc/resolv.conf nameserver 127.0.0.1 nameserver 8.8.8.8 ekzorchik@srv-dns:~$ ekzorchik@srv-dns:~$ sudo chattr +i /etc/resolv.conf ekzorchik@srv-dns:~$ sudo lsattr /etc/resolv.conf ----i---------e--- /etc/resolv.conf ekzorchik@srv-dns:~$
Шаг №4:
Устанавливаю сервис dnsmasq:
ekzorchik@srv-dns:~$ sudo apt-get install -y dnsmasq ekzorchik@srv-dns:~$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup ekzorchik@srv-dns:~$ sudo rm /etc/dnsmasq.conf ekzorchik@srv-dns:~$ sudo nano /etc/dnsmasq.conf ekzorchik@srv-dns:~$ cat /etc/dnsmasq.conf | grep -v "#\|^$" strict-order address=/polygon.lan/172.35.35.5 address=/polygon.lan/127.0.0.1 interface=ens18 listen-address=127.0.0.1,172.35.35.5 #нижеследующий параметр дает возможность редактировать/добавлять в файл /etc/hosts на srv-dns expand-hosts domain=polygon.lan dhcp-option=3,172.33.3.100 #на время отладки можно добавить логирование или на постоянку, но активировать logrotate #log-queries #log-facility=/var/log/dnsmasq.log
Шаг №5:
Проверяю конфигурацию на ошибки:
ekzorchik@srv-dns:~$ dnsmasq --test dnsmasq: syntax check OK. ekzorchik@srv-dns:~$
Шаг №6:
Перезапускаю сервис:
ekzorchik@srv-dns:~$ sudo systemctl restart dnsmasq.service
Шаг №7:
Проверяю что возвращается при использовании dig,nslookup:
ekzorchik@srv-dns:~$ dig polygon.lan ; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> polygon.lan ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32272 ;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;polygon.lan. IN A ;; ANSWER SECTION: polygon.lan. 0 IN A 172.35.35.5 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Sep 18 23:54:44 MSK 2020 ;; MSG SIZE rcvd: 45 ekzorchik@srv-dns:~$ nslookup polygon.lan Server: 127.0.0.1 Address: 127.0.0.1#53 Name: polygon.lan Address: 172.35.35.5
Шаг №8:
Создаю записи сопоставления хостов:
ekzorchik@srv-dns:~$ sudo nano /etc/hosts 172.35.35.4 srv-nas 172.35.35.8 srv-wiki 172.35.35.7 srv-fog 172.35.35.6 srv-cloud
На заметку: Если вы добавили записи в /etc/hosts
чтобы они применились и стали обслуживаться сервисом dnsmasq
, сервис dnsmasq
нужно перезапустить:
ekzorchik@srv-dns:~$ sudo systemctl restart dnsmasq
Шаг №9:
Теперь нужно обозначить на моем DHCP
—сервисе, что в роли DNS
выступает созданная система srv-dns
. У меня DHCP
-сервис на Mikrotik RB2011UiAS-2HnD
ekzorchik@navy:~$ winbox - ip&dns:port - user&pass - IP - DHCP Server
— вкладка Networks
и для сети 172.33.33.0/24
указываю
Address: 172.33.33.0/24 - сеть пользовательских компьютеров
Gateway: 172.33.33.100 - адрес Mikrotik'a
DNS Server: 172.35.35.5 - адрес системы с поднятым сервисом dnsmasq
Domain: polygon.lan DNS-суффикс
Next Server: 172.35.35.7 - это мой FOG Project для автоматизированного развертывания ОС (Windows, Ubuntu систем)
Boot File Name: undionly.kpxe -> загрузчик для FOG Project который располагается на FOG Project системе.
После нажимаю Apply - OK
, и отключаюсь от своего микротика.
На заметку: По аналогии выше прописываю и для диапозона 172.35.35.0/24
Шаг №10:
Проверяю работу DNS
в локальной сети, к примеру, с Windows
системы: W10X64
Win + R -> cmd.exe
C:\Users\ekzorchik>ipconfig /all
Далее инициирую обращение по короткому имени к файловому серверу srv-nas:
и через проводник:
Работает.
Также работаю сервисы при обращении через браузер, как по DNS
, так и по IP
:
http://srv-wiki/hg -> Mercurial Web Service
http://srv-fog -> FOG Project
https://srv-cloud -> OwnCloud 10
Шаг №11:
Проверяю работу DNS
в локальной сети, к примеру, с Ubuntu 18.04 Server
которую я запустил на своем тестовом полигоне под управлением Debian 10 + Proxmox 6:
ekzorchik@navy:~$ ssh -l ekzorchik 172.33.33.103 ekzorchik@srv-bionic:~$ ping srv-wiki PING srv-wiki.polygon.lan (172.35.35.8) 56(84) bytes of data. 64 bytes from srv-wiki.polygon.lan (172.35.35.8): icmp_seq=1 ttl=63 time=0.553 ms 64 bytes from srv-wiki.polygon.lan (172.35.35.8): icmp_seq=2 ttl=63 time=1.33 ms ^C --- srv-wiki.polygon.lan ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.553/0.941/1.330/0.389 ms ekzorchik@srv-bionic:~$ ping srv-fog PING srv-fog.polygon.lan (172.35.35.7) 56(84) bytes of data. 64 bytes from srv-fog.polygon.lan (172.35.35.7): icmp_seq=1 ttl=63 time=0.540 ms ^C --- srv-fog.polygon.lan ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.540/0.540/0.540/0.000 ms ekzorchik@srv-bionic:~$
Работает, сервисы откликаются по DNS
-имени
Шаг №12:
Если у кого-либо как у меня своей собственный сервис OwnCloud
, то чтобы подключаться к нему по DNS
имени и FQDN
имени в локальной сети нужно поправить конфигурационный файл:
ekzorchik@srv-cloud:~$ sudo nano /var/www/owncloud/config/config.php 'trusted_domains' => array ( 0 => 'localhost', 1 => '172.35.35.6', 2 => 'srv-cloud.polygon.lan', 3 => 'srv-cloud', ), ekzorchik@srv-cloud:~$ sudo systemctl restart apache2
и после из локальной сети к нему можно будет обращаться через браузер не только по IP
, а и по DNS
. То что нужно.
Шаг №13:
Теперь также я могу на своей рабочей системе Ubuntu 18.04 Desktop
ноутбука Lenovo E555
настроить алиасы на подключение по SSH
не по IP
, а по DNS
—имени:
ekzorchik@navy:~$ nano ~/.bashrc alias srv-wiki='sshpass -p <password> ssh -o "StrictHostKeyChecking no" ekzorchik@srv-wiki -p 22' alias srv-nas='sshpass -p <password> ssh -o "StrictHostKeyChecking no" ekzorchik@srv-nas -p 22' alias srv-cloud='sshpass -p <password> ssh -o "StrictHostKeyChecking no" ekzorchik@srv-cloud -p 22' alias srv-mon='sshpass -p <password> ssh -o "StrictHostKeyChecking no" ekzorchik@srv-mon -p 22' alias srv-proxmox='sshpass -p <password> ssh -o "StrictHostKeyChecking no" ekzorchik@srv-proxmox -p 22' alias srv-fog='sshpass -p <password> ssh -o "StrictHostKeyChecking no" ekzorchik@srv-fog -p 22'
Шаг №14:
Если dnsmasq
сервис будет не запущен, ресурсы по DNS
—имени не откроются, а только по IP
. Это очень важный момент:
ekzorchik@srv-dns:~$ sudo systemctl stop dnsmasq ekzorchik@srv-wiki:~$ ping mail.ru ping: mail.ru: Temporary failure in name resolution ekzorchik@srv-wiki:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=109 time=20.6 ms
Итого вот так я провожу свободное время, оптимизирую с учетом своих задумок свою локальную сеть и набираюсь навыков. Исходя из всего проработанного и задокумментированного я получил наработку как в локальной сети поднять DNS
-сервис и на Ubuntu 18.04 Server
. На этом у меня пока все, если что-то в процессе эксплуатации будет, то это обязательно найдет свое отражение в заметках моих блогов. Только реальный практический материал. С уважением, автор блога Олло Александр aka ekzorchik.