4

Любая идея, как я могу создать "виртуальный" порт прослушивания на моем компьютере Ubuntu портирования для удаленного IP?

Я имею в виду, что-то вроде этого.

Когда я пишу telnet 127.0.0.1 555, я хочу получить соединение с компьютером 192.168.0.21 через порт 555 (где у меня есть мой сервер).

Любая идея?

3 ответа3

4

Я думаю, что 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 через synaptic.

Перенаправляет TCP-соединения с одного IP-адреса и порта на другой. rinetd - это однопроцессный сервер, который обрабатывает любое количество соединений с парами адрес / порт, указанными в файле /etc/rinetd.conf.

Там хороший гид о том , как использовать его здесь

2

http://www.frozentux.net/iptables-tutorial/chunkyhtml/x4033.html

Вы думаете, что этого должно быть достаточно к настоящему времени, и это действительно так, если не рассматривать один последний аспект всего этого сценария. Что если брандмауэр сам попытается получить доступ к HTTP-серверу, куда он пойдет? Как он выглядит сейчас, он, к сожалению, попытается получить доступ к своему собственному HTTP-серверу, а не к серверу, расположенному на $ HTTP_IP. Чтобы обойти это, нам нужно добавить правило DNAT в цепочку OUTPUT. Следуя приведенному выше примеру, это должно выглядеть примерно так:

iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP
1

Используйте redir вместо iptables: http://manpages.ubuntu.com/manpages/lucid/man1/redir.1.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .