Tproxy を使用してリダイレクトすると内部で何が起こるのかを知りたいです。
iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TPROXY --tproxy-mark 1 --on-port 40001
PREROUTING
これは、iptables の mangle テーブル内にあります。
私の知る限り、ルーティングの決定はPREROUTING
チェーンの後に行われます。
上記のようにTproxyを使用してリダイレクトする場合。
パケットはip rule
&を通過しますrouting table
か? それともローカルの 40001 ポートに直接送信されますか?
答え1
私も同じ問題を抱えています。TPROXY
を使用するとルーティング テーブルが機能しないように見えるので、何が起こったのかを知りたいです。
Chain PREROUTING (policy ACCEPT 887 packets, 200K bytes)
pkts bytes target prot opt in out source destination
20M 4462M TPROXY_SRV_eth3.1 all -- * * 0.0.0.0/0 0.0.0.0/0
Chain TPROXY_SRV_eth3.1 (1 references)
pkts bytes target prot opt in out source destination
225 14048 TPROXY tcp -- eth3.1 * 0.0.0.0/0 172.168.2.0/24 tcp dpt:8000 TPROXY redirect 172.168.2.3:8000 mark 0x1/0x1
fwmark 1 のルートテーブル
local default dev lo scope host
IPルールは
0: from all lookup local
1: from all fwmark 0x1 lookup 1
10: from all fwmark 0x29 lookup 41
10: from all fwmark 0xc lookup test
32766: from all lookup main
32767: from all lookup default
tcpdump でキャプチャできないため、パケットがテーブル 1 を通過しないことがわかりました。
どなたか助けていただけませんか