2011-12-04 3 views
8

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

  • У меня есть исходный сервер и порт с использованием сокетов. Это java-программа, которая работает как в windows, так и в linux, и это не имеет значения.
  • У меня есть устройства, которые продолжают отправлять данные на этот порт. Возможна двунаправленная связь
  • Я хочу перенаправить эти данные на другой удаленный сервер и порт. Поэтому для клиентов им не придется беспокоиться об изменении ip-адреса всякий раз, когда я перемещаю свой сервер приложений.

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

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

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

+0

Используете ли вы какой-либо стандартный протокол или свой собственный протокол? – Santosh

+0

Это всего лишь передача данных TCP/IP. – Muthu

ответ

4

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

Пример для Сокат направить порт 80 с помощью tcp4:

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

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

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

+0

Ничего себе! Как я это забыл! У меня есть вопрос, хотя! Может ли socat или netcat автоматически переподключиться, если соединение нарушено? – Muthu

+0

Я не знаю, есть ли встроенная опция для повторного подключения, но это может быть задачей клиента повторно подключиться, если что-то не так –

+0

Это говорит «2011/12/04 15:52:25 socat [4328] E connect (3 , AF = 2 ipaddress: 5000, 16): Адрес уже используется ". Я также попробовал команду с параметром reuseaddr. – Muthu

2

Утилита перенаправления портов TCP/IP с именем portforward доступна в code.google.com. Он полностью написан на Java.

+0

Попробует и подтвердит, подходит ли это. – Muthu

0

Если вы используете xinetd в своей системе, он предоставляет простой port forwarding mechanism, который может быть полезен, если вы уже не используете IPTables.

Если вы используете IPTables, Server Fault имеет отличный, short question with a very similar goal. Хотя я нахожу это немного кратким more detailed documentation is available.

Смежные вопросы