欢迎光临
我们一直在努力

Linux Socat TCP/UDP端口转发及使用

文章目录

socat是不支持端口段转发,只适用于单端口或者少量端口,如果需要大量端口考虑使用 iptables 或 haproxy 。( haproxy 只能转发TCP ) 。

Socat安装

Centos 系统:
yum install -y socat
Debian/Ubuntu 系统:
apt-get update
apt-get install -y socat

Socat使用

TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口;
reuseaddr:绑定本地一个端口;
fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行 监听 。
socat启动监听模式会在前端占用一个shell,因此需使其在后台执行。

转发TCP

socat TCP4-LISTEN:8888,reuseaddr,fork TCP4:233.5.5.5:1006>> /root/socat.log

一般来说socat 是前台运行的如果需要后台运行则要加上 nohup 命令如

  nohup  socat TCP4-LISTEN:8888,reuseaddr,fork TCP4:233.5.5.5:1006 >> /root/socat.log  

TCP4-LISTEN:8888 指的是 监听ipv4的端口,也就是转发后的端口

fork TCP4:233.5.5.5:1006 是指被转发的 IP 和端口,也就是你要中继的服务器的IP和端口。

/root/socat.log 是指转发日志。

转发UD

nohup socat UDP4-LISTEN:8888,reuseaddr,fork UDP4:223.5.5.5:1008 >> /root/socat.log 2>&1 &

转发UDP很简单,只要把TCP4改成UDP4就行了!

文件传输

服务端:

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 具有一个独特的读写分流功能,比如:可以实现一个假的 Web Server,客户端连过来之后就把 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

参考来源:

https://www.dest-unreach.org/socat/doc/socat.html

历史上的今天
七月
31
    哇哦~~~,历史上的今天没发表过文章哦
赞(0)
未经允许不得转载:天云网络 » Linux Socat TCP/UDP端口转发及使用

评论 抢沙发

1 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址