netcat из-за NAT

netcat из-за NAT

У меня есть устройство, подключенное к Интернету, но оно находится за NAT, что означает, что я не могу напрямую подключиться к нему по ssh из-за пределов сети. Я уже понял, что обратное SSH-туннелирование может обойти эту проблему.

Теперь я хочу запустить процесс сервера netcat на этом устройстве, снова доступном извне сети. Как мне это сделать?

решение1

Мне удалось разобраться с этим самостоятельно. Похоже, что ssh-туннелирование — это по сути переадресация портов. Я запустил следующий код на сервере за NAT

ssh -N -R 4321:localhost:1234 user@client &

это устанавливает туннель, который направляет трафик из client:4321в server:1234, с , чтобы &запустить его в фоновом режиме. Оставаясь на сервере, я затем запустил:

ncat -lk -c "python myscript.py" localhost 1234 &

который запускает процесс netcat myscript.py. Теперь я могу подключиться к серверу с моего клиента через netcat

nc localhost 4321

(У меня не было ncatна клиенте, но ncэто тоже сработало. Фактически я использовал socketбиблиотеку в Python для подключения, что сработало так же)

Связанный контент