RU EN HE
Обо мне Проекты Блог
← Назад к блогу
Сети и инфраструктура

KVM Bridge Networking: подключение виртуальных машин к физической сети

Введение

Подключение виртуальных машин KVM к физической сети через мост — типовая задача для лаборатории или тестового стенда. Однако настройка bridge в Linux имеет подводные камни. В этой статье — пошаговое руководство с разбором типичных ошибок.

Типичная ошибка: enp0s31f6 как bridge

Распространённая ошибка — попытка назначить IP-адрес непосредственно на физический интерфейс (например, enp0s31f6), который добавляется в мост. При создании bridge IP-адрес должен быть на интерфейсе br0, а не на физическом интерфейсе.

Создание моста с nmcli

# Создаём bridge-интерфейс
nmcli connection add type bridge ifname br0 con-name br0

# Настраиваем IP (статический или DHCP) nmcli connection modify br0 ipv4.addresses “192.168.1.100/24” nmcli connection modify br0 ipv4.gateway “192.168.1.1” nmcli connection modify br0 ipv4.dns “192.168.1.1” nmcli connection modify br0 ipv4.method manual

# Добавляем физический интерфейс как slave nmcli connection add type bridge-slave
ifname enp0s31f6 master br0

# Поднимаем bridge nmcli connection up br0

Добавление физического интерфейса как slave

Физический интерфейс (enp0s31f6) добавляется как bridge-slave. При этом его собственное сетевое соединение деактивируется — весь трафик идёт через br0. Важно делать это через консоль или IPMI, так как SSH-соединение прервётся.

Настройка VM NIC

В конфигурации виртуальной машины (virsh edit или virt-manager) сетевой интерфейс привязывается к br0:

<!-- Фрагмент XML-конфигурации VM –>
<interface type=‘bridge’>
<source bridge=‘br0’/>
<model type=‘virtio’/>
</interface>

Проверка с bridge link и tcpdump

# Проверяем участников моста
bridge link show

# Проверяем трафик на bridge tcpdump -i br0 -n

# Проверяем ARP-таблицу ip neigh show dev br0

# Проверяем маршрутизацию ip route show

Устранение проблем с подключением

Если VM не получает IP через DHCP: проверьте STP (spanning tree protocol) — для одного моста его можно отключить через nmcli connection modify br0 bridge.stp no. Убедитесь, что firewalld не блокирует bridge-трафик. Проверьте, что net.bridge.bridge-nf-call-iptables установлен в 0.

# Отключаем фильтрацию bridge-трафика через iptables
sysctl net.bridge.bridge-nf-call-iptables=0
sysctl net.bridge.bridge-nf-call-ip6tables=0

# Или отключаем STP для простого моста nmcli connection modify br0 bridge.stp no nmcli connection up br0

Полезные советы

  • Всегда настраивайте bridge через консоль, не через SSH
  • Используйте virtio для NIC виртуальных машин — это значительно увеличивает пропускную способность
  • Для нескольких VLAN используйте VLAN sub-interfaces на bridge
  • Документируйте конфигурацию — сетевые настройки легко потерять при обновлении системы

Заключение

Настройка KVM bridge networking через nmcli — несложная процедура при понимании принципов работы. Ключевые моменты: IP-адрес на br0, физический интерфейс как slave, отключение STP для простых конфигураций и проверка firewall-правил.