web-dev-qa-db-ja.com

すべてのアウトバウンドUDP DNS要求をローカルホストDNSサーバーにリダイレクトする

すべてのアウトバウンドDNS要求(ローカルから作成)をローカルホストで実行されているトンネルにリダイレクトしようとしています。127.0.0.1:5353でUDPをリッスンします。

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 127.0.0.1:5353

でテストする

nc -u -l -p 5353

nc -u 127.0.0.1 53

は問題なく、udpセッションは機能していますが、テストしようとしています

nc -u 8.8.8.8 53

ncリスニングはトラフィックを受信できますが、応答は失敗します

送信2、rcvd 2:接続が拒否されました

ながら

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 192.168.1.108:5353

は正しく機能し、同じWi-Fiで実行されているデバイスは正常に受信および応答できます。

お手数をおかけしますが、よろしくお願いいたします。

編集:TCP=で作成されたDNSクエリは個別に処理されるため、考慮する必要はありません。

2
Xiaokang Wang

DNS UDPベースのリクエストをリダイレクトする場合、DNSデーモン/プロキシがポート5353/UDPでリッスンしている場合は、次のことを行う必要があります。

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.1:5353

ループは必要ないため、ソースは使用する内部ネットブロック/ネットワークである必要があります(つまり、外部に対してDNS要求を行う必要がある場合があります)。

マルチホームマシンの内部ネットワークのルーティングの場合、ソースネットワークを必要とせずにインターフェイスを適用することもできます。

iptables -i eth0 -t nat -A PREROUTING  -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.1:5353

次のように宛先をブラックリストに登録している限り、ポート53でも実行できます。

iptables -t nat -A PREROUTING  ! -d 127.0.0.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.1:53

OUTPUTキューはローカルテストで機能する場合がありますが、リモートマシンと現在の構成では、PREROUTINGキューを使用することをお勧めします。

2
Rui F Ribeiro