![KVM — 无法从物理网络 ping 通虚拟网关](https://linux22.com/image/742890/KVM%20%E2%80%94%20%E6%97%A0%E6%B3%95%E4%BB%8E%E7%89%A9%E7%90%86%E7%BD%91%E7%BB%9C%20ping%20%E9%80%9A%E8%99%9A%E6%8B%9F%E7%BD%91%E5%85%B3.png)
请考虑下图:
这是SERVER01网卡的配置:
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d4:ae:52:c0:e6:c5 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.251/24 brd 10.0.1.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 fe80::d6ae:52ff:fec0:e6c5/64 scope link
valid_lft forever preferred_lft forever
3: virbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:b1:de:03 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.1/24 brd 192.168.100.255 scope global virbr1
valid_lft forever preferred_lft forever
该服务器有以下路线:
default via 10.0.1.1 dev eno1 onlink
10.0.1.0/24 dev eno1 proto kernel scope link src 10.0.1.251
192.168.100.0/24 dev virbr1 proto kernel scope link src 192.168.100.1
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
虚拟网络具有以下 XML:
<network connections='2'>
<name>pxb-vn</name>
<uuid>2445d9f0-e67c-4654-99ce-297642280b04</uuid>
<forward mode='route'/>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='52:54:00:b1:de:03'/>
<domain name='pxb-vn'/>
<ip address='192.168.100.1' netmask='255.255.255.0'>
</ip>
</network>
我想为每个虚拟服务器提供一项服务。目前,将以下路由添加到物理 Linux 计算机是可行的:
ip r add 192.168.100.0/24 via 10.0.1.251 dev eth0
这是到虚拟服务器的路由:
ip r add 10.0.1.0/24 via 192.168.100.1 dev eth0
但是我公司的网络是 Windows、Mac OS 和 Linux 计算机的混合体,我认为用此规则配置每台物理计算机是不切实际的。如您所见,我设置了一个路由虚拟网络,我认为应该可以从 10.0.1.0/24 网络 ping 到 192.168.100.1,但它不起作用。我是 KVM 和网络新手,我想我错过了一些东西。提前致谢。
答案1
我认为为每台物理计算机配置此规则是不切实际的。
有很多方法可以做到这一点,但对于小型网络来说,它们几乎都比在各处设置静态路由要复杂得多。
唯一可能更简单的方法是配置这些物理机的默认网关,使其本身拥有虚拟机网络的路由。这将导致一定程度的效率低下,因为数据包从物理机传输到路由器,再到虚拟机服务器,再到虚拟机,而不是直接从物理机传输到虚拟机服务器,但在小型网络中,额外的流量和延迟不太可能被注意到。