Socat 中转/端口转发管理脚本

VPS流量中继(中转)能用的工具很多,最常用的有 HaProxy、iptables、Socat。

其中HaProxy只能转发TCP流量,但是支持端口段;iptables可以转发TCP/UDP,也支持端口段,但是配置容易出错莫名其妙的,iptables规则我也不熟悉;而Socat支持转发TCP/UDP,但是不支持端口段,所以多个端口操作起来有点麻烦,于是介绍一个脚本来添加和管理Socat。

 
Socat:

优点:支持 TCP/UDP 转发。缺点:不支持端口段(多个端口需要开启多个转发)

HaProxy:

优点:支持 TCP 转发,支持 端口段 转发。缺点:不支持 UDP 转发。

iptables:

优点:支持 TCP/UDP 转发,支持 端口段 转发。缺点:配置麻烦,容易出错。

 
系统要求:

Debian / Ubuntu 14.04 +

 
安装步骤:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/socat.sh && chmod +x socat.sh && bash socat.sh

下载并运行脚本后,输入 1 并回车就会开始安装。

 
使用方法:

/socat.sh

运行脚本后,会显示菜单:

  SoCat 一键管理脚本 [v1.0.5]
  -- Toyo | doub.io/wlzy-18 --
 
 0. 升级脚本
 
 1. 安装 SoCat
 2. 卸载 SoCat
 
 3. 新增 SoCat
 4. 删除 SoCat
 
 5. 查看 SoCat 信息
 6. 查看 SoCat 日志
 
 当前状态: 已安装
 
 请输入数字 [0-9]:

选择 3. 新增 SoCat 后,会提示你依次输入 本地监听端口、欲转发IP、欲转发端口、转发类型:

请输入 Socat 的 本地监听端口 [1-65535]
(默认端口: 23333):10000
————————————————
本地监听端口 : 10000
————————————————
请输入 Socat 远程被转发的 端口 [1-65535]
(默认端口: 10000):
————————————————
远程转发端口 : 10000
————————————————
请输入 Socat 远程被转发的 IP:2.2.2.2
————————————————
远程转发 IP : 2.2.2.2
————————————————
 
请输入数字 来选择 Socat 转发类型:
1. TCP
2. UDP
3. TCP+UDP
 
(默认: TCP+UDP):
————————————————
请检查 Socat 配置是否有误 !
 
本地监听端口 : 10000
远程转发 IP : 2.2.2.2
远程转发端口 : 10000
转发类型 : TCP+UDP
————————————————
 
请按任意键继续,如有配置错误请使用 Ctrl+C 退出。

最后会提示你确认配置是否有误,如果没有问题就按任意键继续,启动成功后就会提示:

Socat 已启动 !
 
本地 IP : 1.1.1.1
本地监听端口 : 10000
 
远程转发 IP : 2.2.2.2
远程转发端口 : 10000
转发类型 : TCP+UDP

选择 5. 查看 SoCat 信息 后,会显示如下:

当前有 2 个Socat转发进程。
1. 进程PID: 32288 类型: TCP4 监听端口: 10000 转发IP和端口: 2.2.2.2:10000
2. 进程PID: 32289 类型: UDP4 监听端口: 10000 转发IP和端口: 2.2.2.2:10000

选择 4. 删除 SoCat 后,也会显示列表,然后让你选择要终止的 Socat 数字。

 
安装目录:

socat是通过 yum/apt 软件包安装的,所以我就单独搞了一个log日志文件的目录。

日志文件路径:/etc/socat/socat.log

 
其他说明:

提示wget: unknown host “raw.githubusercontent.com” 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。

echo "nameserver 1.1.1.1" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf

 
提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

# Centos系统:
yum install -y wget
 
# Debian/Ubuntu系统:
apt-get install -y wget

 
更换 apt源,解决安装错误:[错误] Socat安装失败 等等

一些VPS的 apt源太老旧,导致无法安装socat,所以我这里写上如何更换 apt源。所以我只针对这两个系统,Centos的自己去谷歌yum镜像源。

依次输入就可以更换apt源了,下面的代码是以 us美国 为例,你可以自己去这里选一个近一些合适的,然后替换下面代码中 us.sources.list 的 us 。

wget -N --no-check-certificate -P /etc/apt https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/sources/us.sources.list
rm -rf /etc/apt/sources.list
cp /etc/apt/us.sources.list /etc/apt/sources.list

发表评论

电子邮件地址不会被公开。 必填项已用*标注

34 + = 39