socat实现TCP/UDP端口转发

安装Socat

socat 的安装也很简单,一般直接 yum ( centos )或者 apt-get ( ubuntu , debian )就能装。

Centos:
yum install -y socat

Ubuntu:
apt-get update
apt-get install -y socat

MacOS:
brew install socat

TCP端口转发

常规:
socat -d TCP4-LISTEN:80,reuseaddr,fork TCP4:127.0.0.1:8080
记录并输出:
nohup socat TCP4-LISTEN:30000,reuseaddr,fork TCP4:1.1.1.1:30000 >> socat.log 2>&1 &

UDP端口转发

常规:
socat -T 600 UDP4-LISTEN:5353,reuseaddr,fork UDP4:114.114.114.114:53
记录并输出
nohup socat -T 600 UDP4-LISTEN:10000,reuseaddr,fork UDP4:1.1.1.1:10000 >> socat.log 2>&1 &

文件传输

服务端:

socat -u open:FILENAME tcp-listen:12345


客户端:

socat -u tcp:ServerIP:12345 open:LOCALFILE,create

【说明】

-u 表示数据单向传送,从第一个参数传递到第二个参数;-U则表示从第二个参数传送到第一个参数。

open 表示使用系统调用open()打开文件,不能打开unix域socket。

tcp-listen 表示监听tcp端口。

create 表示如果文件不存在则创建。

传输结束后两端均退出。

读写分离

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下,需要用\对!进行转义。

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章