Jump to content
Калькуляторы

Зеркалирование трафика не работает для TCP

Приветствую. Возникла проблема с зеркалированием трафика. По условиям есть два шлюза на Astra GNU/Linux SE, соединённые несколькими медленными каналами разной степени надёжности (радио, спутник и ещё что-то похожее). Схематически это можно представить так: местные компы—шлюз1≡шлюз2—интернет. Для повышения надёжности требуется весь трафик между ними дублировать на всех интерфейсах.

 

Задачу реализовал с помощью tc (за основу взят скрипт¹ с гитхаба, упростил до основных команд):

MIR_IFACE='mir0'
MIR_ADDR='192.168.100.1'
DST_IFACE_1='eth1'
DST_IFACE_2='eth2'
DST_IFACE_3='eth3'

ip link add $MIR_IFACE type dummy
ip link set $MIR_IFACE up
ip addr add $MIR_ADDR  dev  $MIR_IFACE

# ingress
tc qdisc  add dev $MIR_IFACE ingress
tc filter add dev $MIR_IFACE parent ffff: \
         protocol all \
         u32 match u8 0 0 \
         action mirred egress mirror dev $DST_IFACE_1 \
         action mirred egress mirror dev $DST_IFACE_2 \
         action mirred egress mirror dev $DST_IFACE_3

# egress
tc qdisc  add dev $MIR_IFACE handle 1: root prio
tc filter add dev $MIR_IFACE parent 1: \
         protocol all \
         u32 match u8 0 0 \
         action mirred egress mirror dev $DST_IFACE_1 \
         action mirred egress mirror dev $DST_IFACE_2 \
         action mirred egress mirror dev $DST_IFACE_3

 

Проверку осуществляю на виртуалке, настроенной указанным выше способом, с помощью nc, проверяю по статистике интерфейсов. Для UDP-трафика статистика растёт, как и ожидается, на всех трёх интерфейсах. Но для TCP-трафика подобного не происходит, трафик, похоже, не идёт никуда. В чём может быть причина?

 

¹ https://gist.github.com/lonelymtn/5a3e0f7d4a44f95141a7

Edited by XMs

Share this post


Link to post
Share on other sites

Реализовал через link aggregation, коннект пошёл. Вопрос закрыт

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.