%E3%81%AF%E3%80%81%E5%AE%9B%E5%85%88%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E5%88%B6%E9%99%90%E3%81%AB%E3%82%88%E3%82%8Audp%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%83%88%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82.png)
オペレーティング システム情報。
Linux raspberrypi 4.14.98-v7+ または Linux debian-stretch-1 4.9.0-11-amd64
どうしたの?
UDPトラフィックをリダイレクトできるサービス(ss-redir)を開始します
このサービスはUDP 1080ポートを開きます
すべてのDNSクエリをudp 127.0.0.1:1080ポートにリダイレクトしたい
あなたは何をしましたか?
ip route add local default dev lo table 100
ip rule add fwmark 1 lookup 100
iptables -t mangle -A PREROUTING -p udp --dport 53 -j TPROXY --on-port 1080 --tproxy-mark 0x01/0x01
nslookup www.google.com
何を見ることを期待していましたか?
いくつかのUDPパケットがPREROUTINGチェーンを通過しました
正確な量は最初の列(パケット)と2番目の列(バイト)に表示されるはずです。
代わりに何を見ましたか?
pkts bytes target prot opt in out source destination
0 0 TPROXY udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 TPROXY redirect 0.0.0.0:1080 mark 0x1/0x1
詳細な構成。
root@User:~# cat /etc/resolv.conf
nameserver 8.8.8.8
これは私のサービスです
root@User:~# netstat -ntulp
udp 0 0 0.0.0.0:1080 0.0.0.0:* 3771/ss-redir
それで何をしましたか?
DNS クエリの宛先ポートは 53 ではないようですが、Wireshark によってキャプチャされたパケットは、dport が 53 で、dest ip が 8.8.8.8 であることを示しています。
そこで、PREROUTING チェーンのそのルールの前に、他のルールをいくつか追加しました。
iptables -t mangle -I PREROUTING --prot udp -d myserverip/32 -j RETURN
iptables -t mangle -I PREROUTING --prot udp -d 192.168.128.10/32 -j RETURN
iptables -t mangle -I PREROUTING --prot udp -d 127.0.0.0/24 -j RETURN
実行
nslookup www.google.com
iptables -t mangle -L -nv
出力は次のようになります。
Chain PREROUTING (policy ACCEPT 90 packets, 6699 bytes)
pkts bytes target prot opt in out source destination
0 0 RETURN udp -- * * 0.0.0.0/0 myserverip
1 29 RETURN udp -- * * 0.0.0.0/0 127.0.0.0/24
0 0 RETURN udp -- * * 0.0.0.0/0 192.168.128.10
0 0 TPROXY udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 TPROXY redirect 0.0.0.0:1080 mark 0x1/0x1
UDPパケットはまだss-redirを通過しません
何を間違えたのか分かりません。この質問に頭がおかしくなりそうです。誰か助けてくれませんか?
アドバイスをいただければ幸いです。
どうもありがとう