Linux VRF Aware SSH

Я пытаюсь создать vrf управления для устройства Linux (оно находится в Azure), которое находится на eth0, при этом используя eth1 и eth2 в качестве интерфейсов пересылки пакетов. Пока что, используя руководства Cumulus, я использую эту конфигурацию:

sudo ip link add mgmt-vrf type vrf table 10
ip link set dev mgmt-vrf up
ip route add table 10 unreachable default metric 4278198272
sudo ip link set dev eth0 master mgmt-vrf
sudo ip route add table 10 0.0.0.0/0 dev eth0 via 10.40.255.1

Я считаю, что это должно работать, и получаю разумный вывод:

ip -br link show vrf mgmt-vrf
eth0             UP             00:22:48:00:d4:8b <BROADCAST,MULTICAST,UP,LOWER_UP>

ip vrf show
Name              Table
-----------------------
mgmt-vrf            10

когда я запускаю tcpdump, довольно очевидно, что SSH не отвечает:

sudo tcpdump -i eth0 !(port 80 or 53) -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:17:56.843175 IP 10.26.0.112.55756 > 10.40.255.4.22: Flags [S], seq 782432837, win 64960, options [nop,wscale 8,nop,nop,sackOK], length 0
11:17:58.011786 ARP, Request who-has 10.40.255.1 tell 10.40.255.4, length 28
11:17:58.012169 ARP, Reply 10.40.255.1 is-at 12:34:56:78:9a:bc, length 28
11:17:59.956102 IP 10.26.0.112.55756 > 10.40.255.4.22: Flags [S], seq 782432837, win 64960, options [nop,wscale 8,nop,nop,sackOK], length 0
11:18:05.845234 IP 10.26.0.112.55756 > 10.40.255.4.22: Flags [S], seq 782432837, win 64960, options [nop,wscale 8,nop,nop,sackOK], length 0

Поскольку Я понимаю, VRF не является сетевым пространством имен, поэтому я не могу запускать SSH в этом пространстве имен. также я запустил следующее:

sudo sysctl -w net.ipv4.tcp_l3mdev_accept=1
sudo sysctl -w net.ipv4.udp_l3mdev_accept=1

Но все равно без радости. Спасибо за помощь

РЕДАКТИРОВАТЬ

ip -4 r ls table 10
unreachable default
10.26.0.0/21 via 10.40.255.1 dev eth0
broadcast 10.40.255.0 dev eth0 proto kernel scope link src 10.40.255.4
10.40.255.0/24 dev eth0 proto kernel scope link src 10.40.255.4
local 10.40.255.4 dev eth0 proto kernel scope host src 10.40.255.4
broadcast 10.40.255.255 dev eth0 proto kernel scope link src 10.40.255.4

ip route get 10.40.255.4 from 10.26.0.112 iif eth0
local 10.40.255.4 from 10.26.0.112 dev mgmt-vrf table 10
    cache <local> iif eth0

ip route get 10.26.0.112 from 10.40.255.4
10.26.0.112 from 10.40.255.4 via 10.40.0.1 dev eth1 uid 1000
    cache

ip route get 10.26.0.1 from 10.40.255.4 vrf mgmt-vrf
10.26.0.1 from 10.40.255.4 via 10.40.255.1 dev eth0 table 10 uid 1000
    cache

Вдобавок tcpdump больше не разрешает IP-адрес хоста, и я не могу проверить связь с локальным интерфейсом, как если бы сервисы больше не были доступны в этом VRF, а команды sysctl mdev имели нет эффекта. Надеюсь, это поможет

0
задан 7 June 2019 в 11:16
1 ответ

спасибо за помощь. Мне удалось решить проблему.

У меня есть IPtables, настроенные на прием INPUT на интерфейсе eth0 mgmt-vrf согласно:

sudo iptables -L -v
136M ACCEPT     all  --  eth0   any     anywhere             anywhere

это ссылается на ведомое устройство, но здесь: https://www.kernel.org/doc/Documentation/networking/vrf.txt

Я обнаружил, что вам также нужно ссылаться на главное устройство, поэтому добавил правило

sudo iptables -A INPUT -i mgmt-vrf -j ACCEPT

Это исправлено проблема для меня

Спасибо за вашу помощь - помогли подтолкнуть меня в правильном направлении

0
ответ дан 23 November 2019 в 23:33

Теги

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