我有大约 4 个 IP 地址不断随机访问我网络上的端口,我想阻止它们。因此,我在 OpenWRT 路由器上添加了如下规则:
iptables -I INPUT -s FIRST_PUBLIC_IP -p tcp --dport 32400 -j DROP
iptables -I INPUT -s SECOND_PUBLIC_IP -p tcp --dport 32400 -j DROP
iptables -I INPUT -s THIRD_PUBLIC_IP -p tcp --dport 32400 -j DROP
iptables -I INPUT -s FOURTH_PUBLIC_IP -p tcp --dport 32400 -j DROP
然后我还有一条规则,每当该端口上有连接时,都会写入日志
iptables -I FORWARD -p tcp --dport 32400 -m limit --limit 1/min -j LOG --log-prefix "PLEX Connection "
因此,我认为会发生的情况是,如果列出的 4 个 IP 地址中有 1 个尝试连接该端口,它们将被丢弃,永远不会进入前向链。其他一切都会触发该日志记录规则。
但是,这些 IP 地址仍通过 FORWARD 规则记录。它们现在处于活动状态,并在重新启动时永久生效。我忽略了什么?
答案1
浏览 FORWARD 表的数据包不会到达 INPUT 表。因此,如果您的数据包确实到达了 FORWARD 表,则它们可能正在被网络地址转换或类似操作 — — 这没问题,但这意味着您不能使用 INPUT 规则来影响它们。
在 Wikipedia 的 Netfilter 条目中有一个很棒的参考图 - 虽然读起来很艰巨,但很适合参考: https://en.wikipedia.org/wiki/Netfilter#/media/File:Netfilter-packet-flow.svg。
但我怀疑你对数据包做了一些破坏,这就是为什么它不是立即显而易见的原因。考虑将你的规则(尽管很笨拙)添加到 nat 中的 PreRouting 中,或者添加到 FORWARD 表中,然后观察行为变化。
祝你好运,如果需要的话,请扩展你的问题。