Как я могу туннелировать UDP через SSH? - PullRequest
2 голосов
/ 29 июля 2011

Я работаю над приложением Java, которое собирает различную информацию на сетевых устройствах.Все эти устройства находятся за сетевым бастионом, и я использую JSch для создания туннелей TCP для удаленных устройств по требованию.Это хорошо работает для таких протоколов, как TL1, которые основаны на TCP.Однако мне все же нужно собирать данные SNMP.

Бастионный сервер, к которому у меня есть доступ, довольно старый и ограниченный, и у меня не так много вариантов для создания там прокси-сервера SNMP.Мой вопрос заключается в том, знает ли сообщество чистый, надежный способ программного создания туннелей по мере необходимости.Я смотрел на такие решения, как , это , но, поскольку у меня есть от тысяч до потенциально десятков тысяч возможных IP-адресов, ручной одноразовый метод нежизнеспособен.Если понадобится, я добьюсь сервера, способного выполнять надежный прокси-сервер snmp, но мне нужно знать, что другого пути, прежде чем я вступлю в эту битву, нет.

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

Протокол SSH не содержит ничего для пересылки UDP.

Поэтому вам нужно запустить на стороне сервера SSH некоторую программу, которая будет отправлять вам пакеты UDP и получать отправленные.

Я не знаю деталей SNMP, но для простых случаев вы можете просто запустить netcat или socat с канала exec, отправив пакеты с помощью стандартного ввода / стандартного вывода.

Полагаю,что-то вроде этого может сделать:

netcat -u server 161 

Или с socat:

socat STDIO UDP:server:161
0 голосов
/ 05 марта 2015

для пересылки udp: server: 3200 на текущий компьютер, выполните следующие действия:

socat SYSTEM:"ssh server socat - udp\:127.0.0.1\:3200" udp-l:3200,fork,reuseaddr

обратите внимание, что перед использованием туннеля должен быть открыт и прослушиваться порт udp 3200 на surver.

...