Shadowsocks利用 Brook 实现中继(中转/端口转发)加速
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