Estou usando pihole com um servidor DNS upstream do Quad9 DoH. O DNS upstream e o pihole são configurados com o docker por meio de um docker-compose.yml file
, com o servidor DoH upstream usando o serviço cloudflared .
version: "3.5"
networks:
network-pihole:
name: "dns-pihole"
driver: bridge
ipam:
driver: default
config:
- subnet: 192.10.0.0/24 #Internal Docker Network between pihole and wirguard, bridged
cloudflared:
image: crazymax/cloudflared:latest
container_name: cloudflared
ports:
- '5053:5053/udp'
- '5053:5053/tcp'
environment:
- "TZ=Europe/Budapest"
- "TUNNEL_DNS_UPSTREAM=https://9.9.9.9/dns-query,https://149.112.112.112/dns-query"
# - "TUNNEL_DNS_UPSTREAM=https://1.1.1.1/dns-query,https://1.0.0.1/dns-query"
restart: unless-stopped
networks:
network-pihole:
ipv4_address: 192.10.0.2
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
- "TZ=Europe/London"
- "PIHOLE_DNS_=192.10.0.2#5053"
dns:
- 127.0.0.1
- 9.9.9.9
# Volumes store your data between container upgrades
volumes:
- "./etc-pihole/:/etc/pihole/"
- "./etc-dnsmasq.d/:/etc/dnsmasq.d/"
cap_add:
- NET_ADMIN
restart: unless-stopped
networks:
network-pihole:
ipv4_address: 192.10.0.3
Dentro do serviço cloudflared em ambiente: . Eu defino as TUNNEL_DNS_UPSTREAM=
configurações para https://9.9.9.9/dns-query,https://149.112.112.112/dns-query
. E o serviço pihole sob dns: para 9.9.9.9
.
Tudo funciona muito bem, no entanto, quando eu navego para isso e este verificador do cloudflare, ele diz que não estou usando dns sobre https / dns seguro:
No entanto, se eu usar cloudflares DoH, defino as TUNNEL_DNS_UPSTREAM=
configurações para TUNNEL_DNS_UPSTREAM=https://1.1.1.1/dns-query,https://1.0.0.1/dns-query
e o serviço pihole em dns: to 1.1.1.1
, em seguida, execute os dois testes cloudflare novamente, agora diz: Using DNS over HTTPS (DoH) yes and a green tick for secure dns .
Não sei por que esses testes não funcionam para Quad9 DoH. Existe outra maneira de verificar se estou usando Quad9 DoH?
Eu nem tenho certeza se eu poderia usar o wireshark para ver os pacotes para ver se as consultas de DNS estão criptografadas? Sou muito novo no wirehshark, então se esse fosse um método de verificação do Quad9 DoH, não tenho certeza do que estaria procurando.
O verificador da Cloudflare não tem como saber se você está usando DNS sobre HTTPS ou não em geral. A única coisa que ele sabe é se você está usando os serviços Cloudflare DoH especificamente.
A maneira como esse verificador funciona é que a Cloudflare configurou seus servidores para responder de maneira diferente a determinados domínios, dependendo de como a consulta foi feita. A página da Web não pode realmente saber qual é a configuração do seu DNS, mas consulta alguns domínios especiais que apenas o 1.1.1.1 reconhecerá.
Por exemplo, se você perguntar 1.1.1.1 sobre o nome
is-cf.help.every1dns.net
, receberá uma resposta bem-sucedida, mas se perguntar a qualquer outro servidor DNS sobre o mesmo nome, ele dirá que o domínio não existe. (Da mesma forma, ois-dot
subdomínio só fornecerá resultados se a consulta chegar via DoT eis-doh
responderá apenas por DoH.)Mas todos esses subdomínios mágicos são específicos da Cloudflare – se você perguntar, por exemplo, 9.9.9.9 sobre qualquer um deles, ele sempre dirá que o domínio não existe, porque do ponto de vista global do DNS ele realmente não existe.
Comece com a filtragem de pacotes enviados para o servidor DNS configurado. Por exemplo, se você configurou servidores DNS
1.1.1.1
+1.0.0.1
e um URL DoH dehttps://1.1.1.1/dns-query
, você deve filtrar a captura para esses dois endereços IP.Filtro de captura (sintaxe libpcap):
host 1.1.1.1 or 1.0.0.1
A mesma sintaxe é usada para IPv6, por exemplo
host 1.1.1.1 or 2606:4700:4700::1111
.Filtro de exibição (sintaxe Wireshark):
ip.addr == 1.1.1.1 || ip.addr == 1.0.0.1
Para IPv6, a sintaxe é
ipv6.addr == 2606:4700:4700::1111
.Cleartext DNS será instantaneamente reconhecível como, bem, cleartext DNS – o Wireshark mostrará o conteúdo real de cada consulta e resposta.
Enquanto isso, o DoH e o DoT aparecerão como pacotes TLS. Ambos usam o mesmo tipo de TLS, e a principal maneira de distingui-los é observar o número da porta TCP: se você estiver usando DoT, verá uma conexão com a porta 853 dedicada "DNS sobre TLS", enquanto o DoH usa a mesma porta 443 que HTTPS em geral.
(Não é apenas o número da porta – o DoH literalmente coloca as consultas dentro de solicitações HTTP, enquanto o DoT não. Você não verá isso no Wireshark, por ser criptografado por TLS, mas isso não importa para seus propósitos de qualquer maneira. )
Observe que, como o DoH é indistinguível do HTTPS normal (como visitar o site https://1.1.1.1 em um navegador), a presença de pacotes TLS na porta 443 não significa muito – é também a ausência de pacotes DNS de texto simples em porta 53 que você também precisa prestar atenção.
Você está tentando determinar se os upstreams do pihole são DoH. Seu navegador, no entanto, provavelmente está fazendo consultas UDP simples e antigas.
Nesse cenário, os verificadores da Cloudflare só podem avaliar sua configuração de forma confiável se suas consultas de DNS estiverem sendo enviadas para seus servidores . Eles podem fazer isso, por exemplo, fazendo com que seu navegador consulte alguma string de subdomínio gerada aleatoriamente e, em seguida, verificando se seus servidores receberam uma consulta para esse subdomínio por DoH. Mas eles não podem fazer isso se você estiver enviando suas consultas DNS para servidores que eles não controlam.