Назад | Перейти на главную страницу

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

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

Мое приложение прослушивает хост x.x.15.42, порт 23555, используя TCP. Клиент будет подключаться к x.x.15.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?

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

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

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

Я всего лишь любитель 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 это необходимо

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