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

ERSPAN в IP на хосте Centos с несколькими интерфейсами в одной подсети

У меня интересная конфигурация, и мне бы хотелось, чтобы она заработала.

На пробнике аппаратного мониторинга сети у меня есть 2 физических интерфейса. mgmt - это интерфейс управления, а mon1 - это интерфейс мониторинга. При нормальных операциях интерфейс mon1 настроен в неразборчивом режиме, и мы зеркалируем сетевой трафик на зонд, и он генерирует IPFIX для трафика, который видит.

Теперь я собираюсь настроить туннель ERSPAN GRE для завершения на зонде и, похоже, не могу удерживать входящий трафик на интерфейсе монитора (mon1). Туннель GRE, похоже, предпочитает интерфейс управления (mgmt).

IP-адреса в примере:

Network Probe:
  mgmt -> 10.30.15.16
  mon1 -> 10.30.15.41 (For the GRE tunnel)
  tun0 -> 10.30.15.41 (Also for the GRE tunnel)

Switch:
  External IP -> 10.1.1.4
  Tunnel IP -> 10.30.15.40

Я предполагаю, что это может быть проблема с синхронизацией, когда коммутатор отмечает 10.30.15.41 с MAC от mgmt до того, как туннель может быть настроен ...

Это может быть проблема с маршрутизацией, но я не знаю, как ее решить. Вот настроенные в настоящее время маршруты:

[root@hardwareheavy ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.1.1       0.0.0.0         UG    100    0        0 mgmt
0.0.0.0         10.30.1.1       0.0.0.0         UG    103    0        0 mon1
10.30.0.0       0.0.0.0         255.255.0.0     U     100    0        0 mgmt
10.30.0.0       0.0.0.0         255.255.0.0     U     103    0        0 mon1
10.30.15.40     0.0.0.0         255.255.255.255 UH    0      0        0 tun0

[root@hardwareheavy ~]# cat /etc/sysconfig/network-scripts/route-mon1
10.1.1.4 via 10.30.1.1 dev mon1 table mon1
10.30.15.41 via 10.30.1.1 dev mon1 table mon1
default via 10.30.1.1 dev mon1 table mon1

[root@hardwareheavy ~]# cat /etc/sysconfig/network-scripts/rule-mon3
to 10.1.1.4 src 10.30.15.41 table mon3
to 10.30.15.40 src 10.30.15.41 table mon3
from 10.1.1.4 src 10.30.15.41 table mon3
from 10.30.15.40 src 10.30.15.41 table mon3

Туннель GRE создается после того, как я настрою файл ifcfg для tun0 (интерфейс завершения туннеля)

[root@hardwareheavy ~]# cat /etc/sysconfig/network-scripts/ifcfg-tun0
DEVICE=tun0
NAME=tun0
ONBOOT=yes
BOOTPROTO=none
TYPE=GRE
MTU=9000
GATEWAYDEV=mon2
PEER_OUTER_IPADDR=10.1.1.4
PEER_INNER_IPADDR=10.30.15.40
MY_INNER_IPADDR=10.30.15.41

Я изменил настройки ядра:

net.ipv4.ip_forward = 0
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2

Я не эксперт, поэтому дайте мне знать, если вам нужно что-нибудь еще, чтобы помочь решить эту проблему. Любая помощь приветствуется.

И прежде чем вы это скажете, нет, я не могу изменить ОС, и да, это должен быть туннель ERSPAN / GRE. Возможно, я ошибаюсь, и есть способ лучше настроить ERSPAN в centos ...

Я нашел на это ответ. Мне нужно было отправлять arping каждые несколько секунд, чтобы поддерживать коммутатор в актуальном состоянии по MAC-адресу интерфейса, связанного с туннелем.

while sleep 5 ; do arping -I $args{interface} -D $args{peerOutside} -c2 -q ; done

Надеюсь, это поможет кому-то в будущем ...