我有以下规则:
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 规则。是否可以过滤预路由的数据包?
答案1
让我们分析一下你的规则。
-t nat -I PREROUTING -d 1.2.3.4 ... -j DNAT --to 10.11.12.16
这里,带有目的地址1.2.3.4 的 IP 地址经过 DNAT 处理。这意味着目的地址将被替换为 10.11.12.16
-I FORWARD -s 10.11.12.16 ... -j RTORR
此规则匹配以下数据包源地址10.11.12.16。如果您希望通过第一条规则进行 DNAT 处理的数据包能够与该规则匹配……那么,请再想一想。
如你所见,第一条规则改变了目的地址,而此规则尝试匹配源地址。