Socat¶
1. 端口转发与映射¶
Socat 最常用的功能是将一个端口的流量转发到另一个地址和端口,非常适合调试内网服务或绕过防火墙限制 。
TCP 端口转发:将本地 8080 端口的流量转发到目标服务器的 80 端口。¶
socat TCP-LISTEN:8080,fork TCP:www.example.com:80
TCP-LISTEN:8080: 监听本地 8080 端口。
fork: 关键参数,表示为每个连接创建一个新的子进程,支持并发连接。如果不加此参数,处理完一个连接后 Socat 就会退出 。 TCP:www.example.com:80: 转发目标地址。
UDP 端口转发:¶
socat UDP-LISTEN:5353,fork UDP:8.8.8.8:53
2. 开启 Docker Remote API¶
macOS 上的 Docker Desktop 默认不通过 TCP 暴露 Remote API。可以使用 Socat 将 Docker 的 Unix Socket 映射到 TCP 端口,以便远程工具(如 Portainer 或 IDE 插件)连接 。
socat -d -d TCP-L:2375,fork UNIX-CONNECT:/var/run/docker.sock
UNIX-CONNECT:/var/run/docker.sock: 连接 Docker 的本地 Unix 套接字。
TCP-L:2375: 在本地 2375 端口监听 TCP 请求。 -d -d: 输出详细调试日志,方便排错 。
3. 文件传输¶
虽然 nc (netcat) 也能传文件,但 Socat 提供了更可靠的流处理,且不需要手动判断结束时间 。 接收端 (先运行):
socat -u TCP-LISTEN:9999,reuseaddr OPEN:received_file.txt,create
发送端:
socat -u OPEN:local_file.txt TCP:接收端IP:9999
reuseaddr: 允许端口复用,防止"端口已被占用"错误 。