socat
跳转到导航
跳转到搜索
输入和输出
终端
-
readline
UNIX 域套接字
UNIX-CONNECT
- 连接至套接字文件,作为输出端
UNIX-CLIENT
- 连接至套接字文件,同时作为输入和输出
TLS
监听时,需要指定cert
参数。除非使用证书验证,否则服务端需要指定verify=0
。
socat readline openssl-listen:1111,fork,reuseaddr,cert=cert.pem,verify=0
HTTP 代理 over TLS:
socat tcp-listen:8990,fork,reuseaddr openssl:204.152.214.139:80,cn=t.opera-proxy.net
示例
TCP访问转发到 socket 文件(一次性):
socat tcp-listen:8989 /tmp/mongodb-27017.sock
要多次使用,加上fork
参数:
socat tcp-listen:8989,fork /tmp/mongodb-27017.sock
使用bind:addr
可以指定 bind 到哪个 IP。
连接到套接字文件并交互(需要编译时启用 readline 支持):
socat READLINE UNIX-CLIENT:/path/to/socket
远程 shell
# server
socat tcp-l:8889,reuseaddr,bind=127.1 exec:'zsh -i',pty,setsid,stderr,sane
# client
stty raw -echo; nc 0 8889; stty cooked echo
socat tcp:127.0.0.1:8889 stdio,raw,echo=0
高速传数据
Linux 网桥会影响单条 TCP 连接的传输速率(约 480Mbps)。使用 SCTP 协议可以避免。不使用 UDP 是因为不能自动断开。
# server
socat -u sctp-l:2233 stdout | command
# client
command | socat -u stdin sctp:192.168.57.2:2233