Пересылка трафика с помощью iptables без раскрытия реального IP/порта

Пересылка трафика с помощью iptables без раскрытия реального IP/порта

Я хочу пересылать трафик с помощью iptables, не показывая другой IP/порт отправляющему хосту.

Мое приложение прослушивает хост xx15.42, порт 23555, используя TCP. Клиент будет подключаться к xx15.42:5555. Я хочу, чтобы соединение было перенаправлено на порт 23555, не раскрывая этот порт клиенту.

Я уже пробовал использовать DNAT:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

Но клиенту будет показано, что он подключается к порту 23555.

Я также пробовал использовать REDIRECT, но по какой-то причине это вообще не работает. Клиент не может подключиться.

iptables -t nat -A PREROUTING -p tcp --dport 5555 -d x.x.15.42 -j REDIRECT --to-port 23555

Как переслать этот трафик, сделав так, чтобы казалось, что приложение прослушивает порт 5555?

решение1

Итак, первое правило брандмауэра, которое я использовал, работает:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

Единственная проблема заключалась в том, что сервер говорил клиенту подключаться к порту 23555 вместо порта 5555, как я хотел. Изменение этого на стороне сервера исправило проблему.

решение2

Я только начинаю работать с iptables, поэтому не могли бы вы попробовать это:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 5555 -j DNAT --to x.x.15.42:23555
iptables -A FORWARD -p tcp -d x.x.15.42 --dport 23555 -j ACCEPT

Обе строки необходимы (я думаю, что это связано с отсутствием опции FORWARD), хотя не уверен, -i eth0необходима ли опция interface.

Ссылка на источник

Связанный контент