Linux下利用Socat快速实现UDP/TCP端口转发
很多时候我们搭建某些服务后,发现本地连接效果不给力,但是我们有一个国内机器,由于国内机器出去走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
输入后直到配置完成。
请输入远程端口:6666
请输入远程IP:1.1.1.1
输入后直到配置完成。
手动安装方法
centos
yum install -y socat
ubuntu或debian
apt-get update
apt-get install -y socat
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里面设置为开机自动启动。
继续阅读