我想问一下使用 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
我发现数据包没有经过表 1,因为我无法通过 tcpdump 捕获它。
有谁能帮助我