Следующий случай:
ServerA не имеет открытых портов. IP 1.1.1.1. Он может видеть ServerB.
ServerB имеет открытые порты 1000, 2000. IP 2.2.2.2. Он может видеть только ServerC.
ServerC имеет открытые порты 1000, 2000. IP 3.3.3.3. Он не видит другие серверы.
Здесь ServerA не видит ServerC.
Это можно проиллюстрировать на этом схема.
Мне нужно разрешить ServerA взаимодействовать с ServerC через порты 1000 и 2000. Это можно сделать через ServerB, используя iptables (переадресация портов, как здесь https://serverfault.com/a/838865/518609). Однако проблема в том, что ServerB должен также связываться с ServerC, используя те же порты.
Таким образом, ServerA и ServerB должны взаимодействовать с ServerC, а ServerC должен различать, какой сервер (A или B) отправил пакет, но только ServerB может подключаться к ServerC.
Открыть другие порты невозможно (ну, технически возможно, но нашему отделу безопасности не нравится эта идея и даже в виде исключения это может занять до 3 недель).
ОС - SLES (SUSE Linux Enterprise Server).
Это вообще возможно?
iptables - это не роутер.
У вас есть вариант использования этих потоков, разрешите их. Маршрутизируйте так, чтобы A и B имели пути к C. Разрешите соответствующие порты в любом брандмауэре и следуйте любой другой соответствующей политике безопасности вашей организации.
Узел, не являющийся маршрутизатором, должен находиться на пути только в том случае, если он предоставляет некоторую услугу в стиле промежуточного ящика. Как прокси или межсетевой экран.