小编Mir*_*chi的帖子

iptables REDIRECT 仅适用于第一个数据包

如果数据包包含例如字符串,我需要将目标端口 15000 的所有 UDP 数据包重定向到端口 15001 test。我有这两个简单的规则:

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 15000 -m string --string 'test' --algo bm -j LOG --log-prefix='[netfilter] '
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 15000 -m string --string 'test' --algo bm -j REDIRECT --to-ports 15001
Run Code Online (Sandbox Code Playgroud)

奇怪的行为:

  • 如果第一个数据包包含字符串,则对连接的所有test数据包进行重定向 ;
  • 如果连接的第一个数据包不包含test,则即使后续数据包包含 ,也永远不会进行重定向test

但是,所有匹配规则的数据包都会被正确记录。

我尝试将曲目信息添加到规则中:

-m state --state NEW,ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

但行为是一样的。一些想法?

这是完整的iptables规则集:

过滤表:

Chain INPUT (policy ACCEPT)
target     prot opt source …
Run Code Online (Sandbox Code Playgroud)

linux firewall iptables

4
推荐指数
2
解决办法
5551
查看次数

标签 统计

firewall ×1

iptables ×1

linux ×1