Подключить виртуальные подсети с двух физических хостов

У меня есть proxmox 4 на основе debian 8 на двух хостах A и B. Оба имеют по два сетевых адаптера. Один сетевой адаптер от каждого хоста подключен через перекрестный кабель.

Host A:
eth0: public IP
eth1: 10.0.0.2/24
vmbr1: 10.0.0.1/24

Host B:
eth0: public IP
eth1: 10.0.1.2/24
vmbr1: 10.0.1.1/24

На vmbr1 к каждому хосту подключен контейнер с 10.0.x.10. Я буду обозначать это так:

Host A:
veth100i1@if12: 10.0.0.10/24 (IP only visible inside container on eth0)

Host B:
veth100if1@if30: 10.0.1.10/24 (IP only visible inside container on eth0)

Хост A таблицы маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         X.X.X.X         0.0.0.0         UG    0      0        0 eth0
X.X.X.0         X.X.X.X         255.255.255.224 UG    0      0        0 eth0
X.X.X.0         0.0.0.0         255.255.255.224 U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 vmbr1
10.0.1.0        10.0.0.2        255.255.255.0   UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1

Хост B таблицы маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         Y.Y.Y.Y         0.0.0.0         UG    0      0        0 eth0
Y.Y.Y.0         Y.Y.Y.Y         255.255.255.224 UG    0      0        0 eth0
Y.Y.Y.0         0.0.0.0         255.255.255.224 U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.0.0.0        10.0.1.2        255.255.255.0   UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 vmbr1

От Host AI может пинговать

  • его контейнер на 10.0.0.10
  • Host B eth1 на 10.0.0. 1.2
  • Хост B vmbr1 в 10.0.1.1
  • , но не в контейнер B хоста в 10.0.1.10

От Host BI может пинговать

  • его контейнер в 10.0.1.10
  • Хост A eth1 в 10.0 .0.2
  • Хост A vmbr1 в 10.0.1.1
  • , но не в контейнере хоста A в 10.0.0.10

Когда я пытаюсь выполнить эхо-запрос 10.0.1.10 с хоста A в контейнере в Host BI, я могу увидеть следующее на eth1 хоста B:

tcpdump -nni eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:42:48.567438 ARP, Request who-has 10.0.1.10 tell 10.0.0.2, length 46

На vmbr1 хоста B, tcpdump ничего не показывает.

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

1
задан 17 April 2016 в 13:52
1 ответ

Попробуйте настроить интерфейсы eth1 на адреса в третьей подсети, например 10.0.3.0/24. Вероятно, вам также потребуется добавить пересылку, как указано ниже.

Или попробуйте проксировать запрос ARP для доступных серверов. Вы можете включить это вручную с помощью такой команды, как.

systctl -w net.ipv4.conf.eth1.proxy_arp=1

После того, как он заработает, вы можете заставить его задерживаться после перезагрузки, добавив файл в /etc/sysctl.d , содержащий строку вроде:

net.ipv4.conf.eth1.proxy_arp = 1

Вам также может потребоваться включить пересылку с помощью из этих настроек:

net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.eth1.forwarding = 1

Альтернативный подход - включить eth1 в определение vmbr1. В долгосрочной перспективе это может быть лучшим подходом.

0
ответ дан 4 December 2019 в 06:25

Теги

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