Я работаю над настройкой среды 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-соединениями из сети по умолчанию в Интернет, но могут мешать мостовым соединениям.