Доброго времени суток!
Исходные данные
Есть физический сервер, на котором установлена самописная серверная программа. Это многопоточный (1 соединение - 1 поток) сервер на С. Прикладной протокол кастомный, с подтверждением. tcp-соединения - долгоживущие. Клиентов достаточно (сейчас порядка 450).
Задача
Необходимо добавить в систему еще один сервер, который будет перекодировать клиентские данные и передавать во внешнюю систему. Это нужно сделать без переписывания существующего сервера.
Возможные решения (которые я насобирал)
Надо ставить шлюз между клиентами и существующим сервером и дублировать через него трафик на новый сервер.
Это можно сделать:
- аппаратно - port mirroring. Узнавал у хостера. Можно сделать, но для нас дороговато.
- программно - iptables, wireshark, socat
Самое эффективное программное решения, как я понял, iptables. Так как это все будет работать на уровне ядра. Но я до конца не понял, можно ли с помощью этой программы решить мою задачу. И можно ли ее вообще решить.
Вопрос
Подскажите, решаема ли моя задача вообще? И если решаема, то конкретно как?