我正在设置 KVM 环境,通常我理所当然地认为网络已经设置好了。我在从虚拟机访问公共 IP 时遇到了困难。节点和虚拟机运行的是 CentOS 7
当前状态如下:
VM: 5.5.5.5 -> IP on physical node: 5.5.5.3 (pingable)
VM: 5.5.5.5 -> Neighbouring physical node: 5.5.5.2 (pingable)
VM: 5.5.5.5 -> Outside IP: 8.8.8.8 (network unreahable)
Physical Node: 5.5.5.3 -> VM: 5.5.5.5 ( Destination Host Unreachable )
Physical Node: 5.5.5.3 -> Outside: 8.8.8.8 (pingable)
Outside -> Physical Node: 5.5.5.2 (pingable)
我在绑定了 eth1 的物理节点上的 br1 上配置了 5.5.5.0/28 范围。
VM 已添加桥接网络 - 并且 VM(5.5.5.5)和节点(5.5.5.3)的显著 arping 均按预期获得了正确的答案。
<interface type='bridge'>
<mac address='52:54:00:84:e5:e1'/>
<source bridge='br1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>
根据我正在使用的 DC 指南,在 VM 上创建了一个/etc/sysconfig/network-scripts/route-eth0 和 rule-eth0 文件:
# cat route-eth0
default via 5.5.5.14 dev eth0 table 125
# cat rule-eth0
from 5.5.5.0/28 table 125
VM 路线:
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
5.5.5.0 0.0.0.0 255.255.255.240 U 0 0 0 eth0
节点路线:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 6.6.6.14 0.0.0.0 UG 0 0 0 br0
6.6.6.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
5.5.5.0 0.0.0.0 255.255.255.240 U 0 0 0 eth1
5.5.5.0 0.0.0.0 255.255.255.240 U 0 0 0 br1
192.168.10.0 0.0.0.0 255.255.254.0 U 0 0 0 eth1
virbr0
任何关于需要检查什么或我可能出错的地方的指示都非常感谢......只是为了澄清 - 不,那些不是真正的 IP,它们只是为了举例而编造的。
提前致谢。
答案1
尝试这个 sysctl:
net.bridge.bridge-nf-call-arptables=0
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
您需要让网桥充当“交换机”,而无需任何路由和 NAT。除非您也有 NAT 虚拟网络,否则无需设置“net.ipv4.conf.all.forwarding”。标准 libvirt iptables 规则适用于从默认网络到 Internet 的 NAT 连接,但可能会干扰桥接连接。