是否有可能在iptables中过滤prerouted数据包?

我有以下规则:

iptables -t nat -I PREROUTING -d 1.2.3.4 -p udp -m udp --dport 6881 -j DNAT --to-destination 10.11.12.6 iptables -N RTORR iptables -I FORWARD -s 10.11.12.16 -p udp -m udp --sport 6881 -j RTORR iptables -A RTORR -d 2.3.4.5 -j ACCEPT iptables -A RTORR -j DROP 

但过滤不起作用。 看起来像数据包没有达到FILTER规则。 是否有可能过滤预先路由的数据包?

我们来分析一下你的规则。

 -t nat -I PREROUTING -d 1.2.3.4 ... -j DNAT --to 10.11.12.16 

这里, dest-address为1.2.3.4的报文是DNAT-ed。 这意味着dest-address将被10.11.12.16取代

 -I FORWARD -s 10.11.12.16 ... -j RTORR 

该规则匹配src-address为10.11.12.16的报文。 如果你期望第一条规则的DNAT-D匹配这个规则……好吧,再想一想。

正如你所看到的,第一条规则改变了dest-address ,而这个规则试图与src-address匹配。