我有一台运行 KVM 的 CentOS 服务器,需要将虚拟网络连接到互联网。网络必须经过路由或 NAT,不能桥接(端口安全)。如果可能的话,我想将网络连接到具有第二个 IP 地址的 eth0 别名,并将第一个 IP 留给主机,但可能可以反转这一点。客户机不提供需要互联网访问的服务,但需要访问主机。
我找不到任何关于仅使用 KVM 的网络设施执行此操作的说明。有很多文章提到如何连接一台机器或多台机器的单个端口,但没有讨论如何连接整个网络并让它处理机器之间的交换流量。有几篇文章建议使用路由虚拟网络,但在这种情况下,它似乎与 NAT 虚拟网络没有任何不同。
Open vSwitch 已被提及过几次,尽管现有的少量文档似乎讨论了使用网桥运行它。几篇文章说他们在 NAT 模式下运行它,然后继续设置看似网桥的东西。无论如何,我正在努力构建 OVS 以尝试设置它。
答案1
无论如何,主机上都需要一个网桥。否则,客户机如何与网络通信?区别在于您是否将主机接口添加到网桥并在第 2 层(以太网)进行转发,或者您不添加主机接口并在第 3 层(网络)进行转发。
因为端口安全已到位,所以只允许主机的 MAC 地址。因此您无法在第 2 层转发。您有两个第 3 层选项:使用主机路由(保留 IP)或 NAT(将 IP 重写为主机 IP)。
如果您路由,则网络的其余部分需要知道,要到达您的访客,它们会将流量发送到您的主机(这是访客网络的默认网关)。您没有获得路由子网,只有 2 个 IP。因此您必须进行 NAT。
客户机将其接口连接到网桥,然后您为来自网桥接口的 NAT 流量编写 IP 表规则。libvirt 将为您处理此问题。请参阅http://wiki.libvirt.org/page/Networking#NAT_forwarding_.28aka_.22virtual_networks.22.29