一台主机,两台虚拟机无法互相ping通。怎么解决

一台主机,两台虚拟机无法互相ping通。怎么解决

我们在KVM环境中运行虚拟机。我们将一个设置为运行等的开发服务器Apache,另一个设置为Windows开发环境。

两个环境均已设置并运行良好。但是,他们无法互相 ping 通。我想知道是否有一个明确的解决方案。

这就是正在发生的事情。

来自主持人:

  Cannot ping either of 2 VM's (one `Linux`, one `Windows`)

从任一虚拟机:

  Cannot ping host
  Cannot ping each other

来自其他网络计算机(例如我公司网络内的笔记本电脑)

  Successfully ping host at 192.168.0.64
  Successfully ping VM1 (Linux) 192.168.0.43
  Successfully ping VM2 (Windows) 192.168.0.84

答案1

很明显,机器正在以桥接模式进行通信,因为您可以从 KVM 环境外部对主机和两个虚拟机执行 ping 操作。

您的问题是内核中的反欺骗保护,它会丢弃目的地不是主机 IP 地址的数据包。

对于运行时,请在主机服务器的命令行中执行此操作:

 sudo sysctl -w net.ipv4.conf.default.rp_filter=0
 sudo sysctl -w net.ipv4.conf.all.rp_filter=0

为了让它在启动后继续存在,请将以下行添加到/etc/sysctl.conf

 net.ipv4.conf.default.rp_filter=0
 net.ipv4.conf.all.rp_filter=0

来自评论/etc/sysctl.conf(略有改变):

rp_filter:启用欺骗保护(反向路径过滤器)。

所有接口中的源地址验证,以防止某些欺骗攻击

答案2

据我所知,一般连接类型应该是NAT。因此,在鼠标右键单击特定虚拟机的设置中,您可以更改网络类型。

PS:在局域网中隐藏计算机以防止 ping,我认为这是不可能的。但它值得一看。

相关内容