让我们假设以下配置:宣布 IP 子网的路由器和一些基于 Proxmox 的 KVM 主机。每个基于 Proxmox 的虚拟化主机运行多个由客户管理的虚拟服务器,每个虚拟服务器都分配一个或多个 IP。
如何防止(未配置或恶意)虚拟服务器宣布不属于其服务器的 IP?
我能想到的最好的办法是使用iptables
-firewall 规则来阻止任何流量,除了具有正确目标地址的传入流量和具有正确源地址的传出流量。这应该可行(但也会阻止我猜想的任何广播流量,认为这对于那种情况是可以接受的)。但是,有没有更好的方法来做到这一点(无需更改路由器)?这个问题的常见做法是什么?
IPTables 无法阻止 DHCP 流量,因为它在防火墙之前使用绑定到 IP 堆栈的数据包过滤器。这个链接讲的是 CentOS,但是原理是一样的。
如果您是这些主机上的另一个客户,请向您的提供商的 NOC 提出紧急支持票,表明网络上有一个流氓 DHCP 服务器,他们应该(如果他们的工作正常)很快就跳上它。如果这是您的硬件,这些虚拟机正在运行并且您无权访问虚拟机广播,我会禁用网络并让客户通过控制台连接以解决问题。
在弄清楚这
iptables
不合适之后,部分感谢 Christophers 上面对那个信息的回答,我做了一些阅读ebtables
,只是为了弄清楚 Proxmox 已经内置了防止 IP 欺骗的支持。只需将以下规则添加到 Proxmox 中的每个虚拟机防火墙设置(请参阅
/etc/pve/firewall/<VMID>.fw
文件)并适用于 IPv4 和 IPv6:无论如何,这已经隐藏在官方文档中:请参阅IP 集>标准 IP 集 ipfilter-net*部分