Назад | Перейти на главную страницу

Как создать мост / туннель под linux внутри / etc / network / interfaces?

Мне нужно создать сетевой мост для моих виртуальных машин 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

для меня это не имеет смысла:

Это шаблон, который повторяется во многих учебных пособиях, руководствах и документации, в которых смешиваются слова без очевидного значения (очевидно, мост должен иметь дело с IP-адресами ...).

Итак, я спрашиваю: как мне создать мост, чтобы мои qemu экземпляр может подключиться через мой eth0 через мост? Я бы хотел использовать iproute2 и /etc/network/interfaces и ничего другого для простоты.

Постараюсь ответить на ваши вопросы.

  1. Интерфейс моста не требует IP-адреса для переключения кадров между портами. Конечно, вы можете настроить интерфейс моста без IP-адреса. В этом случае ваш Linux-хост будет работать как простой коммутатор L2. Когда вы назначаете IP-адрес на интерфейсе моста, вы можете рассматривать свой хост Linux как расширенный коммутатор L3.

  2. Вам не нужно отключать интерфейс, чтобы добавить его в мост.

  3. После ifup br0 в вашей системе Linux br0 интерфейс будет создан. Адрес 192.168.0.101 будет закреплен за ним.

  4. После запуска виртуальной машины qemu с соответствующими параметрами в вашей системе должен появиться дополнительный интерфейс. После этого вы можете добавить его в br0 интерфейс вручную с помощью команды

ip link set dev <tap-iface> master br0

  1. Вы можете написать короткий скрипт для добавления нового интерфейса в мост. Этот скрипт можно поместить в специальный каталог и он будет выполняться после запуска нового хоста qemu.

  2. Если вы предпочитаете iproute2, вы можете использовать его в файле интерфейсов, используя внутри pre-up, up, post-up и другие заявления.

  3. Если я правильно понял, вы можете добавить что-то вроде в /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