Как создать мост / туннель под 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? почему я вообще могу работать с мостами и IP-адресами, если это должен быть просто канал передачи данных
  • , зачем мне отключать eth0? мост - это соединение между 2 физическими устройствами, почему имеет смысл снять карту Ethernet, чтобы создать соединение с указанной картой?
  • кто или что получает здесь IP? 192.168.0.101 что именно?

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

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

0
задан 6 June 2019 в 15:13
1 ответ

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

  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 master br0

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

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

  3. Если я правильно вас понял, вы можете добавить что-то вроде в / etc / network / interfaces файл, чтобы вызвать коснитесь интерфейса и добавьте его в мост:

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
0
ответ дан 23 November 2019 в 23:33

Теги

Похожие вопросы