socat作用是在两个流之间建立双向的通道,且支持众多协议和链接方式:ip,tcp,udp,ipv6,pipe,exec,system,open,proxy,openSSL,socket等
Centos:yum install -y socat
Debian/Ubuntu:apt-get install -y socat
macOS:brew install socat
如果安装报错,可能选需要安装yum makecache
使用方式:
socat tcp-l:外部访问端口,reuseaddr,fork tcp:192.168.xxx.xxx:内部转发端口
基本语法
socat [options] <address> <address>
几个常用的语法解释方式如下:
STDIN,STDOUT :表示标准输入输出,可以就用一个横杠代替
/var/log/syslog : 也可以是任意路径,如果是相对路径要使用./,打开一个文件作为数据流。
TCP:: : 建立一个TCP连接作为数据流,TCP也可以替换为UDP
TCP-LISTEN: : 建立TCP监听端口,TCP也可以替换为UDP
EXEC: : 执行一个程序作为数据流。
在这些描述后可以附加一些选项,用逗号隔开,如fork,reuseaddr,stdin,stdout,ctty等。
代理与转发
将本地80端口转发到远程的80端口:
socat TCP-LISTEN:80,fork TCP:www.piis.cn:80
上面的域名可以是IP地址之类的,TCP也可以换为UDP
fork是使用并发链接
SSL功能:
SSL服务器(需要生成证书文件):
socat OPENSSL-LISTEN:443,cert=/cert.pem -
SSL客户端:
socat - OPENSSL:localhost:443
端口映射功能:
先做外部:
socat tcp-listen:1234 tcp-listen:3389
再内部:
socat tcp:outerhost:1234 tcp:192.168.12.34:3389
这样,你外部机器上的3389就映射在内部网192.168.12.34的3389端口上
VPN功能:
服务端:
socat -d -d TCP-LISTEN:11443,reuseaddr TUN:192.168.255.1/24,up
客户端:
socat TCP:1.2.3.4:11443 TUN:192.168.255.2/24,up
重定向功能:
socat TCP4-LISTEN:80,reuseaddr,fork TCP4:192.168.123.12:8080
TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口; reuseaddr:绑定本地一个端口;
fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听
socat启动监听模式会在前端占用一个shell,因此需使其在后台执行。
socat -d -d tcp4-listen:8900,reuseaddr,fork tcp4:10.5.5.10:3389 # 端口转发
或者
socat -d -d -lf /var/log/socat.log TCP4-LISTEN:15000,reuseaddr,fork,su=nobody TCP4:static.5iops.com:15000
“-d -d -lf /var/log/socat.log”是参数,前面两个连续的-d -d代表调试信息的输出级别,-lf则指定输出信息的保存文件。
“TCP4-LISTEN:15000,reuseaddr,fork,su=nobody”是一号地址,代表在15000端口上进行TCP4协议的监听,复用绑定的IP,每次有连接到来就fork复制一个进程进行处理,同时将执行用户设置为nobody用户。
“TCP4:static.5iops.com:15000″是二号地址,代表将socat监听到的任何请求,转发到static.5iops.com:15000上去。
SSL功能(通过openssl来加密传输过程):
先证书生成:
FILENAME=server openssl genrsa -out $FILENAME.key 1024openssl req -new -key $FILENAME.key -x509 -days 3653 -out
$FILENAME.crtcat
$FILENAME.key
$FILENAME.crt >$FILENAME.pem
在当前目录下生成 server.pem server.crt
服务端:
socat openssl-listen:4433,reuseaddr,cert=srv.pem,cafile=srv.crt system:bash,pty,stderr
在本地(客户端):
socat readline openssl:localhost:4433,cert=srv.pem,cafile=srv.crt
租用服务器请自觉遵守服务器所在地的法律法规,国内服务器禁止任何违法违规用途!!!
香港、韩国、日本、美国、台湾、新加坡、菲律宾等境外服务器由机房直供(一手资源,价格最低),我公司只是代购,请自行遵守中国法律和服务器所在地的法规,勿用于违法犯罪用途,做什么用途虽然机房不过问,但是如果您私自做违法用途请自担责任!需要租用服务器请联系QQ16764407或微信18988993510













