Lepszym rozwiązaniem jest użycie netcat. Działa również z połączeniami z localhost i nie trzeba zmieniać sysctl.
Cały trik jest stworzenie named pipe
,
mkfifo mypipe
i użyj tego w ten sposób:
nc -k -l 2222 0<mypipe | nc localhost mySSHport 1>mypipe
Ten przykład został stworzony, aby umożliwić ci przetestowanie tego polecenia za pomocą ssh. Przekierowuje połączenia ssh z portu 2222 na port mySSHport, cokolwiek to może być (22?).
Teraz, jeśli spróbujesz ssh do portu 2222,
ssh me@localhost -p 2222
będziesz zalogowany.
Flaga -k
instruuje netcat, aby nasłuchiwał nawet po zakończeniu pierwszego połączenia. Możesz poprawić jego odporność, wstawiając go do nieskończonej pętli while:
while true; do
# echo "Listening..."
nc -k -l 2222 0<mypipe | nc localhost mySSHport 1>mypipe
done
I oczywiście wracając do OP, dla portów UDP należy dodać flagę -u.
Edytować:
Właśnie zdałem sobie sprawę, że w systemach z GNU w wersji nc (netcat), takich jak Arch Linux, polecenie powinno być
nc -l -p 2222 0<mypipe | nc localhost mySSHport 1>mypipe
Przepraszamy za niedogodności.