我的所有流量都来自端口 22。我选择了一个随机端口 221,我希望在该端口上路由所有流量。
这是我使用的规则
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 221
or iptables -t nat -A OUTPUT -p tcp --dport 22 -j REDIRECT --to-ports 221
iptable --list
target prot opt source destination
tcp -- anywhere anywhere tcp dpt:ssh
tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:221
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt
我正在使用命令检查流量
tcpdump -i any port 221
没有任何内容路由到端口 221。我做错了什么?
答案1
入口接口先于 IP 堆栈看到数据包。即,对源自系统外部的数据包看不到 NAT 影响。他们的目标端口已更改,您只是看不到它tcpdump
。不过,您可以通过连锁店中的 Packjet 计数器看到它filter/INPUT
。
这与本地生成的数据包不同。它们在到达接口之前先到达 IP 堆栈。因此,您可以看到环回接口上具有 DNAT 效果的数据包。