Перенаправить порт 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, он, кажется, делает то, что вы хотите. Здесь есть еще немного информации по установке и использованию.