我的 VPS 上有两个接口:eth0
和eth0:0
. 我想在eth0:0
使用 iptables 时阻止端口 80 上的传入数据包。我试过这个,但它不起作用:
iptables -A INPUT -i "eth0:0" -p tcp --destination-port 80 -j DROP
Run Code Online (Sandbox Code Playgroud)
如果我更改eth0:0
为eth0
它可以正常工作。问题是什么?
简短的故事:您这样做的方式是正确的(根据您对问题的评论)。
长话短说:在Linux 上,foo:bar
当我们需要将多个网络设置分配给“foo”接口时,称为“foo”的网络“设备”是别名,例如,让它在同一条线路上的多个子网上做出响应。
这是一种笨拙的方法,并且与引导不一致。对于 IPv6,分配给接口 eth0 的所有地址都一起列在 eth0 条目下。有一种更现代的方法来做到这一点(通过ip addr
命令)。
您可以发现别名接口,因为它们:
的名称中有一个冒号,冒号左侧的部分是一个现存的接口名称,并且当您这样做时接口节ifconfig
很短。的HWaddr
也应该是相同的,该“父”接口。它们也不会被列在/proc/net/dev
. 如果你说ip addr
,eth0:0
会显示为接口的第二个地址eth0
。(查找以 开头的缩进线inet
)
别名和它们的父项共享许多设置和字段,因为它们共享物理层。内核不会将它们视为完全独立的接口。一方面,流量出现在父接口上,而不是别名上。您可能已经注意到别名甚至没有数据包/字节计数器!
如果您需要在别名接口上嗅探流量、防火墙等,则必须改用其父接口。由于别名与其父级的唯一区别是其 IPv4 设置,因此匹配别名流量的唯一方法是使用这些 IP 设置。使用iptables
,您可以匹配别名的 IPv4 地址,就像您在对答案的评论中所做的一样。
归档时间: |
|
查看次数: |
5847 次 |
最近记录: |