为了迎接19大,镜像域名 doub.bid 取消解析、逗比云 softs.fun 取消国内访问(请挂代理访问)。
投稿文章 | 广告投放 | Telegram 群组 / 公告频道

『原创』Shadowsocks Socat 中继(中转/端口转发) 便捷管理脚本

Shadowsocks Toyo 27评论
文章目录
[显示]
本文最后更新于 2017年7月24日 11:41 可能会因为没有更新而失效。如已失效或需要修正,请留言!

最近没什么教程好写的,那就闲的没事写个脚本吧!

Shadowsocks 中继(中转)能用的工具很多,我的网站介绍过 HaProxy、iptables、Socat。

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


Socat手动教程:Shadowsocks利用 Socat 实现单端口 中继(中转)加速

其他 Shadowsocks中继(中转)教程:传送门

Socat:

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

HaProxy:

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

iptables:

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

系统要求

Debian / Ubuntu 14.04 +

脚本版本

Ver: 1.0.4

安装步骤

wget -N --no-check-certificate https://softs.fun/Bash/socat.sh && chmod +x socat.sh && bash socat.sh

备用下载地址(上面的链接无法下载,就用这个):

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

下载并运行脚本后,会自动检测并开始安装。

使用方法

# 添加Socat
bash socat.sh add

# 停止Socat
bash socat.sh del

# 查看Socat列表
bash socat.sh list

# 查看Socat日志
bash socat.sh tail

# 卸载Socat
bash socat.sh uninstall

使用 bash socat.sh add 后,会提示你依次输入 本地监听端口、欲转发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

使用 bash socat.sh list 后,会显示如下:

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

使用 bash socat.sh del 后,也会显示列表,然后让你选择要终止的 Socat 数字。

Shadowsocks客户端说明

假设你的 海外服务器(被中转) 中搭建的Shadowsocks服务端的IP是 2.2.2.2  ,SS端口是 10000

假设你的 中转服务器 的IP是 1.1.1.1 ,本地监听端口和SS端口一致,都是 10000

那么,你的Shadowsocks客户端,添加Shadowsocks服务器,IP填写 1.1.1.1 ,端口填写 10000 其他的 密码/加密方式/协议/混淆等等 全部和原Shadowsocks账号一样!

安装目录

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

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

其他说明

提示wget: unknown host “softs.fun” 之类的错误

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

echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /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://softs.fun/Bash/sources/us.sources.list
rm -rf /etc/apt/sources.list
cp /etc/apt/us.sources.list /etc/apt/sources.list

更新日志

2017年07月24日,版本 v1.0.4

1.修复 Socat 卸载报错的问题。

2017年07月23日,版本 v1.0.3

1.取消 CentOS系统支持。

2.脚本 结构简单重写。

3.修复 各种BUG。

2016年12月24日,版本 v1.0.1

1.增加 自动设置开机启动功能。

2.增加 自动设置开放防火墙端口功能。

3.修复 启动/停止 成功,但是提示失败的BUG。

2016年12月21日,版本 v1.0.0

1.推出 正式版本。


Socat手动教程:Shadowsocks利用 Socat 实现单端口 中继(中转)加速

其他 Shadowsocks中继(中转)教程:传送门

转载请超链接注明:逗比根据地 » 『原创』Shadowsocks Socat 中继(中转/端口转发) 便捷管理脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (17)or打赏
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(27)个小伙伴在吐槽
  1. 2017/10/04 06:48:44 socat[2099] E write(6, 0x251b110, 5292): Broken pipe 2017/10/04 06:50:08 socat[2259] E write(5, 0x16c1110, 65): Broken pipe 这种是什么错误?
    L.G.Y2017-10-04 07:03 回复
  2. 亲,我在Azure香港机部署了SOCAT. 发现大概1天半左右SOCAT TCP及UDP端口转发进程就不在了。另外,一段时间后VPS连不上,SSH也不行。SS VPS用的加密方式是none + auth_chain_a. 是不是因为转发的流量都是不带加密的所以香港的中继服务器被墙了?但看文档说non+auth_chain_a模式下自带RC4加密呀。。。不解。。。
    oree2017-08-29 11:06 回复
    • 如果国外能ping通,国内ping不通,就是被墙了,我还没见过SSR账号被墙的呢。
      Toyo2017-08-29 12:20 回复
      • 其实很奇怪,也许是Azure的问题,国内ping不同,用VPS也ping不通。 亲,这种情况下SOCAT的数据流是加密的吗?
        oree2017-09-01 14:28 回复
        • SOCAT在中转服务器上面监听中转端口,然后你本地SSR账号链接中转端口,SOCAT收到监听中转端口的数据后,就会原封不动的收到的数据转发到指定 服务器IP(SSR)和端口,然后你的SSR服务器收到数据,交给SSR服务端处理,最后原路返回。
          Toyo2017-09-01 15:19 回复
  3. 大胸弟,无法开机自启,查看rc.local发现nohup socat…代码在exit 0下边,然后看脚本里的#系统判断全写的debian
    npt2017-07-23 00:31 回复
    • 脚本里添加rc.local是分 ubuntu/debian 的,除了if->Debian就是else->Ubuntu了。
      Toyo2017-07-23 00:54 回复
      • 更新了,兄弟稳!!
        npt2017-07-23 23:10 回复
  4. 大神~我在阿里云安装这个脚本都是成功的~也开通了防火墙端口~但是转发失败~连不上网
    在流浪的葡萄2017-07-14 23:00 回复
    • 失败,怎么失败?SSR客户端 链接统计窗口提示什么(错误/超时/空连)?
      Toyo2017-07-15 00:08 回复
    • 换debian7试试
      KKK2017-07-17 04:22 回复
  5. 你好,请问能不能增加ipv6的转发设置,与ipv4转发不太一样,谢谢啦
    coldark2017-06-11 08:17 回复
  6. 大兄弟,感谢分享,只是测试发现好像开启了太多的pid,我就刷了一分钟的TUMBLE,后来的视频打开就很慢,一看list,乖乖,上百个PID。。。。。。我真的只开启了一个端口转发,没连接的话只有两个,上会儿网就出来一堆
    灰太狼2017-03-21 02:04 回复
    • 那可能就是 Socat的问题了。
      Toyo2017-03-21 12:51 回复
  7. 话说 socat会不会有 转发效率不足 类似的问题啊。。。
    南琴浪2017-02-03 00:31 回复
    • 只要是流量转发(端口转发)都会涉及到转发速度损耗,不过一般影响很小,也没有人做过测试,因为影响的因素很多,测试起来因为损耗很小,所以也看不出是因为端口转发导致的速度损耗,还是因为其他因素影响。
      Toyo2017-02-03 02:51 回复
  8. 这个能同时转发多个端口吗/
    甘文2017-01-29 16:50 回复
    • 文章里已经写了,Socat一次只能配置一个端口转发,多个端口只能开多个socat程序,需要端口段转发看 iptables haproxy
      Toyo2017-01-29 17:00 回复
  9. 请问能不能将某个TCP端口也同样把UDP的数据转换成TCP,通过TCP端口转发出去? 比如说我有一个1111的TCP端口,我想实现它既能发送TCP数据,又同样可以通过这个端口把UDP的数据转换成TCP通过1111的TCP转发出去?
    SunZz2016-12-28 16:34 回复
    • TCP是TCP,UDP是UDP完全不一样的,是否能实现你说的 我不清楚,但是我知道这个超出了 端口转发 或者说 socat 的能力范围。
      Toyo2016-12-28 18:05 回复
      • 现在是这个样的,我有一个主机只能设置内部端口,比如我把内部端口1111的UDP和TCP开启,外部端口会随机分配两个端口已连接内部的1111端口,1111的TCP外部端口是1234,UDP是5678,这个时候如果我用SS连接(我用梅林,没有可以设置UDP端口的地方),只能设置TCP的1234端口,而无法连接5678端口,这个时候我该怎么做才能把UDP的流量转化成TCP走1234端口?还是说只能在SS里单独设置UDP端口?
        SunZz2016-12-29 14:45 回复
        • 这个应该实现很麻烦,我并没有研究,你可能需要谷歌。
          Toyo2016-12-29 15:24 回复
          • 确实比较麻烦,所以正在询问几方看看有没有可以更容易实现的方法,谢谢。
            SunZz2016-12-30 16:01 回复
  10. 请问这个需要手动加入开机启动吗?
    Hirotaka2016-12-24 00:07 回复
    • 脚本并没有设置开机启动,有需要的话,我明天可以加上。
      Toyo2016-12-24 00:41 回复
  11. 国内VPS的宽带是1m的话,那我最高速度是不是也是1m?
    肥鸡2016-12-22 00:16 回复
    • 国内的这些VPS说的1Mbps宽带,都是独享1Mbps上行宽带,下行一般都不会限速的,也就是说VPS把数据传给你,只有1Mbps的速度,或者你下载VPS上面的文件,只有1Mbps的速度,理论速度128KB/S。
      Toyo2016-12-22 01:03 回复