为什么我的iptables规则不起作用?


9

我的VPS上有两个接口:eth0eth0:0。我想eth0:0使用iptables 阻止端口80上的传入数据包。我试过了,但是不起作用:

iptables -A INPUT -i "eth0:0" -p tcp --destination-port 80 -j DROP

如果我更改eth0:0eth0它可以正常工作。问题是什么?


4
我以这种方式解决了我的问题:我的接口是虚拟的,因此iptables无法访问它,所以我通过接口的IP而不是接口名称来阻止接口我的命令是:iptables -A INPUT -p tcp --dport 80 -d {ETH0:0的IP} -j拒绝
sinoohe 2011年

Answers:


6

简短的故事:您的做法是正确的(根据您对问题的评论)。

长话大说:在Linux上,称为foo:bar“ foo” 的网络是“ foo”的别名,当我们需要为“ foo”接口分配多个网络设置(例如,使其在同一条线上的多个子网上响应)时使用。

这是一种笨拙的方法,并且与启动不一致。对于IPv6,所有分配给接口eth0的地址都在eth0条目下列出。有一种更现代的方法(通过ip addr命令)。

您可以发现别名接口,因为它们:的名称中带有冒号,冒号左侧的部分是现存的接口名称,并且这样做时的接口节ifconfig非常短。的HWaddr也应该是相同的,该“父”接口。他们也不会在中列出/proc/net/dev。如果要说的话ip addreth0:0将显示为接口的第二个地址eth0。(寻找以开头的缩进行inet

别名及其父母共享许多设置和字段,因为它们共享物理层。内核不会将它们视为完全独立的接口。首先,流量显示在接口上,而不是别名上。您可能已经注意到别名甚至没有数据包/字节计数器!

如果需要在别名接口上监听流量,防火墙等,则必须使用其父级。由于别名与其父代的唯一区别是其IPv4设置,因此匹配别名上的流量的唯一方法是使用这些IP设置。使用iptables,您可以将别名匹配IPv4地址,就像您在答案中的注释中所做的一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.