Трубы используются |
односторонние. Когда вы запускаете nc | nc
, выход второго соединения идет на ваш терминал ; вход первого соединения читается с клавиатуры. В основном, полная форма этого будет </dev/tty nc | nc >/dev/tty
.
Чтобы создать двунаправленный туннель, вам придется использовать что-то еще, например ...
socat tcp-l:localhost:1234 tcp:localhost:1235
(Или создайте именованный канал и используйте его с двумя nc
, но это менее эффективно.)
Тем не менее, это не будет делать то, что вы хотите. 1234 не станет исходным портом второго соединения; он будет использоваться только в качестве порта назначения первого соединения, и эти два соединения не связаны: stunnel
просто получает байты от обоих соединений и пересылает их на противоположный конец.
Если вы хотите просто указать исходный порт соединения, это проще:
nc -l 56789 localhost 1235 socat stdio tcp:localhost:1235,sourceport=56789
Так stunnel
как не имеет опции «локальный порт», вы можете взять одну из вышеуказанных команд и использовать ее в exec=
опции.