我想将端口 162 上接收到的 udp 数据包转发到另一个端口,例如:8981
我已经执行了以下命令
iptables -A PREROUTING -t nat -p tcp --dport 162 -j REDIRECT --to-port 8981
我发现我现在在 8981 上接收到重复的数据包。
有人可以指导我正确的做法吗?
另外如何删除上述规则?
TIA,/天
答案1
我们将保留“重复数据包”问题,直到有更多可用的诊断数据,但规则删除很容易。
要删除 iptables 规则,只需将其替换-A
为-D
:
iptables -D PREROUTING -t nat -p tcp --dport 162 -j REDIRECT --to-port 8981
如果您要使用-I N
,则可以使用iptables -D N
,但如果随后插入了任何规则,则这样做会有风险。
如果你真的搞砸了,甚至不知道iptables
你运行了什么命令(bash
由于原因而有命令历史记录......)那么你可以像这样列出链中的所有规则:
iptables -t nat -L PREROUTING --line-numbers
这将获得如下输出:
Chain int2ext (1 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
2 ACCEPT all -- 192.0.2.0/24 0.0.0.0/0
3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
4 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
然后,找到num
要删除的规则对应的列条目,并运行
iptables -t nat -D PREROUTING <num>