Какая-либо идея, как я могу создать "виртуальный" порт прослушивания на своем компьютерном портировании Ubuntu для удаленного IP?
Я имею в виду, что-то вроде этого.
Когда я пишу telnet 127.0.0.1 555, я хочу получить соединение с компьютером 192.168.0.21 на порте 555 (где у меня есть свой сервер).
Какая-либо идея?
Я думаю, что iptables - то, что Вы ищете, и он должен уже быть установлен с Ubuntu.
Может потребоваться немного метода проб и ошибок, но что-то как команды ниже должно добиться цели:
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 555 -j DNAT --to 192.168.0.21:555
iptables -A INPUT -p tcp -m state --state NEW --dport 555 -i eth1 -j ACCEPT
Более подробное объяснение того, что делают эти команды, может быть найдено здесь.
Другой метод должен использовать программу, названную rinetd, который доступен в Ubuntu через синаптический.
Соединения TCP перенаправлений от одного IP-адреса и порта другому. rinetd является единственным сервером процессов, который обрабатывает любое количество соединений с парами адреса/порта, указанными в файле/etc/rinetd.conf.
Существует хорошее руководство по тому, как использовать его здесь
http://www.frozentux.net/iptables-tutorial/chunkyhtml/x4033.html
Вы думаете, что это должно быть достаточно к настоящему времени, и это действительно, если, рассматривая один заключительный аспект к этому целому сценарию. Что, если сам брандмауэр пытается получить доступ к серверу HTTP, куда он пойдет? Поскольку это смотрит теперь, это, к сожалению, попытается добраться до своего собственного сервера HTTP а не сервера, находящегося на $HTTP_IP. Для обхождения этого мы должны добавить правило DNAT в ВЫХОДНОЙ цепочке также. После вышеупомянутого примера это должно посмотреть что-то как следующее:
iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP