从虚拟机到主机的网络访问

从虚拟机到主机的网络访问

我在 Ubuntu 主机上运行了一个简单的基于 KVM 的虚拟机。虚拟机已连接到 NAT 虚拟网络。它可以从主机访问,但无法连接回主机。

从虚拟机,我可以 ping 主机 IP,但无法运行 traceroute 或 ssh 到主机。不过,我可以 traceroute 到本地 LAN 上的主机网关 IP(路由器 IP)。

主机/虚拟机上没有运行防火墙/iptables,而是net.ipv4.ip_forward = 1在主机上设置。为了让虚拟机访问主机,我还缺少什么?

谢谢。

答案1

根据我的经验,在 KVM 中设置主机 <-> 客户机通信的最佳方法是在专门用于此目的的 VM 上设置第二个 NIC。这里有一篇很好的文章解释了细节:

https://www.furorteutonicus.eu/2013/08/04/enabling-host-guest-networking-with-kvm-macvlan-and-macvtap/

实际上,它就像设置使用 macvlan 的第二个网络或甚至将 VM 直接放在与主机相同的网络上的桥接网络一样简单(取决于您如何配置网络以及如何锁定 VM 对主机网络的访问,这可能对您有用,也可能没用)。

将第二个 NIC 添加到 VM 后,在客户操作系统中配置一个静态 IP,然后使用该 IP 进行主机 <-> 客户通信。

当然,您需要确保不仅允许主机上的流量,还允许来宾操作系统(在虚拟机中)上的流量。

相关内容