Перенаправление порта

У меня есть простое требование переадресации портов / туннелирования на уровне сокетов.

  • У меня есть исходный сервер и порт с помощью сокетов. Это Java-программа, которая работает как в Windows, так и в Linux, и это не имеет значения.
  • У меня есть устройства, которые продолжают отправлять данные на этот порт. Там может быть двунаправленная связь
  • Я хочу перенаправить эти данные на другой удаленный сервер и порт. Таким образом, клиентам не придется беспокоиться об изменении IP-адреса при каждом перемещении сервера приложений.

Существуют ли какие-либо инструменты / демоны / сервисные программы, которые я могу использовать для настройки и выполнения этого?

Я пробовал SSH, но, насколько я понимаю, для этого нужен сервер с включенным протоколом SSH. В моем случае это не применимо. Я также пытался использовать JSch, но это опять-таки реализация SSH в формате Java.

Может кто-нибудь кинуть указатели? Можно ли использовать iptables NAT в Linux?

3 ответа

Решение

Ты можешь попробовать netcat или же socat (это более мощный, чем netcat)

Пример для socat для переадресации порта 80 с использованием tcp4:

socat tcp4-listen:80,fork tcp4:{another server}:{another port}

и обратитесь к http://en.wikipedia.org/wiki/Netcat для netcat

Оба не связаны с Java.

Существует утилита переадресации портов TCP/IP с именем port forward, доступная в code.google.com, Он полностью написан на Java.

Если вы бежите xinetd в вашей системе он предоставляет простой механизм переадресации портов, который может быть полезен, если вы еще не используете IPTables.

Если вы используете IPTables, у Server Fault есть отличный короткий вопрос с очень похожей целью. Хотя я нахожу это более кратким, более подробная документация доступна.

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