Рубрики
*NIX информация

dnsmasq / DNS / сервер / stubby / DoT

ссылки:

https://wiki.archlinux.org/title/dnsmasq

dnsmasq

0. Установка:
apt install dnsmasq

конфиги:
touch /etc/dnsmasq.d/dnsmasq.conf
chown root:dnsmasq /etc/dnsmasq.d/dnsmasq.conf
chmod 0644 /etc/dnsmasq.d/dnsmasq.conf


1. Редактируем конфиг:
vim /etc/dnsmasq.d/dnsmasq.conf
-------------------------------
# Указываем интерфейсы для прослушивания.
listen-address=::1
listen-address=127.0.0.1
listen-address=192.168.1.1
bind-interfaces
 
# Запрещаем чтение файла /etc/resolv.conf для получения DNS-серверов
no-resolv
 
# Запрещаем добавление хостов из файла /etc/hosts
no-hosts
 
# Указываем вышестоящие DNS-серверы.
server=::1#5353
server=127.0.0.1#5353
 
# Указываем количество элементов для локального кэша DNS
cache-size=5000
 
# В некоторых случаях, например при работе с авторизованным порталом, может быть полезно преобразовать определенные доменные имена в жестко закодированный набор адресов
address=/example.org/192.168.0.150
address=/zzz/192.168.0.151
address=/example.com/1.2.3.4
# Кроме того, можно вернуть определенный адрес для всех доменных имен, на которые не получен ответ от /etc/hostsили DHCP, с помощью специального подстановочного знака:
address=/#/1.2.3.4
# Чтобы заблокировать домены, т.е. отвечать на запросы к ним с помощью NXDOMAIN, используйте опцию addressбез указания IP-адреса
# блокирует как block.example , так и Anotherblocked.example , а также все их субдомены 
address=/*blocked.example/
# блокирует субдомены, такие как mail.google.com, но не google.com 
address=/*.google.com/
# блокирует google.com и все поддомены, кроме mail.google.com
address=/google.com/
server=/mail.google.com/#
#Примечание:
#Варианты address=/example.com/и server=/example.com/эквивалентны. Оба будут отвечать на запросы для них с помощью NXDOMAIN.
#Варианты address=/example.com/#и server=/example.com/#не эквивалентны.
#  address=/example.com/#будет отвечать на запросы для домена с нулевым адресом (0.0.0.0 или :: для IPv6).
#  server=/example.com/#будет отправлять запросы для домена на стандартно настроенные серверы.
#Шаблоны /example.com/и /.example.com/эквивалентны. Оба будут соответствовать домену example.com и всем его поддоменам.

-------------------------------

stubby

0. Установка:
apt install stubby 

1. Правим конфиг::
vim /etc/stubby.yml 
-------------------
# Активируем режим STUB-резолвера.
resolution_type: GETDNS_RESOLUTION_STUB
 
# Активируем транспорт TLS.
dns_transport_list:
  - GETDNS_TRANSPORT_TLS
 
# Требуем обязательного использования TLS.
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
 
# Задаём стойкость шифра (128 или 256 бит).
tls_query_padding_blocksize: 128
 
# Активируем rfc7871.
edns_client_subnet_private : 1
 
# Разрешаем переключение на другой DNS-сервер в случае недоступности текущего.
round_robin_upstreams: 1
 
# Задаём таймаут keepalive в миллисекундах.
idle_timeout: 9000
 
# Указываем лимит исходящих DNS-запросов на вышестоящий сервер.
limit_outstanding_queries: 100
 
# Задаём таймаут ожидания ответа от сервера в миллисекундах.
timeout: 1000
 
# Указываем используемые шифры для TLS 1.2 и ниже.
tls_cipher_list: "EECDH+AESGCM:EECDH+CHACHA20"
 
# Указываем используемые шифры для TLS 1.3 и выше.
tls_ciphersuites: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
 
# Устанавливаем минимальную версию TLS.
tls_min_version: GETDNS_TLS1_2
 
# Устанавливаем максимальную версию TLS.
tls_max_version: GETDNS_TLS1_3
 
# Настраиваем stubby на прослушивание loopback-интерфейса и порта 5353.
listen_addresses:
  - 127.0.0.1@5353
  - 0::1@5353
 
# Указываем используемые серверы DNS.
upstream_recursive_servers:
  - address_data: 9.9.9.9
    tls_auth_name: "dns.quad9.net"
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 2620:fe::fe
    tls_auth_name: "dns.quad9.net"
  - address_data: 2606:4700:4700::1111
    tls_auth_name: "cloudflare-dns.com"
-------------------

Изменение резолвера по умолчанию:

0. Для того, чтобы dnsmasq смог занять стандартный порт 53/udp, мы должны отключить и заблокировать запуск сервиса systemd-resolved
systemctl disable --now systemd-resolved.service
systemctl mask systemd-resolved.service

1. Пересоздать файл "/etc/resolv.conf":
rm -f /etc/resolv.conf
touch /etc/resolv.conf
chown root:root /etc/resolv.conf
chmod 0644 /etc/resolv.conf


2. Редактируем файл resolv
vim /etc/resolv.conf
--------------------
nameserver 127.0.0.1
nameserver ::1
options trust-ad
options ndots:1
-------------------

Проверка, автозапуск stubby и dnsmasq

0. Активируем systemd-юниты:
systemctl enable --now dnsmasq.service
systemctl enable --now stubby.service

1. Перезапустим их для корректного вступления в силу изменений конфигурации:
sudo systemctl restart dnsmasq.service
sudo systemctl restart stubby.service

2. Проверим работу настроенной связки:
dig @127.0.0.1 easycoding.org


Еще примеры:

# otebatina
#listen-address=10.0.0.1
#interface=ovsbr0
#dhcp-range=10.0.0.2,10.0.0.254,255.255.255.0,12h

dhcp-range=interface:ovsbr0,10.0.0.2,10.0.0.254,24h
dhcp-range=interface:ovsbr1,10.0.1.2,10.0.1.254,24h

Одноразовый запуск из консоли, примеры:

dnsmasq -i enp0s20f0u2 --dhcp-range=192.168.88.64,192.168.88.128 --dhcp-boot=openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-initramfs-kernel.bin --enable-tftp --tftp-root=/srv/tftp/ -d -u nobody -p0 -K --log-dhcp --bootp-dynamic --dhcp-host=DC:2C:6E:68:AF:B9
 

dnsmasq -i enp0s20f0u1u1 --dhcp-range=10.50.50.200,10.50.50.240 -d -u nobody -p0 -K --log-dhcp --bootp-dynamic