请稍侯

使用Socat进行端口转发

21 August 2022

使用Socat进行端口转发

以前写使用ssh隧道进行端口转发,这次再介绍下Socat进行端口转发。如

安装

brew install socat

端口转发

TCP
监听本地TCP 80 端口,并将请求转发(代理)到 10.0.0.1:8080 上:

socat TCP-LISTEN:80,reuseaddr,fork TCP:10.0.0.1:8080
UDP

监听本地UDP 53 端口,并将请求转发(代理)到 10.0.0.1:5353 上:

socat UDP-LISTEN:53,reuseaddr,fork UDP:10.0.0.1:5353

将访问本机 15237 端口的请求转发至 localhost:15236 端口

socat TCP-LISTEN:15237,reuseaddr,fork TCP:localhost:15236 
# 后台执行
(socat TCP-LISTEN:15237,reuseaddr,fork TCP:localhost:15236) &

Socat现在并不支持SOCKS5端口的转发,但SOCKS4端口的转发是支持的,如下:

# 格式:socat TCP-LISTEN:<localport> SOCKS4:<socks-server>:<host>:<port>,socksport=<socksport>
socat TCP-LISTEN:15237 SOCKS4A:localhost:secret.shell.server.org:22,socksport=15235

参考: Tunneling and Port Forwarding
Socat入门教程
Linux ssh: port forwarding, socks5, jump hosts, …