Як встановити та налаштувати Dnsmasq на Ubuntu 24.04|22.04|20.04
Цей посібник допоможе вам встановити та налаштувати DNS-сервер Dnsmasq на Ubuntu 24.04|22.04|20.04 LTS. Для тих, хто новачок у Dnsmasq, Dnsmasq — це простий, легкий, легкий у використанні та управлінні DNS-сервер із підтримкою сценаріїв Lua, IPv6, DNSSEC, мережевого завантаження для PXE, BOOTP та TFTP. Він займає невелику площу, тому підходить для маршрутизаторів і брандмауерів з обмеженими ресурсами.
Dnsmasq був розроблений для надання DNS і, за бажанням, служб DHCP/TFTP для невеликих і середніх мережевих середовищ. Коли він отримує DNS-запити, він або відповідає на них зі свого локального кешу, або пересилає їх на інший рекурсивний DNS-сервер, яким може бути BIND або будь-який інший DNS-сервер.
Підсистеми DNSMASQ
Dnsmasq має три основні підсистеми, а саме:
- DNS subsystem: забезпечує кешування A, AAAAA, CNAME і PTR, а також записів DNSKEY і DS.
- DHCP subsystem: забезпечує підтримку DHCPv4, DHCPv6, BOTP і PXE. Ви можете використовувати як статичну, так і динамічну оренду DHCP, вбудований TFTP-сервер лише для читання для підтримки netboot.
- Router Advertisement subsystem: забезпечує базову автоконфігурацію для хоста IPv6
Крок 1: Встановіть Dnsmasq
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 є . Налаштуйте Dnsmasq, змінивши цей файл./etc/dnsmasq.conf
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-записи.. Dnsmasq відповідатиме на запити клієнтів, використовуючи ці записи./etc/hosts
$ 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: Тестування функціональності DNS Dnsmasq
Щоб переконатися, що Dnsmasq відповідає на додані нами записи, направте DNS-сервер ваших серверів на сервер Dnsmasq. Відредагуйте для постійної конфігурації або файл на серверах Ubuntu./etc/network/interfaces
/etc/netplan/
Оскільки це тест, я зміню файл виконання /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
Ви можете підтвердити, що ми отримуємо відповіді відповідно до налаштувань.
Крок 4: Налаштуйте dnsmasq як DHCP-сервер (необов’язково)
Ви можете використовувати Dnsmasq для призначення IP-адрес клієнтам, як статичних, так і динамічних.
Відредагуйте файл a та надайте параметри DHCP. Вам потрібно надати:/etc/dnsmasq.conf
- 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, яка проста в налаштуванні та використанні для невеликої мережі.