DoT TCP :853 RFC 7858
DNS over TLS · шифрованный DNS в отдельном канале
Что это
DoT (DNS over TLS) — обёртка обычного DNS в TLS. Стандартизован в RFC 7858 (2016). Использует отдельный порт 853/tcp, который выделен именно под шифрованный DNS. Один запрос — одно TLS-соединение (обычно с keepalive).
Как выглядит на wire
клиент resolver
──────────────────────────────────
TCP SYN → :853
← SYN-ACK
ACK
TLS ClientHello →
← ServerHello + Certificate
Finished → ← Finished
── TLS-туннель установлен ──
[length:2][DNS query]
← [length:2][DNS response]
[length:2][DNS query 2]
← [length:2][DNS response 2]
Формат сообщений внутри TLS — как в обычном DNS over TCP: 2-байтовая длина, затем стандартное DNS-сообщение. Просто вся эта переписка идёт в TLS-туннеле.
Плюсы
- Отдельный порт — легко фильтровать/разрешать на файрволе.
- Простая реализация — обычный DNS + обычный TLS, без слоя HTTPS.
- Меньше метаданных — нет HTTP-заголовков с User-Agent, Cookie и т.д.
- Keepalive — одно TLS-соединение обслуживает много запросов, экономит handshake.
- По факту работает в РФ — на большинстве провайдеров проходит без блокировок.
Минусы
- Порт 853 палится — сам факт использования DoT легко детектится по номеру порта.
- SNI в открытом виде — DPI видит имя DNS-сервера в TLS ClientHello (лечится ECH, если поддерживает resolver).
- Требует явной поддержки в ОС/клиенте — не все приложения умеют.
Публичные DoT-серверы
| Провайдер | Адрес |
|---|---|
| Cloudflare | 1.1.1.1 / one.one.one.one |
8.8.8.8 / dns.google | |
| Quad9 | 9.9.9.9 / dns.quad9.net |
| NextDNS | <твой ID>.dns.nextdns.io |
| AdGuard | dns.adguard-dns.com |
| Яндекс | common.dot.dns.yandex.net |
Настройка клиента
Android (9+)
Settings → Network → Private DNS → hostname:
one.one.one.one
Всё, весь DNS системы теперь идёт по DoT.
Linux (systemd-resolved)
/etc/systemd/resolved.conf:
[Resolve] DNS=1.1.1.1#one.one.one.one 1.0.0.1#one.one.one.one DNSOverTLS=yes DNSSEC=yes
systemctl restart systemd-resolved
Проверка:
resolvectl status | grep -i tls
Linux (stubby)
apt install stubby # правишь /etc/stubby/stubby.yml — там DoT-серверы уже прописаны systemctl enable --now stubby # и в /etc/resolv.conf ставишь 127.0.0.1
Windows 11
Настройки → Сеть → адаптер → Свойства → DNS server assignment → Encrypted only (DNS over TLS).
macOS / iOS
Через профиль .mobileconfig — DoT нативно поддерживается с macOS 11 и iOS 14.
DoT vs DoH
См. подробное сравнение на /dns. Кратко:
- DoT — отдельный порт, чище архитектура, но легче фильтровать. В РФ работает.
- DoH — маскируется под HTTPS, но в РФ его режут ТСПУ (частично или полностью, зависит от оператора).