linux 端口转发 udp,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值