Сервер в кармане, или просто о сложном!

главная - Статьи - Mikrotik



DNS over HTTPS в Mikrotik

Дата обновления: 04.02.2022

Теги: Безопасность Mikrotik

Для защиты трафика DNS от подмены (атака посредника) или от просмотра (например, на промежуточном сетевом оборудовании) можно отправлять запросы DNS в HTTPS (т.н. DNS over HTTPS, DoH). При этом исходящий трафик пойдет не на 53/udp, а на стандартный порт HTTPS: 443. В Mikrotik начиная с версии 6.47 DNS over HTTPS поддерживается.

/tool fetch url=https://curl.haxx.se/ca/cacert.pem
/certificate import file-name=cacert.pem passphrase=""

Я скачал файл с хешем SHA-1: 1057B838CF913C5E188E6EC6697B6F2B49637C29

У Mikrotik есть особенность - DNS-сервер не поддерживает больше одной записи DNS over HTTPS, а мне почему-то показалось, что использовать два IP (8.8.8.8 и 8.8.4.4) надежнее, чем, к примеру, один от Cloudflare (1.1.1.1) :) Из-за того, что Google делает редирект с 8.8.8.8 и 8.8.4.4 на dns.google (и сертификат выдан на имя, а не IP), то в DoH надо использовать имя, а не IP-адрес, поэтому создаем статические записи: 

/ip dns static add address=8.8.8.8 name=dns.google
/ip dns static add address=8.8.4.4 name=dns.google

И в настройках DNS на микротик указываем доменное имя, а не IP-адрес:

/ip dns set use-doh-server=https://dns.google/dns-query verify-doh-cert=yes

Если в установленном сертификате не будет соответсвия с сертификатом https://dns.google, в логах будет предупреждение:

DoH server connection error: SSL: handshake failed: unable to get local issuer certificate (6)

Убираем все остальные DNS-серверы:

/ip dns set servers=""

До:

До включения DNS over HTTPS

После:

После включения DNS over HTTPS

Вот и все.

Можно также завернуть или заблокировать весь остальной трафик DNS, который идет из локальной сети наружу "мимо микротика" (например, от неправильно настроенных клиентов локальной сети). Делайте осторожно, с холодной головой. Сначала лучше логируйте трафик, посмотрите, что и куда идет и только потом принимайте решение о блокировке.

ЗЫ: почти то же, но для CloudFlare (1.1.1.1):

/tool fetch url=https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
/certificate import file-name=DigiCertGlobalRootCA.crt.pem passphrase=""
/ip dns set use-doh-server=https://1.1.1.1/dns-query verify-doh-cert=yes
/ip dns set servers=""

и не нужны статические записи DNS для dns.google.



Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?