Сама технология - https://www.rfc-editor.org/rfc/rfc9230.html
Работает DNS OVER HTTPS, но с добавлением еще одного звена relay
Как это выглядит на практике:
Клиент - зашифрованный запрос - Relay - переупаковка - Target-резолвер Cloudflare или другие.
Содержимое запроса зашифровано так, что relay видит IP клиента, но не видит содержимое запроса. Зашифровано ключом target-резолвера, а target-резолвер видит содержимое, но не видит IP клиента видит только IP relay.
Ни одна из сторон по отдельности не имеет обеих частей одновременно.
Зачем это нужно:
1. Разделение IP и содержимого запроса — ни relay, ни target-резолвер не видят полной картины "кто и что резолвит".
2. Если провайдер/DPI режет соединения к самому резолверу по домену в TLS ClientHello SNI — например, блокирует cloudflare-dns.com напрямую то при ODoH клиент устанавливает TLS-соединение с relay'ем, а не с target-резолвером. SNI, который видит DPI — это домен relay'я, который может не входить в списки блокировок.
Пока что данный протокол можно добавить только через dnscrypt-proxy2, но для этого надо устанавливать entware.
Пример настройки relay как у меня в dnscrypt-proxy2
[sources.relays]
urls = [
'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md',
'https://download.dnscrypt.info/resolvers-list/v3/relays.md',
]
cache_file = 'relays.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
refresh_delay = 73
prefix = ''
### ODoH (Oblivious DoH) servers and relays
[sources.odoh-servers]
urls = [
'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-servers.md',
'https://download.dnscrypt.info/resolvers-list/v3/odoh-servers.md',
'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/odoh-servers.md',
]
cache_file = 'odoh-servers.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
refresh_delay = 73
prefix = ''
[sources.odoh-relays]
urls = [
'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-relays.md',
'https://download.dnscrypt.info/resolvers-list/v3/odoh-relays.md',
'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/odoh-relays.md',
]
cache_file = 'odoh-relays.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
refresh_delay = 73
prefix = ''
Актуальные списки резолверов/relay/ODoH-серверов: github.com/DNSCrypt/dnscrypt-resolvers
Пример полного конфига с комментариями: example-dnscrypt-proxy.toml
Репозиторий и вики dnscrypt-proxy2: github.com/DNSCrypt/dnscrypt-proxy