帮助与文档

Linux下利用Socat快速实现UDP/TCP端口转发

发布时间:2019/8/7 20:31:01     访问次数:166 次    分享给朋友:

很多时候我们搭建某些服务后,发现本地连接效果不给力,但是我们有一个国内机器,由于国内机器出去走BGP线路,国内机器连接国外效果好,本地连接国内效果也不错,这样我们就可以搭建一个跳板,从国内去连接国外服务器,常见的转发有rinetd、Haproxy、iptables、socat,前面2种只能转发TCP,后面TCP/UDP都可以转发。

系统要求:支持CentOS 6+ 、Debian 7+、Ubuntu 14+。

脚本说明:脚本默认开启UDP、TCP转发,带开机自启功能,且一次只能转发单个端口,如果想转发多个端口请重复运行本脚本。

提示:该脚本在Vultr各个系统均测试通过,包括最新的Ubuntu 18.04,如果有其它问题可以留言。
使用root运行以下命令:

wget https://cikeblog.com/s/socat.sh ; bash socat.sh

按要求输入以下信息:

#如果你要用本地服务器的3333端口转发IP为1.1.1.1服务器的6666端口,那就依次填入指定参数。

请输入本地端口:3333
请输入远程端口:6666
请输入远程IP:1.1.1.1
输入后直到配置完成。


手动安装方法

centos

yum install -y socat

ubuntu或debian

apt-get update
apt-get install -y socat

socat的使用

1、转发TCP

nohup socat TCP4-LISTEN:30000,reuseaddr,fork TCP4:1.1.1.1:30000 >> socat.log 2>&1 &

说明:

TCP4-LISTEN:30000监听ipv4的30000TCP端口。30000改成你自己需要转发的端口

fork TCP4:1.1.1.1:30000转发到1.1.1.1的30000端口,根据需求修改自行修改ip和端口

推荐使用nohup后台运行。或者screen等参数,也可以把这个命令写到/etc/rc.local里面开机启动启动。
2、转发UDP

nohup socat -T 600 UDP4-LISTEN:10000,reuseaddr,fork UDP4:1.1.1.1:10000 >> socat.log 2>&1 &

UDP和TCP同理,TCP4-LISTEN更换为UDP4-LISTEN即可。也可以直接写到/etc/local里面设置为开机自动启动。