Перенаправить порт localhost: порт на lan: порт с использованием iptables - как?

Есть ли способ, которым я могу отобразить 127.0.0.1:3389 в 192.168.1.2:3389 (с iptables? то есть все подключения к localhost:3389 будет перенаправлен на мой компьютер локальной сети?

Причина этого заключается в следующем: мое приложение iPhone RDP может выполнять SSH-туннелирование, но не предоставляет опций для настройки параметров SSH. Итак, он подключается к моему маршрутизатору через SSH, устанавливает туннель до 127.0.0.1:3389, а затем пытается подключиться к localhost:3389 на айфоне. Потерпеть поражение.

Я не хочу запускать SSH-сервер на своем компьютере в локальной сети, а вместо этого хочу использовать SSH-сервер маршрутизатора (Asus RT-N16 под управлением Tomato). Это выполнимо? Это не работает:

$ iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 3389 -j DNAT --to-destination 192.168.1.2

2 ответа

В вашей команде iptables есть несколько ошибок:

1) вы пытаетесь поймать это в таблице OUTPUT, но для такого перенаправления вам нужно сделать это в PREROUTING

2) вы тоже не перенаправляете на порт. вы просто указываете iptables отправлять эти пакеты на определенный IP без указания порта.

Итак, ваша команда должна выглядеть так:

iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport 3389 -j DNAT --to 192.168.1.2:3389

Мой iptables-fu может быть немного ржавым, поэтому, если он не работает, попробуйте выполнить ту же команду в таблице INPUT (-A INPUT). Если ничего не работает, кричите сюда, и мы найдем решение.

Взгляните на rinetd, он, кажется, делает то, что вы хотите. Здесь есть еще немного информации по установке и использованию.

Другие вопросы по тегам