Uvedomil jsem si jednu slabinu. Prohlizec nejprve musi ziskat IP adresu DNS resolveru, treba "cloudflare-dns.com".
Prvni dotaz tedy nemuze jit na jmeno ale na IP adresu DNS serveru. Nejprve jsem si myslel, ze v certifikatu nebudou IP adresy, ale jsou tam, takze se pocita, ze prvni dotaz muze jit i na IP adresu treba 1.0.0.1 nebo 1.1.1.1. Ale IP adres je v certifikatu omezene mnozstvi, takze by firewall mohl tyto adresy zablokovat a tim DoH prakticky vyradit. Prohlizec by se musel pokusit ziskat IP adresy pres klasicke DNS a tam uz by zase mohlo dojit k filtrovani
Certifikat lze ziskat treba timto prikazem
$ gnutls-cli --print-cert cloudflare-dns.com 443 < /dev/null | tee x.pem
Vlastni data o DNS ulozena v certifikatu pak timto; takze staci zablokovat pristup na 4 IP adresy (2xIPv4+2xIPv6):
$ openssl x509 -in x.pem -noout -text | grep DNS DNS:*.cloudflare-dns.com, IP Address:1.1.1.1, IP Address:1.0.0.1, DNS:cloudflare-dns.com, IP Address:2606:4700:4700:0:0:0:0:1111, IP Address:2606:4700:4700:0:0:0:0:1001
Jeste jeden komentar. Chybejici IP adresa v certifikatech Google pro DoH je problem:
$ gnutls-cli dns.google.com 443 < /dev/null $ host dns.google.com $ gnutls-cli 172.217.23.206 443 < /dev/null
Srovnejte s
$ gnutls-cli 9.9.9.9 443 < /dev/null $ gnutls-cli 1.0.0.1 443 < /dev/null