Вопрос или проблема
Я только что установил сервер Fedora 41 в первый раз (все мое предыдущее опыт был с системами на основе Debian), и я пробую Cockpit и KVM. Я (из интерфейса Cockpit-machines) создал виртуальную машину, с настройками, которые, как я полагаю, должны были привести к подключению ВМ к LAN через NIC хоста, но, похоже, этого не произошло. Вот что у меня есть:
У моей ВМ есть один сетевой интерфейс типа bridge
, с источником virbr0
и TAP-устройством vnet0
. У нее IP-адрес 192.168.122.184 (который НЕ является IP-адресом, который был бы выдан сервером DHCP моей LAN).
Если я посмотрю в “Сеть” в Cockpit, я вижу сетевое соединение virbr0
, которое имеет один интерфейс (vnet0
). Оно имеет диапазон IP-адресов, включающий IP ВМ (192.168.122.1/24).
Я хотел бы, чтобы ВМ была “подключена” непосредственно к той же LAN, к которой подключен хост. Я хочу, чтобы ВМ получала DHCP-адрес в той же сети, и, в идеале, я хотел бы, чтобы хост и ВМ могли обмениваться данными через эту сеть без какого-либо сложного оборудования вне системы (переключателей с поддержкой “hairpin mode”, маршрутизаторного оборудования или программного обеспечения, или чего-либо в этом роде).
Могу ли я просто изменить конфигурацию сети virbr0
для разрешения “автоматического” назначения IP-адреса, а затем подключить к ней сетевое соединение хоста (eno1
)? Есть ли лучший способ для меня сделать это?
Ответ или решение
Чтобы подключить виртуальную машину (VM) на Fedora 41 к локальной сети (LAN) и обеспечить ее получение IP-адреса от DHCP-сервера LAN, необходимо настроить сеть таким образом, чтобы VM могла напрямую взаимодействовать с физической сетью. Ваша текущая конфигурация использует виртуальный мост virbr0
, который обычно настроен как отдельная виртуальная сеть (NAT) и выдает вам IP-адреса, не относящиеся к вашей основной локальной сети.
Теория:
Основная идея заключается в использовании физического интерфейса вашего хоста как моста для виртуальных машин, что позволяет VM на уровне сети выглядеть так, как будто они подключены к той же сети, что и физический компьютер. Это достигается с помощью конфигурации мостового соединения напрямую с физическим сетевым интерфейсом, который подключен к вашей локальной сети (например, eno1
).
Пример:
- Создание моста: Сначала вам необходимо создать сетевой мост, который будет использоваться для подключения физического интерфейса и виртуальных машин.
- Настройка физического интерфейса: Отключите все IP-настройки на физическом интерфейсе
eno1
и подключите его к новому сетевому мосту. - Переконфигурация виртуальной машины: Замените использование
virbr0
на новый мост, чтобы виртуальные машины могли получать IP адреса от DHCP-сервера вашей локальной сети.
Применение:
Вот шаги для настройки описанной конфигурации:
-
Создание мостового интерфейса:
Используйте NetworkManager или системные файлы конфигурации для создания нового bridge-интерфейса, например,
br0
.Пример для создания моста в командной строке:
nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
-
Настройка физического интерфейса:
Присоедините
eno1
к новому мостуbr0
.nmcli connection modify eno1 master br0
-
Изменение конфигурации VM:
В интерфейсе Cockpit удалите текущий bridge-интерфейс (
virbr0
) для вашей VM и добавьте новый сетевой интерфейс, используяbr0
в качестве источника.
После выполнения данных шагов, перезапустите виртуальную машину — она должна получить IP адрес от вашего основного DHCP-сервера в сети. Теперь ваша VM считается прямым участником вашей локальной сети и может взаимодействовать с другими устройствами и сервером без лишних промежуточных NAT-переходов.