关于这个话题似乎已经有很多了,所以很抱歉又增加了大量的信息,但是我还没有找到任何似乎可以解决我的情况的东西。
我的访客无法 ping 通我的默认网关,但是我的主机可以 ping 通我的默认网关。
我有一台配置了桥接接口“ip a”的 KVM 主机(CentOS7):
2: eno16777984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master virbr0 state UP qlen 1000
link/ether 00:0c:29:80:14:0a brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe80:140a/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:80:14:0a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global virbr0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe80:140a/64 scope link
valid_lft forever preferred_lft forever
12: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500
link/ether fe:54:00:a0:02:d5 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fea0:2d5/64 scope link
valid_lft forever preferred_lft forever
现在有趣的部分是,我的客户机从我的 DHCP 服务器收到有效的 DHCP 租约。我的客户机可以 ping 主机的 IP 地址,主机也可以 ping 客户机的 IP 地址。我尝试停止防火墙以解决问题,但这并没有解决问题,而且我怀疑问题不是堆栈中的高层次问题,因为 DHCP 可以正常工作。如果我从另一个网络设备 ping 客户机,请求会超时,但该设备的条目会添加到客户机 arp 表中,并且设备会启动 ping。
我的想法是我的桥配置不正确,但我不确定是什么原因导致只有部分流量失败。
以下是我的接口配置,供参考:
[root@kvm01 ~]# cat /etc/sysctl.d/99-ipforward.conf
net.ipv4.ip_forward = 1
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777984
DEVICE="eno16777984"
ONBOOT=yes
BRIDGE=virbr0
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0
TYPE=Bridge
BOOTPROTO=static
DEVICE=virbr0
ONBOOT=yes
IPADDR="192.168.1.11"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="192.168.1.15"
[root@kvm01 ~]#
答案1
有时我并不是最全面的思考者。ARP 工作正常,这意味着第 2 层很好。第 2 层之后你测试什么?当然是第 3 层。物理网络上的主机没有返回到访客的路由。
由于主机实际上充当了访客的路由器,因此任何 IP 流量都可以从访客发送而没有任何问题,但永远不会得到响应,因为接收者无法通过主机路由到该 IP。
我在物理网络上的测试机上为我的客户机 IP 添加了一个静态网络,该网络具有主机网关,并且 ping 开始正常工作。
解决方案是简单地将客户机放在一个不相交的第 2 层网络上,然后让我的物理网络上的路由器通过主机路由到客户机的网络。这将解决我的问题。
以下 libvirt 文档相对详细地描述了 KVM 网络选项。唯一例外(此处未记录)是使用 Cisco Nexus 1000v 或 Open vSwitch。