Я работаю над настройкой среды 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)
У меня есть диапазон 5.5.5.0/28, настроенный на br1 на физическом узле, к которому привязан eth1.
К виртуальной машине добавлена мостовая сеть, и заметные искажения как от виртуальной машины (5.5.5.5), так и от узла (5.5.5.3) дают правильные ответы, как и ожидалось.
<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, с которым я работаю, на виртуальной машине создан / 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
Маршруты ВМ:
# 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-адреса, они просто составлены, например, ради.
Заранее спасибо.
Попробуйте этот sysctl:
net.bridge.bridge-nf-call-arptables=0
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
Вам нужно, чтобы ваш мост работал как «коммутатор» без какой-либо маршрутизации и NAT. И нет необходимости устанавливать "net.ipv4.conf.all.forwarding", если вы также не подключили виртуальные сети к NAT. Стандартные правила libvirt iptables хорошо работают с NAT-подключениями из сети по умолчанию в Интернет, но могут мешать мостовым подключениям.