переадресация TCP соединения с логированием с помощью socat

557
William

Я пытаюсь отладить сервис, к которому клиенты подключаются по протоколу TCP (в Linux). Я не могу изменить ни одну из программ (у меня нет исходного кода), и я не могу использовать механизмы, которые отслеживают сетевой уровень (например, tcpdump, pcap, wireshark и т. Д.).

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

Я знаю, что можно использовать программу SOCAT для пересылки произвольных соединений, используя команду вроде SOCAT -d -d TCP-LISTEN:2001,bind=127.0.0.1,fork TCP:localhost:2002. Но я не вижу, чтобы в стандартных версиях socat был какой-либо механизм регистрации данных, когда они идут туда-сюда.

Мне нужен способ пересылки TCP-соединения таким способом, но запись данных в обоих направлениях в файл (ну, пара файлов). В идеале эта стратегия будет использовать только стандартные пакеты Linux, такие как socat или tee.

Я понимаю, что, вероятно, можно написать программу, которая делает это, используя Perl или Python или аналогичные, но для целей этого вопроса я хочу иметь способ использовать только glue (bash и т. Д.) И стандартные программы.

1

0 ответов на вопрос