Os pipes usados por |
são unidirecionais. Quando você executa nc | nc
, a saída da segunda conexão vai para seu terminal ; a entrada da primeira conexão é lida do seu teclado. Basicamente, a forma completa seria </dev/tty nc | nc >/dev/tty
.
Para criar um túnel bidirecional, você teria que usar outra coisa, como ...
socat tcp-l:localhost:1234 tcp:localhost:1235
(Ou crie um pipe nomeado e use-o com dois nc
, mas isso é menos eficiente.)
No entanto, isso não fará o que você deseja. Não fará com que 1234 se torne a porta de origem da segunda conexão; você terá apenas como a porta destino da primeira conexão, e as duas conexões não estão relacionadas: stunnel
simplesmente recebe bytes das duas conexões e reenvia-as para o oposto fim.
Se você quiser simplesmente especificar a porta de origem de uma conexão, é mais simples:
nc -l 56789 localhost 1235
socat stdio tcp:localhost:1235,sourceport=56789
Como stunnel
não tem uma opção "porta local", você pode pegar um dos comandos acima e usá-lo na opção exec=
.