我想在 ubuntu 16.04 上的 KVM 中创建 6 个虚拟机。但我希望这些虚拟机可直接从外部访问。更详细地讲,我有另一台 PC 连接到第一台 PC,我希望能够 ping 通所有具有指定 IP 的虚拟机。
所以我需要根据这里问题是我只有一个以太网端口,而且据我所知我只能将它用于其中一个虚拟机。
有没有办法为虚拟机创建 6 座桥?
谢谢
答案1
您似乎对网络术语有些误解。Linux 上的网桥与 NAT 或路由无关。它实际上只是一个完全用软件实现的以太网交换机。
就您而言,您应该能够通过一个桥接器实现您想要的功能,并且所有虚拟机都连接到该桥接器。从那里,您有两个选择:
将主机系统用作虚拟机的实际桥接器,方法是将常规以太网接口之一连接到桥接器。这样不会进行路由和 NAT。每个虚拟机将从主网络上运行的任何 DHCP 服务器获取其 IP 和网络信息,并且可以使用分配给它的任何 IP 地址单独访问。这是我建议使用的方法,除非您真的需要主机系统充当防火墙,您的主网络不是以太网,或者您无法在 NetworkManager 开始尝试获取地址之前在系统启动期间设置网桥。这里的优点是简单。
将主机系统用作路由器。这要求不将网桥连接到任何物理接口,并且需要手动设置 iptables 或 nftables 规则才能正确路由。与第一种方法相比,这种方法有三个优点:您可以将主机用作防火墙,您的主网络链路不必是以太网,并且在您已经拥有主机系统的网络地址后可以轻松设置。您可以通过这种方式进行 NAT,但这不是强制性的(尽管它比其他路由方案更容易设置)。您还可以进行各种其他地址映射,包括听起来像您想要的 1:1 映射。
无论哪种情况,你都需要进行设置外部NetworkManager(事实上,如果您在服务器上运行这些,只需摆脱 NetworkManager,除非您定期需要切换网络配置,否则它会浪费处理器周期),因为它会尝试强制您进行第二种设置,否则会妨碍您。