MENU

Shadowsocks利用 Brook 实现中继(中转/端口转发)加速

November 26, 2019 • Read: 2662 • 应用搭建

Brook是一个由 Go语言编写的跨平台代理软件,支持 Linux/MacOS/Windows/Android/iOS 各个平台。

同时因为 Go语言的特性,在操作使用上非常简单,本篇主要介绍 Brook服务端中 端口转发的使用方法。

优点是:安装、配置简单,支持TCP、UDP转发;

缺点是:不支持端口段转发,如果要转发多个端口,多开即可。

Brook Github项目:https://github.com/txthinking/brook

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

其他 Brook 教程请看:https://doub.io/tag/brook/

安装步骤

首先建立并进入文件夹(假设你当前目录是 /root ,那么 Brook的目录就是 /root/brook ):

mkdir brook && cd brook

然后获取最新的版本号:

brook_ver=$(wget -qO- "https://github.com/txthinking/brook/tags"| grep "/txthinking/brook/releases/tag/"| head -n 1| awk -F "/tag/" '{print $2}'| sed 's/\">//') && echo ${brook_ver}

执行完后会输出获取的最新版本号,比如 v20171111 这样的日期格式,如果返回是空或者其他错误的内容,那么就代表获取失败。

获取失败的情况请去 Github 获取最新的版本号,例如 v20171111 ,然后执行 brook_ver=v20171111 (自己替换版本号)即可继续下面的下载步骤。

使用 uname -m 命令来判断VPS的位数,如果返回 x86_64 那就是64位,如果返回 i386或i686 那就是32位。

64位系统使用这个:

wget -N --no-check-certificate "https://github.com/txthinking/brook/releases/download/${brook_ver}/brook"

32位系统使用这个:

wget -N --no-check-certificate "https://github.com/txthinking/brook/releases/download/${brook_ver}/brook_linux_386" && mv brook_linux_386 brook

最后只需要赋予一下执行权限即可继续看下面的使用方法了。

chmod +x brook

使用方法

参数解释

relay          以 单个端口转发 模式运行
relays         以 多个端口转发 模式运行

本篇文章主要介绍 端口转发的两个模式使用方法。

单端口启动

注意:因为前面的安装步骤已经进入了 Brook目录,所以这里不需要再进入目录了。但是以后需要启动Brook的时候,请进入Brook的文件夹,假设你的安装目录是 /root/brook ,那么就使用这个命令 cd /root/brook

启动 一个端口转发

监听端口为 2333,被转发的服务器IP为 2.2.2.2 端口为 6666

nohup ./brook relay -l :2333 -r 2.2.2.2:6666 > /dev/null 2>&1 &

多端口启动

启动 多个端口转发

分别为:

监听端口 2333,被转发的服务器IP为 2.2.2.2 端口为 6666

监听端口 6666,被转发的服务器IP为 3.3.3.3 端口为 6688

监听端口 8888,被转发的服务器IP为 6.6.6.6 端口为 7766

nohup ./brook relays -l ":2333 2.2.2.2:6666" -l ":6666 3.3.3.3:6688" -l ":8888 6.6.6.6:7766" > /dev/null 2>&1 &

停止Brook

kill -9 $(ps -ef|grep "brook relay"|grep -v grep|awk '{print $2}')

简单解释

注意:假设你的中转服务器也就是现在在操作的服务器 IP 是 1.1.1.1 ,那么你的 中转端口 就是 2333 。你的 被中转服务器的 IP 是 2.2.2.2 ,被中转端口是 6666 。

这时候你的 ShadowsocksR客户端 填写信息的时候只修改 IP为 1.1.1.1 ,端口为 2333 ,其他选项都不变。

所以原理就是:

Shadowsocks客户端通过 1.1.1.1:2333 链接中转服务器 1.1.1.1 ,然后中转服务器把端口 2333 的流量转发到 被中转服务器 2.2.2.2 的端口 6666 上面。然后 被中转服务器 也就是上面的 ShadowsocksR服务端,就会去访问你要的数据,最后依次返回 中继服务器 -> Shadowsocks客户端。

其他说明

Brook 默认支持UDP转发,无需任何设置!

运行Brook无报错,但无法连接
这个可能是防火墙的问题(如果有外部防火墙,那么也需要开放端口),因为我测试只支持 TCP,那么只需要开放TCP即可。

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 端口 -j ACCEPT
iptables -I INPUT -m state --state NEW -m udp -p udp --dport 端口 -j ACCEPT

 
# 删除防火墙规则,内容一样把 -I 换成 -D 就行了:
iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 端口 -j ACCEPT
iptables -D INPUT -m state --state NEW -m udp -p udp --dport 端口 -j ACCEPT

提示 wget: command not found 的错误

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

点击展开 查看更多

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

升级 Brook

升级很简单,只需要重新执行一开始的安装步骤即可,区别是不需要再新建文件夹了,直接进入文件夹即可。

卸载 Brook

卸载前先停止 Brook,然后直接删除 Brook的文件夹即可。

kill -9 $(ps -ef|grep "brook"|grep -v grep|awk '{print $2}')
# 先停止,后删除(假设安装在 /root 目录内,那么文件夹就是 /root/brook
rm -rf /root/brook

兼总条贯 知至知终

无标签