Классический DNS передаёт запросы открытым текстом по UDP:53. Это позволяет провайдеру и man-in-the-middle видеть все DNS-запросы пользователя. Для КлаудВан, предоставляющего облачные сервисы, это неприемлемо.
# DNS over TLS (DoT) — порт 853
# Уже настроен в systemd-resolved:
# DNSOverTLS=opportunistic
# Проверяем, что DoT работает
resolvectl status | grep -i tls
# Protocols: +DNSOverTLS
# Мониторим трафик — на порту 53 не должно быть запросов
tcpdump -i eth0 port 53 -c 5 -n
# Если пусто → всё идёт через TLS на порт 853
tcpdump -i eth0 port 853 -c 5 -n
# Должны видеть TLS-соединения
# DNS over HTTPS (DoH) — через HTTPS порт 443
# Для клиентов, у которых порт 853 заблокирован фаерволом
# Установка dnscrypt-proxy для DoH
apt install -y dnscrypt-proxy
# /etc/dnscrypt-proxy/dnscrypt-proxy.toml
listen_addresses = ['127.0.0.53:53']
server_names = ['cloudflare', 'google']
[sources]
[sources.public-resolvers]
urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md']
cache_file = 'public-resolvers.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
[anonymized_dns]
routes = [
{ server_name='cloudflare', via=['sdns://...'] }
]
# EDNS0 — Extension DNS
# Позволяет DNS-ответы больше 512 байт (лимит классического DNS)
# Необходим для DNSSEC, больших TXT-записей, IPv6
# Проверяем поддержку EDNS0
dig +edns=0 +bufsize=4096 example.com
# ;; OPT PSEUDOSECTION:
# ; EDNS: version: 0, flags:; udp: 4096
# TCP fallback — если ответ не помещается в UDP даже с EDNS
# DNS автоматически переключается на TCP
dig +tcp example.com
# ;; ->>HEADER<<- ... , QUERY: 1, ANSWER: 1
# ;; Query time: 15 msec ← TCP чуть медленнее, но надёжнее
# Фаервол должен разрешать DNS по TCP!
# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
# iptables -A INPUT -p udp --dport 53 -j ACCEPT
Мы стандартизировали DNS over TLS для всех VM КлаудВан в режиме opportunistic — если upstream поддерживает TLS, используем его, иначе fallback на plain DNS. Для параноидных клиентов предложили strict режим с dnscrypt-proxy.
Оставить комментарий