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


10

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

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

这就是正在发生的事情。

来自主持人:

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

从任何一个VM:

  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

4
您是否了解有关虚拟机网络配置的更多信息?您是否完全确定当其他网络计算机ping VM时,它们没有对网络上的其他随机计算机ping?(例如,您实际上可以使用浏览器访问apache服务器吗?)。
GregHNZ

我认为这可能是您的桥梁。除非您执行以下操作,否则内核的iptables将阻止您的计算机与其自身对话:echo“ 1”> / proc / sys / net / ipv4 / ip_forward; 无论如何,可能。
mikeserv 2014年

您使用什么命令来引导VM?
jobin 2014年

您是否在同一网络中有其他计算机(它们不在同一主机中)?这些机器能够对这些机器执行ping操作吗?
2014年

1
您是否为访客使用macvtap(wiki.libvirt.org/page/…)界面?
nkms

Answers:


1

很明显,机器以桥接模式进行通信,因为您可以从KVM环境外部对主机和两个VM进行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:启用欺骗保护(反向路径过滤器)。

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


我知道这个问题很旧...
Rui F Ribeiro

0

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

附言:我认为不可能将计算机隐藏在ping中。但值得一看。


可以从ICMP ping隐藏计算机。您可以禁用内核中的功能,也可以创建防火墙规则来阻止它。我在桥接模式下有Xen和Bhyve主机,它们运行良好。
Rui F Ribeiro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.