Мне нужно создать сетевой мост для моих виртуальных машин qemu под Linux.
Я читаю руководства, официальную документацию и учебные пособия, но все еще не могу понять шаги.
Например (из https://wiki.ubuntu.com/KvmWithBridge )
# The primary network interface
auto br0
iface br0 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_maxwait 5
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.4
dns-search mydomain.net
для меня это не имеет смысла:
192.168.0.101
что именно? Это шаблон, который повторяется во многих учебных пособиях, руководствах и документации, в которых смешиваются слова без очевидного значения (очевидно, мост должен иметь дело с IP-адресами ...).
Итак, я спрашиваю: как мне создать мост, чтобы мои qemu
экземпляр может подключиться через мой eth0
через мост? Я бы хотел использовать iproute2
и /etc/network/interfaces
и ничего другого для простоты.
Постараюсь ответить на ваши вопросы.
Интерфейс моста не требует IP-адреса для переключения кадров между портами. Конечно, вы можете настроить интерфейс моста без IP-адреса. В этом случае ваш Linux-хост будет работать как простой коммутатор L2. Когда вы назначаете IP-адрес на интерфейсе моста, вы можете рассматривать свой хост Linux как расширенный коммутатор L3.
Вам не нужно отключать интерфейс, чтобы добавить его в мост.
После ifup br0
в вашей системе Linux br0
интерфейс будет создан. Адрес 192.168.0.101
будет закреплен за ним.
После запуска виртуальной машины qemu с соответствующими параметрами в вашей системе должен появиться дополнительный интерфейс. После этого вы можете добавить его в br0
интерфейс вручную с помощью команды
ip link set dev <tap-iface> master br0
Вы можете написать короткий скрипт для добавления нового интерфейса в мост. Этот скрипт можно поместить в специальный каталог и он будет выполняться после запуска нового хоста qemu.
Если вы предпочитаете iproute2
, вы можете использовать его в файле интерфейсов, используя внутри pre-up
, up
, post-up
и другие заявления.
Если я правильно понял, вы можете добавить что-то вроде в /etc/network/interfaces
файл, чтобы поднять tap
интерфейс и добавьте его в мост:
iface tap10 inet manual
pre-up /sbin/tunctl -t $IFACE -u root || true
pre-up /sbin/ip link set dev $IFACE master br0
up /sbin/ip link set dev $IFACE up
post-down /sbin/tunctl -d $IFACE || true
В командной строке запуска виртуальной машины qemu вы должны использовать что-то вроде этого:
-netdev tap,id=mynet0,ifname=tap10,script=no,downscript=no