LINUX.ORG.RU
ФорумAdmin

Зеркалирование TCP

 , , ,


0

1

Всем доброго времени суток! Столкнулся с необходимость дублировать трафик с одного сервера на другой. Допустим имеется «сервер А», на нем демон слушает диапазон TCP портов. К этим портам подключается некое количество клиентов и передают порции данных. Задача стоит следующим образом: необходимо дублировать на «сервер B» данные приходящие от клиентов, где запущен аналогичный демон, но эти данные должен так же получать демон на сервере А. Клиенты должны получать ответы только от «сервера А». Нашёл более или менее подходящее решение: https://github.com/agnoster/duplicator Но не нравится, что это будет работать в userspace. Но найти реализацию с помощью конфигурации iptables или iproute2 мне не удалось. Подскажите, коллеги, реализуема ли такая задача в пространстве ядра?

iptables --tee , но вообще может быть тут стоит посмотреть на структуру приложения - может тебе нужно организовать какой-то Publish–subscribe сервис?

alozovskoy ★★★★★ ()
Ответ на: комментарий от alozovskoy

На сколько я понимаю, --tee входит в неподдерживаемый уже patch-o-matic. А L7 протокол проприетарный, как и приложения. Едва ли здесь получится что-то придумать.

quituku ()

К чёрту ядро, делай зеркало на свиче

zolden ★★★★★ ()

1. С помощью socat форвардишь tcp трафик с интерфейса в UNIX сокет

2. С помощью nginx проксируешь куда надо

?????

ВЫГОДА

sicral ()
Ответ на: комментарий от Davyd

-j TEE модифицирует заголовки Ethernet кадров, на сколько я понимаю. Следовательно пересылать можно только в пределах локальной сети. Я не озвучил это в исходной задаче, но сервера живут в разных сетях.

Следовательно надо как-то модифицировать заголовки TCP (подменить destination). Но я теперь не совсем понимаю, как этот клонированный пакет дальше проходит таблицы netfilter/iptables.

Могу ли я в следующих таблицах что-то делать с клонами?

quituku ()
Ответ на: комментарий от quituku

Я подозреваю, что можешь. Только промежуточные сервера должны понимать, что это за трафик и куда его направлять. На мой взгляд - это сложно и не нужно. Подними L2 туннель на нужный сервер и гоняй эти пакеты через него. К примеру OpenVPN в режиме tap или даже простейший GRE.

Davyd ★★ ()
Последнее исправление: Davyd (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.