web-dev-qa-db-ja.com

OpenWRTで直接DNS要求を再ルーティングします

OpenWRTを搭載したルーターでは、DNSポイズニングにdnsmasqを使用して広告をブロックしています。ホストがリストにある場合、ルーターは192.168.99.99でDNS要求に応答します。これは、常に1x1の透過GIF(pixelservメソッド)を提供します。

ただし、ローカルデバイスは、独自のDNSサーバーを直接使用することでこれをバイパスできます。 広告がブロックされるようにこれらのDNS要求を再ルーティングするにはどうすればよいですか?

次のようなコマンドを試しました(8.8.8.8と8.8.4.4はDNSサーバー、192.168.1.102はソースデバイス、192.168.1.1はルーターのIP):

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

OpenWrt管理パネル->ソースNATを介してトラフィックルールを追加し、「LANのIP 192.168.1.102から任意のホストへの任意のTCP、UDP、LANのポート53」に一致させ、アクション「ソースIP192.168.1.1に書き換える」を追加してみました。 、ポート53 "。どちらの方法でも、これはiptablesでも実現されると思います。

しかし、DNSクエリはまだ解決されていることがわかりました。

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)

たぶん、たとえばdnsmasqを介した、まったく異なる方法が機能するでしょうか。しかし、これは見つかりませんでした。

(別のリモートDNSサーバーに再ルーティングする方法についての説明を見つけましたが、ここでは役に立ちません。主に リージョンのブロック解除 または TomatoまたはDD-WRTの場合 。また、これは私の 前の質問 )と密接に関連しています

3
TacoV

iptables -t nat -A PREROUTING -i br-lan -p udp --dport 53 -j DNAT --to 192.168.1.1を使用します

説明 iptablesはチェーンを使用してトラフィックをルーティングします。 iptables -t nat -A PREROUTINGを使用して、新しいルールを追加するチェーンを選択します。次に、OpenWRTのLANインターフェイスであるインターフェイス-i br-lanを選択して、インターネットに送信されるトラフィックのみを含むように選択を絞り込みます。 DNS udp 53のみをリダイレクトしているため、-p udp --dport 53を追加します。 DNSパケットのみを取得するようになったので、-j DNAT --to 192.168.1.1を使用してそれらをローカルDNSサーバーにリダイレクトします。宛先は任意のDNSサーバーに置き換えることができます。

お役に立てれば。

4
Zalmy