LinuxForum.Fans
Тема

Дублирование трафика

Автор: ares4322 3 сообщений 946 просмотров
#304268

Доброго времени суток!

Исходные данные
Есть физический сервер, на котором установлена самописная серверная программа. Это многопоточный (1 соединение - 1 поток) сервер на С. Прикладной протокол кастомный, с подтверждением. tcp-соединения - долгоживущие. Клиентов достаточно (сейчас порядка 450).

Задача
Необходимо добавить в систему еще один сервер, который будет перекодировать клиентские данные и передавать во внешнюю систему. Это нужно сделать без переписывания существующего сервера.

Возможные решения (которые я насобирал)
Надо ставить шлюз между клиентами и существующим сервером и дублировать через него трафик на новый сервер.
Это можно сделать:

  • аппаратно - port mirroring. Узнавал у хостера. Можно сделать, но для нас дороговато.
  • программно - iptables, wireshark, socat

Самое эффективное программное решения, как я понял, iptables. Так как это все будет работать на уровне ядра. Но я до конца не понял, можно ли с помощью этой программы решить мою задачу. И можно ли ее вообще решить.

Вопрос
Подскажите, решаема ли моя задача вообще? И если решаема, то конкретно как?

#304275
"ares4322" написал:
Подскажите, решаема ли моя задача вообще? И если решаема, то конкретно как?

возможно так:
http://www.netfilter.org/projects/patch-o-matic/pom-external.html#pom-external-ROUTE

# To copy (duplicate) all traffic from and to a local ECHO server
# to a second box (nonfinal target)
iptables -A PREROUTING -t mangle -p tcp --dport 7 -j ROUTE --gw 1.2.3.4 --tee
iptables -A POSTROUTING -t mangle -p tcp --sport 7 -j ROUTE --gw 1.2.3.4 --tee

#304279

У меня ядро 3.2.0-38 и у меня TEE включено в ядро. Это отдельный target. Как мне в этом случае писать?

Войдите или зарегистрируйтесь, чтобы ответить.