MikroTik DoH, настройка DNS over HTTPS(cloudflare & google)

Mikrotik

Обсуждение тут

скопировано отсюда

Cloudflare

Краткое описание: инструкция по настройке защищённого DNS в MikroTik – DoH. Подключение Cloudflare DNS с импортом сертификатов SSL из терминала.

DNS over HTTPS (DoH) — протокол для выполнения разрешения DNS по протоколу HTTPS. Целью этого метода является повышение конфиденциальности и безопасности пользователей путём предотвращения перехвата и манипулирования данными DNS с помощью атак типа “Атака посредника”. По состоянию на март 2018 года Google и Mozilla Foundation тестируют версии DNS по протоколу HTTPS. Опубликован IETF в RFC 8484 в октябре 2018 года.

В дополнение к повышению безопасности ещё одна цель DNS over HTTPS — повысить производительность: тестирование DNS-ответчиков ISP показало, что во многих случаях они дают неожиданно медленный отклик, что может быть дополнительно умножено на необходимость получения адресов многих доменов, например, при загрузке веб-страницы.

Разница между обычным DNS и DoH

DNS — это “телефонная книга” Интернета; DNS-преобразователи переводят человекочитаемые доменные имена в машиночитаемые IP адреса. По умолчанию запросы и ответы DNS отправляются в виде открытого текста (через UDP), что означает, что они могут быть прочитаны сетями, интернет-провайдерами или кем-либо, кто может отслеживать передачи. Даже если веб-сайт использует HTTPS, отображается DNS-запрос, необходимый для перехода на этот веб-сайт.

Отсутствие конфиденциальности имеет огромное влияние на безопасность, а в некоторых случаях и на права человека; если DNS запросы не являются частными, то правительствам становится проще подвергать Интернет цензуре, а злоумышленникам — отслеживать поведение пользователей в сети.

Обычный незашифрованный DNS запрос можно сравнить с открыткой, отправленной по почте: любой, кто обрабатывает почту, может случайно увидеть текст, написанный на обратной стороне, поэтому неразумно отправлять почтовую открытку, которая содержит конфиденциальную или личную информацию.

DNS поверх TLS и DNS поверх HTTPS — это два стандарта, разработанные для шифрования трафика DNS с открытым текстом, чтобы злоумышленники, рекламораспространители, интернет-провайдеры и другие лица не могли интерпретировать данные. Продолжая аналогию, эти стандарты стремятся поместить все открытки, проходящие по почте, в конверт, чтобы каждый мог отправить открытку, не беспокоясь о том, что кто-то следит за его действиями.

Настройка MikroTik DoH

Начиная со стабильной версии 6.47 MikroTik поддерживает DNS over HTTPS (DoH).

Импорт сертификат DigiCert Global Root CA в хранилище сертификатов роутера:

/tool fetch url=https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
/certificate import file-name=DigiCertGlobalRootCA.crt.pem passphrase=""

Указать использование DoH Server

Настройка находится IP→DNS

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

Указать MikroTik в качестве DNS сервера

/ip dhcp-server network
add address=192.168.7.0/24 dns-server=192.168.7.1 gateway=192.168.7.1 netmask=24

Отключение динамических DNS серверов в MikroTik

Подключение типа dhcp client, pppoe clientLTE имеют активный параметр Use Peer DNS. Таким образом запись, которая доступна при подключении такого соединения передаёт динамический DNS сервер в соответствующий раздел RouterOS роутера MikroTik. Чтобы этого избежать, нужно отключить соответствующие опции в параметрах подключений, к примеру:

Отключение динамического DNS для DHCP клиента

Отключение динамического DNS для DHCP клиента в MikroTik

Отключение динамического DNS для PPPOE соединения

Отключение динамического DNS для PPPOE соединения в MikroTik

Google

скопировано отсюда

Для защиты трафика 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

Вот и все.