Переадресация портов на Linux без iptables?

34

У меня есть сервер Linux VPS (virtuozzo), и мне нужно настроить переадресацию портов, но мой хостинг-провайдер не разрешает модули ядра iptables-nat, поэтому iptables -t nat- не работает.

Я ищу другие способы, как это сделать. Я знаю, что могу перенаправить порт, используя openssh , но мне нужно переадресовать более 20 разных портов, tcp и udp, так что это не вариант.

Есть ли какое-нибудь программное обеспечение для Linux, которое может выполнять переадресацию портов?

troex
источник
да хороший вопрос +1. я не знаю о решении, с нетерпением жду, чтобы увидеть, есть ли что-то здесь.
Шуррик
А потом, как насчет программы, которая позволяет вам перенаправлять порты в разные пункты назначения на основе исходного IP-адреса?
дпк
Избегайте проблемы полностью, никогда не используя VPS на базе Virtuozzo / OpenVZ.
Майкл Хэмптон
@MichaelHampton: Не очень конструктивно ...
Николас Рауль

Ответы:

47

Используйте инструмент под названием «socat», это отличный инструмент для таких вещей, и он уже упакован во многие дистрибутивы Linux. Читайте об этом здесь: http://www.dest-unreach.org/socat/doc/README

Пример переадресации портов с помощью socat:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

Это перенаправляет все TCP-соединения через порт 80 на www.yourdomain.org порт 8080 TCP.

FBO
источник
Не забудьте, что HTTPS используется по умолчанию для порта 443, а не для порта 80 :)
keiki
Socat - единственный инструмент, который работал для меня на ipv6-only raspberry pi
chotchki
Отлично, решил мою проблему мгновенно. Обратите внимание, что вам нужно убедиться, что входящий порт открыт в iptables, если он у вас есть.
Янча
13

Есть крошечная, легкая программа ресурсов, redirкоторая называется довольно настраиваемой.

apt-get install redir в дистрибутивах на основе Debian.

Джонатан Росс
источник
Я использовал этот инструмент в прошлом, и он работает очень хорошо ...
Alex
Я второй этот инструмент. Кажется, что это не средство пересылки пакетов, а туннель tcp. Это изменит IP-адрес источника, видимый целью. Так что он прекрасно работает, когда вам нужно перенаправить один порт на другой компьютер с другой настройкой маршрутизации.
scegg
10

Как насчет rinetd?
Это демон, который перенаправляет TCP-соединения. Загляните на страницу справочника, чтобы узнать, соответствует ли она вашим потребностям: http://www.boutell.com/rinetd/

потрясающий
источник
Выглядит интересно, но он ограничен только TCP, как вы сказали.
troex
UDP поддерживается в настоящее время: github.com/samhocevar/rinetd
к
6

xinetdподдерживает атрибут перенаправления, который будет делать то, что вы хотите. Как уже отмечалось, существует ряд программ, которые обрабатывают перенаправления.

Использование xinetdили другая программа, которая использует tcpwrappersбиблиотеку, позволит вам применить ограничения доступа, если и когда это станет необходимым.

BillThor
источник
4

xinet / Inetd. Например:

редирект

Позволяет перенаправить службу tcp на другой хост. Когда xinetd получает tcp-соединение через этот порт, он порождает процесс, который устанавливает соединение с указанным хостом и номером порта, и пересылает все данные между двумя хостами.

http://linux.die.net/man/5/xinetd.conf

poige
источник
Выглядит интересно, но он ограничен только TCP, как вы сказали
Doud
4

Я нашел небольшую утилиту с именем portfwd http://portfwd.sourceforge.net/, которая делает именно то, что мне нужно (пересылка TCP и UDP), на домашней странице написано, что последнее обновление было в 2002 году, но последний выпуск - 2007, и он работает на ядре 2.6. ,

troex
источник
Я приму мой ответ, так как это звучит как единственное программное обеспечение, которое полностью поддерживает протоколы TCP и UDP.
Troex
3

SSH Переадресация портов, если вы можете туннелировать соединение SSL.

JeffG
источник
-3

Хорошо, вот простой ответ, который должен сработать, это не ракетостроение, но большинство людей усложняют ответ и путают все новое с пользователями Linux.

UFW позволяют 2xxx

2xxx = любой номер вашего порта просто введите эту команду в ваш серверный терминал, и ваш нужный порт будет открыт.

Denn
источник
Он просто открывает порт на интерфейсах, выходящих за пределы сервера. Он не перенаправляет и не перенаправляет порт с одного ip на другой. ОНА ОТКРЫВАЕТ ПОРТ.
Амир Хоссейн