Я создал 3 виртуальные машины поверх KVM / QEMU (RHEL 6.0), используя мостовую сеть. Создан один мост для eth1, и все виртуальные машины используют этот мост для работы в сети. Все эти виртуальные машины имеют одинаковый адрес подсети. Все эти машины могут пинговать друг друга, потому что мост заботится о маршрутизации между этими машинами. Сценарий, который я пытаюсь реализовать, заключается в том, что я не хочу, чтобы мост выполнял маршрутизацию между этими машинами. Я хочу, чтобы мост отправлял весь трафик с этих машин на внешний пограничный коммутатор и позволял ему выполнять маршрутизацию. Поэтому у меня есть следующие мысли о том, как это сделать, но я не уверен, что они сработают:
Создайте несколько мостов поверх NIC (eth1) и подключите каждую машину к разному мосту на той же NIC. Таким образом, я надеюсь, что он будет отправлять трафик на внешний коммутатор, но не знаю, как позаботиться об обратном трафике. Насколько мне известно, мы не можем создать несколько мостов на одной сетевой карте. Но если кто знает дорогу, поделитесь, пожалуйста.
Настройте в мосте правило, согласно которому весь трафик, поступающий с портов виртуальной машины, должен направляться на сетевой адаптер на внешний коммутатор, а входящий трафик может маршрутизироваться как обычно, как это делает мост. Я тоже не уверен в этом, выполнимо это или нет. Если это выполнимая идея, как это сделать?
Не уверен, есть ли какой-либо другой способ подключения к сети, который можно использовать для реализации этого сценария. Пожалуйста, поделитесь своими мыслями и дайте мне знать, если вам понадобится дополнительная информация с моей стороны.
Проблема в том, что вы пытаетесь сделать: коммутатор не пересылает пакет на исходный порт, чтобы избежать петли.
То, что вы ищете, это VEPA aka Virtual Ethernet Port Aggregator aka 802.1Qbg. Это последнее ядро Linux (2.6.34+). Вы можете найти его в RHEL6 / Centos 6, потому что RedHat перенес его обратно. Но вам также понадобится переключатель с поддержкой VEPA (я даже не уверен, что он существует сейчас).
Вы можете создать сеть VEPA с помощью libvirt:
<network>
<name>network1</name>
<forward mode="vepa">
<interface dev="eth1"/>
</forward>
</network>