我感到困惑的是如何使用匹配规则在我的 iptables 中?
我是否使用 if 语句?
if [ -i == eth0 ]
then
iptables -A INPUT -j DROP
我错过了什么?
我如何知道源是否与我的内部网络 eth1 匹配?
答案1
好的,首先,如果您在路由器的两个不同分支上使用相同的 IP 地址,那就很糟糕。其次,如果您尝试过滤以本地 IP 进入的互联网流量,您实际上不必担心每个受人尊敬的 ISP 都会在其边缘过滤 RFC 1918 地址。第三,如果您在同一个广播域上使用相同的 IP,A) 这真的很糟糕,B) 它永远不会击中您的防火墙。
那么,这已经解决了。如何在 iptables 规则中指定接口是我思考你的询问。
你所做的就是传递-i <interface>
选项。
举例来说,我想丢弃所有来自外部的 ICMP 回显请求流量,我会这样做:
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
其中:
-A INPUT
是我要附加到的链(-A 表示附加)
-i eth0
是接口 eth0(-i 表示接口)
-p icmp
是 icmp 协议(-p 表示协议)
-m icmp
是匹配 icmp(-m 表示匹配)
--icmp-type 8
是回显请求
-j DROP
是跳转到丢弃规则
如果我想将其限制为仅一个主机 - 比如说 10.10.10.99,那么我会添加-d 10.10.10.99/32
以告诉它只有当目的地是主机 10.10.10.99 时才执行。规则如下:
-A INPUT -i eth0 -d 10.10.10.99/32 -p icmp -m icmp --icmp-type 8 -j DROP
答案2
类似下面的方法可能对你有用:
iptables -A 输入 -s 192.168.7.1 -i eth0 -j DROP
我读到的是:
如果在 eth0 接口上收到了来自 192.168.7.1 的输入数据包,则将其丢弃。