Как маршрутизировать весь трафик виртуальных машин через определенный физический интерфейс через мост Linux?

Моя цель состоит в том, чтобы все гостевые виртуальные машины KVM отправляли и получали трафик на em2 с адресами на подсеть 192.168.2.0/24 .

У меня есть хост Linux (CentOS 7) с несколькими сетевыми адаптерами, 2 из которых используются в этом сценарии, em1 и em2 .

Интерфейс em1 имеет IP-адрес 192.168.0.131 . Интерфейс em2 был подключен к br0 , поэтому у него нет самого IP-адреса, но br0 был назначен IP-адрес 192.168 .2.1 .

Я создал маршрут на моем брандмауэре Netgear для направления трафика 192.168.2.0/24 на 192.168.2.1 , но этот адрес не отображается как подключенное устройство, как 192.168.0.131 , возможно, потому, что это виртуальный мост Linux.

С хост-виртуальной машины я могу пинговать как «мост-шлюз», так и гостевую виртуальную машину, и шлюз межсетевого экрана в Интернет:

[root@boss ~]# ping -c1 192.168.2.1
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.085 ms

[root@boss ~]# ping -c1 192.168.2.10
64 bytes from 192.168.2.10: icmp_seq=1 ttl=64 time=0.476 ms

[root@boss ~]# ping -c1 192.168.0.254
64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=4.17 ms

И с гостевой виртуальной машины я могу пинговать em1 , но не интернет-шлюз, 192.168.0.254 :

[root@localhost ~]# ping -c1 192.168.0.131
64 bytes from 192.168.0.131: icmp_seq=1 ttl=64 time=0.282 ms

[root@localhost ~]# ping -c1 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.

--- 192.168.0.254 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Это моя конфигурация для em2 :

DEVICE=em2
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0

И br0 :

DEVICE=br0
BOOTPROTO=none
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.2.1
PREFIX=24
GATEWAY=192.168.0.254
ZONE=public
STP=no

Моя таблица маршрутизации на хосте ВМ:

[root@boss ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 em1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 em1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br0

Гостевая ВМ была запущена с помощью virt-install :

virt-install \
  --name vm-guest-1 \
  --network bridge=br0 \
  --virt-type kvm \

Гостевая ВМ eth0 :

DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.2.10"
NETMASK=255.255.255.0

И догадки t Таблица маршрутизации ВМ:

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

В соответствии с запросом, вывод моего моста хоста:

[root@boss ~]# brctl show
bridge name     bridge id           STP enabled    interfaces
br0             8000.d4ae529de039   no             em2
                                                   vnet0

Вопрос / Проблема:

Как я / почему я не могу выполнить маршрутизацию в мою гостевую ВМ, или, скорее, почему не может моя гостевая ВМ выйти в интернет?

1
задан 1 December 2019 в 09:57
1 ответ

У Вас есть в основном две опции:

  1. В Вашей текущей конфигурации vnet0 и em2 соединяются мостом, таким образом, VM может достигнуть устройства Netgear без маршрутизации. Просто необходимо присвоить VM адрес в 192.168.0.0/24 или использовать DHCP.
  2. , Если необходимо направить, удалите эти em2 интерфейс от моста и присвойте ему адрес в 192.168.0.0/24. Затем добавьте новую таблицу маршрутизации к /etc/iproute2/rt_tables:

    100 vms
    

    Теперь добавляют правило выбора таблицы маршрутизации и маршрут по умолчанию для Вашего VMs:

    ip route add default dev em2 via 192.168.0.254 table vms
    ip rule add iif br0 table vms
    

    , Кроме того, необходимо изменить статический маршрут на устройстве Netgear для указания на em2 адрес.

Редактирование : Во вторых кадрах Ethernet конфигурации от VMs не протекают в физической сети. Дополнительная таблица маршрутизации выбрана только, когда она должна направить что-то от моста br0 (т.е. виртуальные гости) и отправляет трафик до [1 111] вместо [1 112] (маршрут по умолчанию в основной таблице). Вы видите все таблицы маршрутизации сразу с:

ip route show table all

можно читать больше о таблицах маршрутизации на эти Руководство по уровню IP Администрирование сети с Linux.

0
ответ дан 4 December 2019 в 02:32

Теги

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