Перенаправление порта
У меня есть простое требование переадресации портов / туннелирования на уровне сокетов.
- У меня есть исходный сервер и порт с помощью сокетов. Это 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 есть отличный короткий вопрос с очень похожей целью. Хотя я нахожу это более кратким, более подробная документация доступна.