Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大佬,测试了2台VPS最后都是[错误] Brook-pf 启动失败 ! #1

Open
wants to merge 22 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 38 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Brook端口转发一键脚本再次修改版
Brook 端口转发 一键管理脚本再次修改版 基于逗比,yulewang版本修改而来
# Brook端口转发一键脚本修改版
Brook 端口转发 一键管理脚本修改版 基于逗比/yulewang/newcastlecy版本修改而来

去掉了更新之类的功能。删除iptables端口放行规则,更换为全允许。
恢复了更新之类的功能。删除iptables端口放行规则,更换为全允许。

解决之前脚本不支持CNAME的问题,将DDNS监测周期更换为1min。
解决之前脚本不支持20200801之后版本的问题,还有会不支持CNAME的问题,将DDNS监测周期更换为1min。本脚本不支持20200801及之前版本brook

-----------------------------------------------------------------------------

Expand All @@ -12,7 +12,8 @@ Brook 端口转发 一键管理脚本再次修改版 基于逗比,yulewang版

**为什么会有此脚本**

之前我也是力推iptables,但在DDNS实现上较为复杂。有大佬写了很好用的脚本,但规则一多,要么删除不完全,要么删掉一大堆本来不应该删掉的规则。使用过程中难免会在调试阶段删除/添加规则,删除某一条后发现突然少了20多条规则,这样的事应该都不想在正常使用中遇到吧。正好我看到逗比的Brook转发脚本被大佬修改支持DDNS,试了一下发现CNAME无法使用,所以结合了其他脚本的域名拿IP方法,构成了此脚本(拼接怪
之前我也是力推iptables,但在DDNS实现上较为复杂。有大佬写了很好用的脚本,但规则一多,要么删除不完全,要么删掉一大堆本来不应该删掉的规则。使用过程中难免会在调试阶段删除/添加规则,删除某一条后发现突然少了20多条规则,这样的事应该都不想在正常使用中遇到吧。正好我看到逗比的Brook转发脚本被大佬修改支持DDNS,试了一下发现CNAME无法使用,所以结合了其他脚本的域名拿IP方法,构成了此脚本。
后来发现从v20200801后这个脚本就没办法使用了,原来brook作者更新了命名规则而且连运行规则都更换了,导致后续版本不能使用,所以更新了这个脚本。

**此脚本优势**

Expand All @@ -23,34 +24,48 @@ Brook 端口转发 一键管理脚本再次修改版 基于逗比,yulewang版
首先即是无法转发端口段,如要转发端口段则请避免使用此转发脚本。其次对系统的资源(CPU,RAM)有一定占用,当然比隧道还是好多了xx

## 使用方法

20200801之后版本使用此脚本:
```shell
wget -qO brook-pf-mod.sh https://raw.githubusercontent.com/irol765/brook-1/master/brook-pf-mod.sh && chmod +x brook-pf-mod.sh && bash brook-pf-mod.sh
```

20200801及之前版本使用此脚本:
```shell
wget -qO brook-pf-mod.sh https://raw.githubusercontent.com/monret/brook/master/brook-pf-mod.sh && chmod +x brook-pf-mod.sh && bash brook-pf-mod.sh
```

执行结果:
```
Brook 端口转发 一键管理脚本修改版(DDNS支持) [v1.0.1]
Brook 端口转发 一键管理脚本修改版(DDNS支持) [v1.0.4]
0. 升级脚本
————————————
1. 安装 Brook
2. 卸载 Brook
2. 更新 Brook
3. 卸载 Brook
————————————
4. 启动 Brook
5. 停止 Brook
6. 重启 Brook
————————————
3. 启动 Brook
4. 停止 Brook
5. 重启 Brook
7. 设置 Brook 端口转发
8. 查看 Brook 端口转发
9. 查看 Brook 日志
10. 监控 Brook 运行状态(如果使用DDNS必须打开)
————————————
6. 设置 Brook 端口转发
7. 查看 Brook 端口转发
8. 查看 Brook 日志
9. 监控 Brook 运行状态(如果使用DDNS必须打开)
————————————
10. 安装CNAME依赖(若添加DDNS出现异常)
11. 安装服务脚本(执行安装Brook后请勿重复安装)
12. iptables一键放行
11. 安装CNAME依赖(若添加DDNS出现异常)
12. 安装服务脚本(执行安装Brook后请勿重复安装)
13. iptables一键放行
————————————
当前状态: 未安装
请输入数字 [0-12]:

当前状态: 已安装 并 已启动

请输入数字 [0-13]:
```
按1后回车即可自动安装完成。

**如需开启DDNS支持,请在安装完成后按9开启运行监控。**
**如需开启DDNS支持,请在安装完成后按10开启运行监控。**
**如果需要使用DDNS,需要安7后按0,或者在配置文件内以"本地端口 远端ip 远端端口 1 域名"格式添加保存**

## 手动安装
因国内下载github资源速度缓慢,建议国内机器使用手动安装来使用。
Expand All @@ -67,9 +82,9 @@ https://github.com/txthinking/brook/releases
```
chmod +x /usr/local/brook-pf
```
接下来进入脚本依次执行第10,11,12项
接下来进入脚本依次执行第11,12,13项

在执行第11项时可能会出现无法下载的问题,请根据系统类型下载项目内的**brook-pf_debian** 或 **brook-pf_centos**
在执行第12项时可能会出现无法下载的问题,请根据系统类型下载项目内的**brook-pf_debian** 或 **brook-pf_centos**

下载完后改名为 **brook-pf**,上传至 **/etc/init.d/** ,然后执行:
```
Expand Down
127 changes: 90 additions & 37 deletions brook-pf-mod.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@ export PATH
#=================================================
# System Required: CentOS/Debian/Ubuntu
# Description: Brook
# Version: 1.0.1
# Author: Toyo, yulewang(DDNS features), monret(CNAME, iptables)
# Blog: https://doub.io/wlzy-jc37/
# Version: 1.0.4
# Author: Toyo,yulewang(DDNS features),monret(CNAME, iptables),irol765(supper new_ver)
#=================================================

sh_ver="1.0.1"
sh_ver="1.0.4"
filepath=$(cd "$(dirname "$0")"; pwd)
file_1=$(echo -e "${filepath}"|awk -F "$0" '{print $1}')
file="/usr/local/brook-pf"
Expand Down Expand Up @@ -88,6 +87,25 @@ check_new_ver(){
echo -e "${Info} 开始下载 Brook [ ${brook_new_ver} ] 版本!"
fi
}
check_ver_comparison(){
brook_now_ver=$(${brook_file} -v|awk '{print $3}')
[[ -z ${brook_now_ver} ]] && echo -e "${Error} Brook 当前版本获取失败 !" && exit 1
brook_now_ver="v${brook_now_ver}"
if [[ "${brook_now_ver}" != "${brook_new_ver}" ]]; then
echo -e "${Info} 发现 Brook 已有新版本 [ ${brook_new_ver} ],旧版本 [ ${brook_now_ver} ]"
read -e -p "是否更新 ? [Y/n] :" yn
[[ -z "${yn}" ]] && yn="y"
if [[ $yn == [Yy] ]]; then
check_pid
[[ ! -z $PID ]] && kill -9 ${PID}
rm -rf ${brook_file}
Download_brook
Start_brook
fi
else
echo -e "${Info} 当前 Brook 已是最新版本 [ ${brook_new_ver} ]" && exit 1
fi
}
check_domain_ip_change(){
Modify_success="0"
user_all=$(cat ${brook_conf}|sed '/^\s*$/d')
Expand Down Expand Up @@ -127,7 +145,8 @@ Download_brook(){
[[ ! -e ${file} ]] && mkdir ${file}
cd ${file}
if [[ ${bit} == "x86_64" ]]; then
wget --no-check-certificate -N "https://github.com/txthinking/brook/releases/download/${brook_new_ver}/brook"
wget --no-check-certificate -N "https://github.com/txthinking/brook/releases/download/${brook_new_ver}/brook_linux_amd64"
mv brook_linux_amd64 brook
else
wget --no-check-certificate -N "https://github.com/txthinking/brook/releases/download/${brook_new_ver}/brook_linux_386"
mv brook_linux_386 brook
Expand All @@ -137,14 +156,14 @@ Download_brook(){
}
Service_brook(){
if [[ ${release} = "centos" ]]; then
if ! wget --no-check-certificate https://raw.githubusercontent.com/monret/brook/master/brook-pf_centos -O /etc/init.d/brook-pf; then
if ! wget --no-check-certificate https://raw.githubusercontent.com/irol765/brook-1/master/brook-pf_centos -O /etc/init.d/brook-pf; then
echo -e "${Error} Brook服务 管理脚本下载失败 !" && exit 1
fi
chmod +x /etc/init.d/brook-pf
chkconfig --add brook-pf
chkconfig brook-pf on
else
if ! wget --no-check-certificate https://raw.githubusercontent.com/monret/brook/master/brook-pf_debian -O /etc/init.d/brook-pf; then
if ! wget --no-check-certificate https://raw.githubusercontent.com/irol765/brook-1/master/brook-pf_debian -O /etc/init.d/brook-pf; then
echo -e "${Error} Brook服务 管理脚本下载失败 !" && exit 1
fi
chmod +x /etc/init.d/brook-pf
Expand Down Expand Up @@ -513,6 +532,22 @@ Install_brook(){
Set_iptables
echo -e "${Info} Brook 安装完成!默认配置文件为空,请选择 [设置 Brook 端口转发 - 添加 端口转发] 来添加端口转发。"
}
Update_brook(){
check_installed_status
echo && echo -e "下载最新版
${Green_font_prefix}2.${Font_color_suffix} 国外服务器(Github)

${Tip} 因为国内对 Github 限速,这会导致国内服务器下载速度极慢,如不能下载请自行手动安装" && echo
read -e -p "(默认: 2 国外服务器):" bk_Download
[[ -z "${bk_Download}" ]] && bk_Download="2"
if [[ ${bk_Download} == "1" ]]; then
Download_type="2"
else
Download_type="2"
fi
check_new_ver
check_ver_comparison
}
Start_brook(){
check_installed_status
check_pid
Expand Down Expand Up @@ -667,28 +702,40 @@ Resolve_Hostname_To_IP(){
echo -e "${Error} Could not resolve hostname [${bk_domain_pf}] !" && exit 1
fi
}
Update_Shell(){
sh_new_ver=$(wget --no-check-certificate -qO- -t1 -T3 "https://raw.githubusercontent.com/irol765/brook-1/master/brook-pf-mod.sh"|grep 'sh_ver="'|awk -F "=" '{print $NF}'|sed 's/\"//g'|head -1) && sh_new_type="github"
[[ -z ${sh_new_ver} ]] && echo -e "${Error} 无法链接到 Github !" && exit 0
if [[ -e "/etc/init.d/brook-pf" ]]; then
rm -rf /etc/init.d/brook-pf
Service_brook
fi
wget -qO brook-pf-mod.sh https://raw.githubusercontent.com/irol765/brook-1/master/brook-pf-mod.sh && chmod +x brook-pf-mod.sh && bash brook-pf-mod.sh
echo -e "脚本已更新为最新版本[ ${sh_new_ver} ] !(注意:因为更新方式为直接覆盖当前运行的脚本,所以可能下面会提示一些报错,无视即可)" && exit 0
}
check_sys
action=$1
if [[ "${action}" == "monitor" ]]; then
crontab_monitor_brook
else
echo && echo -e " Brook 端口转发 一键管理脚本修改版(DDNS支持) ${Red_font_prefix}[v${sh_ver}]${Font_color_suffix}

${Green_font_prefix} 0.${Font_color_suffix} 升级脚本
————————————
${Green_font_prefix} 1.${Font_color_suffix} 安装 Brook
${Green_font_prefix} 2.${Font_color_suffix} 卸载 Brook
${Green_font_prefix} 2.${Font_color_suffix} 更新 Brook
${Green_font_prefix} 3.${Font_color_suffix} 卸载 Brook
————————————
${Green_font_prefix} 3.${Font_color_suffix} 启动 Brook
${Green_font_prefix} 4.${Font_color_suffix} 停止 Brook
${Green_font_prefix} 5.${Font_color_suffix} 重启 Brook
${Green_font_prefix} 4.${Font_color_suffix} 启动 Brook
${Green_font_prefix} 5.${Font_color_suffix} 停止 Brook
${Green_font_prefix} 6.${Font_color_suffix} 重启 Brook
————————————
${Green_font_prefix} 6.${Font_color_suffix} 设置 Brook 端口转发
${Green_font_prefix} 7.${Font_color_suffix} 查看 Brook 端口转发
${Green_font_prefix} 8.${Font_color_suffix} 查看 Brook 日志
${Green_font_prefix} 9.${Font_color_suffix} 监控 Brook 运行状态(如果使用DDNS必须打开)
————————————
${Green_font_prefix}10.${Font_color_suffix} 安装CNAME依赖(若添加DDNS出现异常)
${Green_font_prefix}11.${Font_color_suffix} 安装服务脚本(执行安装Brook后请勿重复安装)
${Green_font_prefix}12.${Font_color_suffix} iptables一键放行
${Green_font_prefix} 7.${Font_color_suffix} 设置 Brook 端口转发
${Green_font_prefix} 8.${Font_color_suffix} 查看 Brook 端口转发
${Green_font_prefix} 9.${Font_color_suffix} 查看 Brook 日志
${Green_font_prefix} 10.${Font_color_suffix} 监控 Brook 运行状态(如果使用DDNS必须打开)
————————————
${Green_font_prefix}11.${Font_color_suffix} 安装CNAME依赖(若添加DDNS出现异常)
${Green_font_prefix}12.${Font_color_suffix} 安装服务脚本(执行安装Brook后请勿重复安装)
${Green_font_prefix}13.${Font_color_suffix} iptables一键放行
————————————" && echo
if [[ -e ${brook_file} ]]; then
check_pid
Expand All @@ -701,47 +748,53 @@ else
echo -e " 当前状态: ${Red_font_prefix}未安装${Font_color_suffix}"
fi
echo
read -e -p " 请输入数字 [0-12]:" num
read -e -p " 请输入数字 [0-13]:" num
case "$num" in
0)
Update_Shell
;;
1)
Install_brook
;;
2)
Uninstall_brook
Update_brook
;;
3)
Start_brook
Uninstall_brook
;;
4)
Stop_brook
Start_brook
;;
5)
Restart_brook
Stop_brook
;;
6)
Set_brook
Restart_brook
;;
7)
Set_brook
;;
8)
check_installed_status
list_port
;;
8)
9)
View_Log
;;
9)
10)
Set_crontab_monitor_brook
;;
10)
11)
Install_Tools
;;
11)
Service_brook
;;
12)
Set_iptables
;;
12)
Service_brook
;;
13)
Set_iptables
;;
*)
echo "请输入正确数字 [0-12]"
echo "请输入正确数字 [0-13]"
;;
esac
fi
fi
4 changes: 2 additions & 2 deletions brook-pf_centos
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ do_start(){
user_port=$(echo "${user_all}"|sed -n "${integer}p"|awk '{print $1}')
user_ip_pf=$(echo "${user_all}"|sed -n "${integer}p"|awk '{print $2}')
user_port_pf=$(echo "${user_all}"|sed -n "${integer}p"|awk '{print $3}')
servers_all="${servers_all}-l \":${user_port} ${user_ip_pf}:${user_port_pf}\" "
servers_all="${servers_all} --fromto \":${user_port} ${user_ip_pf}:${user_port_pf}\" "
done
eval nohup ./brook relays $(echo ${servers_all}) >> "${LOG}" 2>&1 &
sleep 2s
Expand Down Expand Up @@ -138,4 +138,4 @@ case "$1" in
RETVAL=1
;;
esac
exit $RETVAL
exit $RETVAL
4 changes: 2 additions & 2 deletions brook-pf_debian
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ do_start(){
user_port=$(echo "${user_all}"|sed -n "${integer}p"|awk '{print $1}')
user_ip_pf=$(echo "${user_all}"|sed -n "${integer}p"|awk '{print $2}')
user_port_pf=$(echo "${user_all}"|sed -n "${integer}p"|awk '{print $3}')
servers_all="${servers_all}-l \":${user_port} ${user_ip_pf}:${user_port_pf}\" "
servers_all="${servers_all} --fromto \":${user_port} ${user_ip_pf}:${user_port_pf}\" "
done
eval nohup ./brook relays $(echo ${servers_all}) >> "${LOG}" 2>&1 &
sleep 2s
Expand Down Expand Up @@ -136,4 +136,4 @@ case "$1" in
RETVAL=1
;;
esac
exit $RETVAL
exit $RETVAL