Вступ
Цей посібник допоможе вам встановити та налаштувати DNS-сервер Dnsmasq на Ubuntu 22.04|20.04|18.04 LTS. Для тих, хто тільки знайомиться з Dnsmasq, Dnsmasq — це простий, легкий, зручний у використанні та керуванні DNS-сервер із підтримкою сценаріїв Lua, IPv6, DNSSEC, мережевого завантаження для PXE, BOOTP і TFTP. Він має невеликі розміри, тому підходить для маршрутизаторів і брандмауерів з обмеженими ресурсами.
Dnsmasq був розроблений для надання послуг DNS і, за бажанням, DHCP/TFTP для малих і середніх мережевих середовищ. Коли він отримує DNS-запити, він або відповідає на них зі свого локального кешу, або пересилає їх на інший рекурсивний DNS-сервер, яким може бути BIND або будь-який інший DNS-сервер.
Підсистеми Dnsmasq
Dnsmasq має три основні підсистеми, а саме:
- Підсистема DNS : забезпечує кешування записів A, AAAA, CNAME і PTR, а також DNSKEY і DS.
- Підсистема DHCP : забезпечує підтримку DHCPv4, DHCPv6, BOTP і PXE. Ви можете використовувати як статичну, так і динамічну оренду DHCP, вбудований сервер TFTP лише для читання для підтримки завантаження з мережі.
- Підсистема реклами маршрутизатора : забезпечує базову автоконфігурацію для хосту IPv6
Крок 1. Встановіть Dnsmasq на Ubuntu 22.04|20.04|18.04
Ubuntu 18.04+ поставляється з systemd-resolve, який потрібно вимкнути, оскільки він прив’язується до порту 53, який конфліктуватиме з портом Dnsmasq.
Виконайте такі команди, щоб вимкнути цю службу:
$ sudo systemctl disable systemd-resolved
$ sudo systemctl stop systemd-resolved
Також видаліть файл resolv.conf
$ ls -lh /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Aug 8 15:52 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
$ sudo unlink /etc/resolv.conf
Потім створіть новий файл resolv.conf.
$ echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf
Dnsmasq доступний у репозиторії apt, його можна легко встановити, виконавши:
$ sudo apt update
$ sudo apt install dnsmasq
Основним конфігураційним файлом для Dnsmasq є /etc/dnsmasq.conf
. Налаштуйте Dnsmasq, змінивши цей файл.
$ sudo vim /etc/dnsmasq.conf
Ось мінімальна конфігурація
# Listen on this specific port instead of the standard DNS port # (53). Setting this to zero completely disables DNS function, # leaving only DHCP and/or TFTP. port=53 # Never forward plain names (without a dot or domain part) domain-needed # Never forward addresses in the non-routed address spaces. bogus-priv # By default, dnsmasq will send queries to any of the upstream # servers it knows about and tries to favour servers to are known # to be up. Uncommenting this forces dnsmasq to try each query # with each server strictly in the order they appear in # /etc/resolv.conf strict-order # Set this (and domain: see below) if you want to have a domain # automatically added to simple names in a hosts-file. expand-hosts # Set the domain for dnsmasq. this is optional, but if it is set, it # does the following things. # 1) Allows DHCP hosts to have fully qualified domain names, as long # as the domain part matches this setting. # 2) Sets the "domain" DHCP option thereby potentially setting the # domain of all systems configured by DHCP # 3) Provides the domain part for "expand-hosts" #domain=thekelleys.org.uk domain=example.com # Set Listen address listen-address=127.0.0.1 # Set to Server IP for network responses
Якщо ви хочете ввімкнути перевірку та кешування DNSSEC, розкоментуйте
$ sudo dnssec
Внесіть будь-які інші зміни, які ви вважаєте доречними, і перезапустіть dnsmasq, коли закінчите:
$ sudo systemctl restart dnsmasq
Крок 2. Додавання записів DNS до Dnsmasq
Додайте записи DNS у файл. /etc/hosts
. Dnsmasq відповідатиме на запити клієнтів, використовуючи ці записи.
$ sudo vim /etc/hosts
10.1.3.4 server1.mypridomain.com
10.1.4.4 erp.mypridomain.com
192.168.10.2 checkout.mypridomain.com
192.168.4.3 hello.world
Вам потрібно перезапустити службу dnsmasq після додавання записів.
$ sudo systemctl restart dnsmasq
Крок 3. Тестування функціональності Dnsmasq DNS
Щоб переконатися, що Dnsmasq відповідає на додані нами записи, вкажіть DNS-сервер ваших серверів на сервер Dnsmasq. Відредагуйте /etc/network/interfaces для
постійної конфігурації або файл /etc/netplan/
на серверах Ubuntu.
Оскільки це тест, я зміню файл середовища виконання /etc/resolv.conf
$ sudo vim /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8
Перевірте за допомогою dig:
$ dig A erp.mypridomain.com
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> A erp.mypridomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43392
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;erp.mypridomain.com. IN A
;; ANSWER SECTION:
erp.mypridomain.com. 0 IN A 10.1.4.4
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 21 10:35:41 UTC 2018
;; MSG SIZE rcvd: 64
Ось інший приклад:
$ dig checkout.mypridomain.com A +noall +answer
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> checkout.mypridomain.com A +noall +answer ;; global options: +cmd checkout.mypridomain.com. 0 IN A 192.168.10.2
Ви можете підтвердити, що ми отримуємо відповіді згідно з налаштуваннями.
Налаштувати Dnsmasq як сервер DHCP (необов’язково)
Ви можете використовувати Dnsmasq для призначення IP-адрес клієнтам, як статичних, так і динамічних.
Відредагуйте файл a /etc/dnsmasq.conf
та вкажіть параметри DHCP. Вам необхідно надати:
- IP-адреса шлюзу за замовчуванням
- IP-адреса DNS-сервера (ймовірно, Dnsmasq або інший DNS-сервер)
- Мережа Маска підмережі
- Діапазон адрес DHCP
- NTP сервер
Дивіться приклад нижче
dhcp-range=192.168.3.25,192.168.3.50,24h dhcp-option=option:router,192.168.3.1 dhcp-option=option:ntp-server,192.168.3.5 dhcp-option=option:dns-server,192.168.3.5 dhcp-option=option:netmask,255.255.255.0
Перезапустіть dnsmasq і налаштуйте клієнтів для отримання IP-адреси від цього сервера.
sudo systemctl restart dnsmasq
Висновок
Dnsmasq — це простий у налаштуванні DNS-кеш, який може прискорити перегляд Інтернету та розпізнавання записів домену у ваших системах. Ви також можете користуватися підсистемою DHCP, яку легко налаштувати та використовувати для невеликої мережі.
Якщо помітили помилки чи неточності, будь ласка, залишіть коментар чи напишіть листа на поштову адресу [email protected]