Iptables 丢弃发往接口 IP 地址的转发流量

Iptables 丢弃发往接口 IP 地址的转发流量

我有一套小型 VPN 设置,我使用 IP 表将进入 vpn0 接口的流量 nat 到 eth0 接口的 IP 地址。这些规则如下所示:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i vpn0 -j ACCEPT

具有此配置的设备会插入许多不同的网络子网,并且其 IP 地址通常是动态获取的。我使用 nmap 通过此连接运行大量主机发现扫描,并希望丢弃进入 vpn0 接口的流量,该流量发往 eth0 接口上配置的任何 IP 地址,以保持结果准确,而不必担心手动省略 vpn 主机。由于此设备正在路由流量,我不能仅使用目标接口作为目标,因为这会阻止我的所有转发流量。

我知道 iptables 支持将主机名作为目标,因此一旦获得 IP 地址,我可能会尝试动态添加规则,并创建一个将解析为 eth0 IP 地址的主机名。但是,这似乎很混乱。

我还缺少什么更好的方法吗?

答案1

我使用的解决方案并不像希望的那样优雅,但仍然很简单。

我所做的就是从接口获取 IP 地址eth0并将其分配给变量,然后在 iptables 规则中使用该变量:

ETH0IP=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
iptables -I INPUT -i vpn0 -d $ETH0IP -j DROP

此外,我的问题表明我不理解该FORWARD表,因为这不是用于发往本地接口的流量的表。规则应该在INPUT表中实施。

相关内容