Сеть виртуальных машин KVM — сеть «гость-гость»/только виртуальная машина (без доступа к хосту/гипервизору, без исходящего подключения)

Я знаю, что с помощью команды virsh я могу создать несколько типов сетей (например, «сеть NAT»), как мы видим в этих URL-адресах...

Управление сетью KVM
Сеть KVM по умолчанию на основе NAT (стр. 33)

ВОПРОС: Как я могу создать сеть (lan_n), в которой только гости/виртуальные машины имеют подключение, без исходящего подключения и подключения к хосту/гипервизору?

ПРИМЕЧАНИЕ. Подключение к другим ресурсам будет обеспечиваться сервером брандмауэра pfSense , который будет иметь доступ к другой сети ( wan_n ) с исходящим подключением и другими ресурсами.

      Network layout...

                [N]wan_n
                 ↕
                [I]wan_n
            [V]pfsense_vm
                [I]lan_n
                 ↕
                [N]lan_n
                 ↕
   .............................
   ↕             ↕             ↕
  [V]some_vm_0  [V]some_vm_1  [V]some_vm_4
                [V]some_vm_2  [V]some_vm_5
                [V]some_vm_3

 _ [N] - Network;
 _ [I] - Network Interface;
 _ [V] - Virtual Machine.

ПРИМЕЧАНИЕ. ОС хоста/гипервизора — CentOS 7.

Спасибо! = Д

1 ответ

Создайте новую конфигурацию сети без адресов шлюзов на KVM («очень частная» или «очень изолированная»).

Этот тип сети можно использовать для очень частной или очень изолированной сети, поскольку через эту сеть невозможно будет связаться с хостом виртуализации. Однако этот виртуальный сетевой интерфейс можно использовать для связи между виртуальными гостевыми системами. Это работает для IPv4 и IPv6. Однако для связи IPv6 между гостями необходимо добавить новый параметр ipv6='yes' .

  • Проверьте состояние сетей в KVM и ОС

Проверьте сети, используемые KVM...

      brctl show

Проверьте виртуальные сети KVM...

      virsh net-list

Проверьте сети в ОС...

      ip a
  • Создайте новую конфигурацию сети без адресов шлюза.

МОДЕЛЬ

      read -r -d '' FILE_CONTENT << 'HEREDOC'
BEGIN
<network>
  <name>[MY_NETWORK_NAME]</name>
  <uuid>[MY_NETWORK_UUID]</uuid>
  <bridge name='virbr[MY_NETWORK_NUMBER]' stp='on' delay='0'/>
  <mac address='52:54:00:[MY_NETWORK_MAC_FINAL]'/>
</network>

END
HEREDOC
echo -n "${FILE_CONTENT:6:-3}" > '/usr/share/libvirt/networks/[MY_NETWORK_NAME].xml'

  1. «[MY_NETWORK_NAME]» — Имя в нижнем регистре без пробелов и специальных символов;
  2. «[MY_NETWORK_UUID]» («uuid» НЕОБЯЗАТЕЛЬНО) — вы можете создать новый по URL-адресу https://www.uuidgenerator.net/version4 ;
  3. «[MY_NETWORK_NUMBER]» — мы используем префикс «virbr», чтобы следовать существующему «соглашению» об именах;
  4. «[MY_NETWORK_MAC_FINAL]» («mac» НЕОБЯЗАТЕЛЬНО) — префикс «52:54:00:» всегда один и тот же, в противном случае произойдет ошибка «Неверный MAC-адрес многоадресного моста». Вы можете создать новый по URL-адресу https://miniwebtool.com/mac-address-generator/ .

ПРИМЕР

      read -r -d '' FILE_CONTENT << 'HEREDOC'
BEGIN
<network>
  <name>okd_very_private</name>
  <uuid>cbc4be8a-1fc5-4e1a-8065-e12dab7d4175</uuid>
  <bridge name='virbr1' stp='on' delay='0'/>
  <mac address='52:54:00:CB:8A:F0'/>
</network>

END
HEREDOC
echo -n "${FILE_CONTENT:6:-3}" > '/usr/share/libvirt/networks/okd_very_private.xml'

Добавьте новый XML-файл определения сети в libvirt...

МОДЕЛЬ

      virsh net-define "/usr/share/libvirt/networks/[MY_NETWORK_NAME].xml"

ПРИМЕР

      virsh net-define "/usr/share/libvirt/networks/okd_very_private.xml"

ПРИМЕЧАНИЕ. «net-define» является альтернативой «net-create». Используйте это, если вам нужна постоянная виртуальная сеть, которая выдержит перезагрузки и выключения, а не временная сеть, созданная с помощью «net-create».

Запустить новую сеть...

МОДЕЛЬ

      virsh net-start [MY_NETWORK_NAME]

ПРИМЕР

      virsh net-start okd_very_private

Чтобы настроить новую сеть на автоматический запуск при каждой перезагрузке хоста KVM...

МОДЕЛЬ

      virsh net-autostart [MY_NETWORK_NAME]

ПРИМЕР

      virsh net-autostart okd_very_private

СОВЕТ: Чтобы просмотреть детали конфигурации конкретной сети, определенной в libvirt, используйте команду...

МОДЕЛЬ

      virsh net-dumpxml [MY_NETWORK_NAME]

ПРИМЕР

      virsh net-dumpxml okd_very_private

.

[Ссылка: https://libvirt.org/formatnetwork.html#examplesNoGateway ]

Особая благодарность @berndbausch! = Д

Другие вопросы по тегам