KVM - 通过桥接添加公共 IP

KVM - 通过桥接添加公共 IP

我正在设置 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 连接,但可能会干扰桥接连接。

相关内容