socat不支持端口段传输,仅适用于单端口或少量端口。 如果需要大量端口,请考虑使用iptables或haproxy。 (haproxy只能传输TCP。
Socat安装
Centos系统:
yum install -y socat
Debian/Ubuntu系统:
获取更新
apt-get安装- y socat
使用Socat
TCP4-LISTEN :在本地建立TCP ipv4协议的监听端口;
reuseaddr :绑定本地端口;
fork :设定多链接模式。 也就是说,一个链路建立后,它会自动复制并监听同一端口。
socat启动侦听模式在前端占用shell,因此必须在后台运行。
传输TCP
socat TCP4-LISTEN:8888,reuseaddr,fork TCP 43360233.5.5.533601006/root/socat.log
socat通常在前台运行,如果需要在后台运行,请添加nohup命令
nohup socat TCP4-LISTEN:8888,reuseaddr,fork TCP 43360233.5.5.533601006/root/socat.log
TCP4-LISTEN:8888是指接收ipv4的端口,即转发后的端口。
forktcp4:233.5.5.5:1006是指传输的IP和端口,也就是要中继的服务器的IP和端口。
/root/socat.log是指传输日志。
传输UD
nohup socat UDP4-LISTEN:8888,reuseaddr,fork UDP 4:223.5.5.533601008/root/socat.log 21
传输UDP很容易。 把TCP4改为UDP4就可以了。
文件传输
服务端:
socat-u open : filename TCP-listen :12345
客户端
socat-utcp : server IP :12345 open : local file,create
【说明】
-u表示数据从第一个参数单向传递到第二个参数。 -U表示从第二个参数传递到第一个参数。 open表示无法使用系统调用open ()打开文件并打开unix域套接字。 tcp-listen表示监听tcp端口。 create表示文件不存在时创建。 传输结束后两端都结束。
读写分流功能
Socat有独特的读写分流功能。 例如,实现一个假web服务器,在客户端连接后传递hello.html内容,同时将客户端数据保存到log.txt (! 符号用于组合读写流,前面的用于读取,后面的用于写入。 因为! 因为在shell中是特殊字符,所以在这里我们使用在命令行中进行了转义。)
socat open:hello.html! ! open:log.txt,create,append tcp-listen:12345,reuseaddr,fork
【说明】
open: hello.html意味着读取hello.html文件。
open: log.txt表示收到的数据已写入log.txt文件。
reuseaddr请参阅socket的SO_REUSEADDR。
fork请求到达后,fork按进程进行处理。 在bash下,是的! 进行逃脱。
打开电源
此工具没有通电启动的设置,因此必须将系统配置为通电启动。
Centos系统:
chmod x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local
Ubuntu/Debian系统:
chmod x /etc/rc.local
vi /etc/rc.local
请输入I键进入编辑模式,然后在上面的教程中安装vim。 如果没有反应,请在打开的文件的exit 0代码之前插入socat命令代码。
显示端口状态
netstat -antup
中止运转
ps -ef|grep socat kill -9 xxxID
卸载Socat
Centos系统:
yum remove socat
Debian/Ubuntu系统:
sudo apt-get remove socat
sudo apt-get autoremove
引用自:
33559 www.dest-un reach.org/socat/doc/socat.html