Reencaminhar pedidos DNS directos no OpenWRT

2

No meu roteador com OpenWRT, eu uso dnsmasq para envenenamento de DNS para bloquear anúncios. Se o host estiver na lista, o roteador responderá à solicitação de DNS com 192.168.99.99, que apenas e sempre exibirá um gif transparente de 1x1 (o método pixelserv).

No entanto, os dispositivos locais podem ignorar isso usando diretamente seu próprio servidor DNS. Como posso redirecionar essas solicitações de DNS para que os anúncios sejam bloqueados? .

Eu tentei comandos como estes (8.8.8.8 e 8.8.4.4 sendo os servidores DNS, 192.168.1.102 o dispositivo de origem, 192.168.1.1 o IP do meu roteador):

iptables -t nat -A PREROUTING -d 8.8.8.8 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A PREROUTING -d 8.8.4.4 -j DNAT --to-destination 192.168.1.1

# or:
iptables -t nat -A PREROUTING -i wlan0 -s 192.168.1.102 -p udp --dport 53 -j REDIRECT --to-port 53
iptables -t nat -A PREROUTING -i wlan0 -s 192.168.1.102 -p tcp --dport 53 -j REDIRECT --to-post 53

Eu tentei adicionar adicionando uma regra de tráfego através do painel de administração do OpenWrt - > NAT de origem, correspondente a "Qualquer TCP, UDP do IP 192.168.1.102 no lan Para qualquer host, porta 53 no lan", com ação "Regravar para o IP de origem 192.168.1.1, porta 53". Eu acredito que isso também é efetuado no iptables.

Mas acho que as consultas do DNS ainda estão sendo resolvidas:

root@OpenWrt:~# tcpdump -vvv -i wlan0 port 53

Chromecast.lan.42591 > google-public-dns-a.google.com.domain: [udp sum ok] 57897+ A? pubads.g.doubleclick.net. (42)
google-public-dns-a.google.com.domain > Chromecast.lan.42591: [udp sum ok] 57897 q: A? pubads.g.doubleclick.net. 5/0/0 pubads.g.doubleclick.net. [5h59m59s] CNAME partnerad.l.doubleclick.net., partnerad.l.doubleclick.net. [4m59s] A 74.125.136.157, partnerad.l.doubleclick.net. [4m59s] A 74.125.136.156, partnerad.l.doubleclick.net. [4m59s] A 74.125.136.155, partnerad.l.doubleclick.net. [4m59s] A 74.125.136.154 (132)

Talvez um método completamente diferente, por exemplo, através do dnsmasq, funcionasse? Eu não consegui encontrar isso, no entanto.

(Eu encontrei algumas explicações sobre como redirecionar para outro servidor DNS remoto, mas isso não vai me ajudar aqui. É principalmente para ou para Tomato ou DD-WRT Além disso, isso está intimamente relacionado à minha pergunta anterior )

    
por TacoV 23.07.2015 / 22:51

1 resposta

2

Use iptables -t nat -A PREROUTING -i br-lan -p udp --dport 53 -j DNAT --to 192.168.1.1

Explicação O iptables usa correntes para rotear o tráfego. Usamos iptables -t nat -A PREROUTING para selecionar a cadeia que queremos adicionar a nova regra. Em seguida, restringimos a seleção para incluir apenas o tráfego que sai para a Internet selecionando a interface -i br-lan , que é a interface LAN do OpenWRT. Como estamos apenas redirecionando DNS udp 53 , adicionamos -p udp --dport 53 . Agora que só recebemos pacotes DNS, os redirecionamos para o servidor DNS local usando -j DNAT --to 192.168.1.1 . Você pode substituir o destino com qualquer servidor DNS.

Espero que isso ajude.

    
por 24.07.2015 / 11:27