├── ss.sh ├── 【译】如何在CentOS 7上部署Google BBR.md └── README.md /ss.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # log路径 3 | export log_path=/etc/ss.log 4 | # 设置端口号 5 | echo -n -e '\033[36mPlease enter PORT(1225 default): \033[0m' 6 | # echo -n "please enter port(1225 default):" 7 | read port 8 | if [ ! -n "$port" ];then 9 | echo "port will be set to 1225" 10 | port=1225 11 | else 12 | echo "port will be set to $port" 13 | fi 14 | # 设置密码 15 | echo -n -e '\033[36mPlease enter PASSWORD(123456 default): \033[0m' 16 | # echo -n "please enter password(123456 default):" 17 | read pwd 18 | if [ ! -n "$pwd" ];then 19 | echo "password will be set to 123456" 20 | pwd=123456 21 | else 22 | echo "password will be set to $pwd" 23 | fi 24 | # 写shadowsocks.json配置文件 25 | cat>/etc/shadowsocks.json<> ${log_path} 2>&1` 39 | ret=`easy_install pip >> ${log_path} 2>&1` 40 | ret=`pip install shadowsocks >> ${log_path} 2>&1` 41 | ret=`yum install -y firewalld >> ${log_path} 2>&1` 42 | ret=`systemctl start firewalld >> ${log_path} 2>&1` 43 | # 开启端口 44 | ret=`firewall-cmd --permanent --zone=public --add-port=22/tcp >> ${log_path} 2>&1` 45 | ret=`firewall-cmd --permanent --zone=public --add-port=$port/tcp >> ${log_path} 2>&1` 46 | ret=`firewall-cmd --reload >> ${log_path} 2>&1` 47 | # 如果有相同功能的进程则杀死 48 | ps -ef|grep ssserver|grep shadowsocks|grep -v grep 49 | if [ $? -eq 0 ];then 50 | ps -ef|grep ssserver|grep shadowsocks|awk '{ print $2 }'|xargs kill -9 51 | fi 52 | # 后台运行 53 | /usr/bin/ssserver -c /etc/shadowsocks.json -d start 54 | # 成功 55 | if [ $? -eq 0 ];then 56 | clear 57 | cat< BBR(Bottleneck Bandwidth and RTT) 是一种新的拥塞控制算法,由谷歌贡献给Linux内核TCP协议栈。使用BBR后,Linux服务器可以显着提高吞吐量并减少连接延迟。此外,部署BBR很容易,因为此算法仅需要更新发送方,网络或接收方无需更新。 10 | 11 | 在本文中,我将向您展示如何在Vultr CentOS 7 KVM服务器实例上部署BBR。 12 | 13 | ### 准备条件 14 | 15 | * Vultr CentOS 7 x64服​​务器实例。 16 | * 一个sudo用户。 17 | 18 | ### 步骤1:使用ELRepo RPM存储库升级内核 19 | 20 | 为了使用 BBR,您需要将 CentOS 7 机器的内核升级到4.9.0。您可以使用 ELRepo RPM 存储库轻松完成此操作。 21 | 22 | 在升级之前,您可以看看当前的内核: 23 | 24 | uname -r 25 | 26 | 该命令应输出一个类似于以下内容的字符串: 27 | 28 | 3.10.0-514.2.2.el7.x86_64 29 | 30 | 如您所见,当前内核为3.10.0。 31 | 32 | 安装 ELRepo 库: 33 | 34 | sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 35 | sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm 36 | 37 | 使用ELRepo库安装4.9.0内核: 38 | 39 | sudo yum --enablerepo = elrepo-kernel安装kernel-ml -y 40 | 41 | 确认结果: 42 | 43 | rpm -qa | grep kernel 44 | 45 | 如果安装成功,您应该在输出列表中看到 `kernel-ml-4.9.0-1.el7.elrepo.x86_64` : 46 | 47 | kernel-ml-4.9.0-1.el7.elrepo.x86_64 48 | kernel-3.10.0-514.el7.x86_64 49 | kernel-tools-libs-3.10.0-514.2.2.el7.x86_64 50 | kernel-tools-3.10.0-514.2.2.el7.x86_64 51 | kernel-3.10.0-514.2.2.el7.x86_64 52 | 53 | 现在,您需要通过设置默认的grub2启动项来启用4.9.0内核。 54 | 55 | 显示 grub2 菜单中的所有条目: 56 | 57 | sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \' 58 | 59 | 结果应该类似于: 60 | 61 | CentOS Linux 7 Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.9.0-1.el7.elrepo.x86_64) 62 | CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core) 63 | CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core) 64 | CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core) 65 | CentOS Linux (0-rescue-bf94f46c6bd04792a6a42c91bae645f7) 7 (Core) 66 | 67 | 因为行数从`0`开始,而4.9.0内核项在第二行,因此将默认启动项设置为`1`: 68 | 69 | sudo grub2-set-default 1 70 | 71 | 重启系统: 72 | 73 | sudo shutdown -r now 74 | 75 | 当服务器恢复联机时,请重新登录并重新运行`uname`命令以确认您使用的是正确的内核: 76 | 77 | uname -r 78 | 79 | 您应该看到如下结果: 80 | 81 | 4.9.0-1.el7.elrepo.x86_64 82 | 83 | ### 步骤2: 启用 BBR 84 | 85 | 为了启用BBR算法,您需要修改`sysctl`配置,如下所示: 86 | 87 | echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf 88 | echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf 89 | sudo sysctl -p 90 | 91 | 现在,您可以使用以下命令确认BBR已启用: 92 | 93 | sudo sysctl net.ipv4.tcp_available_congestion_control 94 | 95 | 输出应该类似于: 96 | 97 | net.ipv4.tcp_available_congestion_control = bbr cubic reno 98 | 99 | 接下来,验证: 100 | 101 | sudo sysctl -n net.ipv4.tcp_congestion_control 102 | 103 | 输出应该是: 104 | 105 | bbr 106 | 107 | 最后,检查内核模块是否已加载: 108 | 109 | lsmod | grep bbr 110 | 111 | 输出将类似于: 112 | 113 | tcp_bbr 16384 0 114 | 115 | ### 步骤3(可选):测试网络性能增强 116 | 117 | 为了测试BBR的网络性能增强,您可以在Web服务器目录中创建一个文件进行下载,然后从台式机上的Web浏览器测试下载速度。 118 | 119 | sudo yum install httpd -y 120 | sudo systemctl start httpd.service 121 | sudo firewall-cmd --zone=public --permanent --add-service=http 122 | sudo firewall-cmd --reload 123 | cd /var/www/html 124 | sudo dd if=/dev/zero of=500mb.zip bs=1024k count=500 125 | 126 | 最后,从桌面计算机上的Web浏览器访问URL `http://[your-server-IP]/500mb.zip`,然后评估下载速度。 127 | 128 | 就这样。谢谢您的阅读。 129 | 130 | *********** 文章结束 *********** -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 使用 Vultr 搭建 ShadowSocks /VPS搭建SS(超详细) 2 | 3 | **声明:文章原创,可以全文转载,禁止转载修改,禁止抄袭** 4 | 5 | **声明:本文仅供测试,请依照相关法律合法使用** 6 | 7 | * [本文链接-个人网站,建议收藏](https://zhangdanyang.com/#/Post/5a75116be9116c2be23e7b5d) 8 | 9 | * [本文链接-CSDN](http://blog.csdn.net/boxuerixin/article/details/79295976) 10 | 11 | * [本文链接-简书](https://www.jianshu.com/p/74083a8ea6a9) 12 | 13 | # 请先读我 14 | ## 实现原理 15 | 本地发起连接请求,由远程服务器响应后然后将我们需要的数据返回到本地。 16 | 17 | [了解更多戳我](http://vc2tea.com/whats-shadowsocks/) 18 | 19 | ## 最低消费 20 | 21 | 2.5美元(经常售罄),5美元。 22 | 23 | ## 网速自测 24 | 25 | 经过我个人测试后选择的Dallas节点,浏览youtube视频,网速能达到1MB/s 26 | ,玩美服lol的延迟是200ms-250ms,这个速度已经很不错了,具体分析参考[《国内连接美国VPN延迟(PING)多少算正常?》](http://www.vpnps.com/usa_vpn_ping.html)。 27 | 28 | PS:浏览其他人的博客都推荐的是LosAngeles节点,具体的自己通过测试后拿主意吧,懒得测试就选洛杉矶节点吧。 29 | 30 | 了解更多,请戳[Vultr 节点哪个比较快?](https://www.v2ex.com/t/276585) 31 | 32 | ## 知识储备 33 | 1. 懂Linux最好,不懂就按照下面操作来吧 34 | 2. 肯折腾 35 | 3. 懂英语,不懂的话…搭建SS(Shadow Socks),诶? 36 | 37 | ## 具体步骤 38 | ### 购买服务器 39 | 1. 打开[链接1:我的夏季促销推广链接](http://www.vultr.com/?ref=7044457-3B),无效的话尝试 [链接2:我的普通推广链接](http://www.vultr.com/?ref=7039524)。 40 | 这两个都指向官网,信不过我的自己去百度搜索vultr官网。【更多信息见最后的Vlutr服务器链接详细说明】 41 | 42 | 2. 注册账号并验证邮箱。 43 | 44 | 3. 测试速度或直接选择洛杉矶节点,[测试节点网速请戳我并拉到页面最下面](https://www.vultr.com/faq/)。如果感觉不满意,去试试其他的服务器提供商比如搬瓦工等等,个人感觉vultr还可以。 45 | 46 | 补充:近期东京结点基本都挂掉了,美国的也挂掉了很多,请尝试洛杉矶结点或达拉斯结点。 47 | 48 | 4. 充值,点击左侧的Billing,最低$10,建议选择支付宝支付,简单快捷,符合我国国情。 49 | 50 | 5. 搭建服务器,点击左侧的Servers,依次选择Server Location——你测试的最快的或者洛杉矶;Server Type——Cent OS7 x64(这个我可以提供技术支持,本文基于CentOS 7 x64,**脚本原创,脚本基于Cent OS7**);Server Size——只是搭建ss,选价格最低的就够了($2.5/mon,多数情况下此套餐售罄,请选择$5/mon);其他的选填。然后点击右下角的Deploy Now。稍等片刻,服务器就可以装好了。 51 | 52 | 6. 装好后,你可以看到如下界面: 53 | 54 | ![servers](http://upload-images.jianshu.io/upload_images/606686-1ac7f1e803a837ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 55 | 56 | 点击可以查看服务器的相关信息: 57 | 58 | ![server information](http://upload-images.jianshu.io/upload_images/606686-94fdc78226d6cf94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 59 | 60 | 接下来操作需要的信息是IP Address(IP地址),Username(用户名)和Password(密码)。这个页面不要关,一会直接复制粘贴相关信息。 61 | 62 | ### 远程连接服务器 63 | 64 | > 方法①:使用网页版的进行操作。点击刚才的网页的右上角的五个按钮最左边的View Console进行操作。 65 | 66 | > 方法②:使用ssh工具进行操作。 Windows用户使用putty或Xshell进行操作。Mac用户请使用终端或iTerm2进行操作。 67 | 68 | #### 以Xshell为例(Windows用户请看) 69 | 70 | 1. 下载安装Xshell。 71 | 2. 安装完成后新建会话(快捷键Alt+N)。依次填写图中信息。 72 | 名称可以是Vultr或者其他,协议选择SSH,主机填写之前的IP Address,端口号选择22。 73 | 74 | ![连接](http://upload-images.jianshu.io/upload_images/606686-f322045231665e92.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 75 | 76 | 点击左侧的用户身份验证,填写信息。方法选择Password,用户名为之前的Username(一般都是root),密码为之前的Password(这个建议直接复制粘贴过来,系统给的有点复杂) 77 | 78 | ![用户身份验证](http://upload-images.jianshu.io/upload_images/606686-7b552de82575fe61.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 79 | 80 | 填写完之后点击确定。然后点击连接。出现其他提示的话选择接受就可以了。这时你就可以看到一个命令控制台了。这时就算连接成功了。 81 | 82 | #### 以iTerm2为例(Mac用户请看) 83 | 84 | 1. 打开终端。 85 | 2. 输入命令。 86 | ``` 87 | ssh root@45.32.195.77 88 | ``` 89 | 如果有提示很长一大段文字,服务器连接指纹认证,如下 90 | 91 | ![指纹验证](http://upload-images.jianshu.io/upload_images/606686-046a13945b6f62a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 92 | 93 | 输入 94 | ``` 95 | yes 96 | ``` 97 | 接着出现 98 | 99 | ![请输入密码](http://upload-images.jianshu.io/upload_images/606686-78d901f620f45405.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 100 | 101 | 将系统给的密码复制过来进行粘贴,粘贴操作是不允许看到密码的,粘贴完直接回车即可。 102 | 103 | 这之后就连接上了服务器。你将看到如下界面: 104 | 105 | ![登录成功](http://upload-images.jianshu.io/upload_images/606686-ac875c4388253892.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 106 | 107 | ## 脚本快速安装(方案一,推荐用户:全体成员尤其是小白) 108 | 109 | ### 脚本功能 110 | * 自定义**端口号**和**密码**,加密方式采用**aes-256-cfb**(脚本中采用此方式) 111 | * 全过程静默安装,不会打扰用户,你所要做的就是去听一首音乐或者去喝杯咖啡 112 | * 一次只允许运行一个shadowsocks进程,脚本会自动检测原来已经运行的进程并杀死 113 | * 安装防火墙并开放需要的端口,实测vultr服务器不安装防火墙无法进行连接 114 | 115 | ### 操作步骤 116 | 117 | 1. 下载脚本 118 | ``` 119 | wget -O ss.sh http://zhangdanyang.com/ss.sh 120 | ``` 121 | ![执行](http://upload-images.jianshu.io/upload_images/606686-0491a88d1baf8ecd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 122 | 123 | 124 | 2. 执行脚本 125 | ``` 126 | bash ss.sh 127 | ``` 128 | # 设置端口号并回车,直接回车是设置为1225 129 | Please enter PORT(1225 default): 130 | # 设置密码并回车,直接回车是设置为123456 131 | Please enter PASSWORD(123456 default): 132 | 133 | # 等待一会……就完成了(初次执行约2-5min) 134 | 135 | ### 具体图示 136 | 137 | ![步骤,蓝框内的是手动输入的](http://upload-images.jianshu.io/upload_images/606686-e0b5b26371252815.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 138 | 139 | ### gif 演示 140 | ![详细过程](http://upload-images.jianshu.io/upload_images/606686-575fe20efcfe327e.gif?imageMogr2/auto-orient/strip) 141 | 142 | 143 | ## 独立动手搭建(方案二,推荐用户:极客,爱折腾的人) 144 | 145 | ### 搭建 Shadowsocks 服务 146 | 147 | #### 安装组件 148 | 149 | yum install m2crypto python-setuptools 150 | easy_install pip 151 | pip install shadowsocks 152 | 153 | #### 安装完成后配置服务器参数 154 | vi /etc/shadowsocks.json 155 | 156 | 写入如下配置: 157 | 158 | { 159 | "server":"0.0.0.0", 160 | "server_port":443, 161 | "local_address": "127.0.0.1", 162 | "local_port":1080, 163 | "password":"123456", 164 | "timeout":300, 165 | "method":"aes-256-cfb", 166 | "fast_open": false 167 | } 168 | 169 | 多端口的如下: 170 | 171 | { 172 | "server":"0.0.0.0", 173 | "local_address": "127.0.0.1", 174 | "local_port":1080, 175 | "port_password": { 176 | "443": "443", 177 | "8888": "8888" 178 | }, 179 | "timeout":300, 180 | "method":"aes-256-cfb", 181 | "fast_open": false 182 | } 183 | 184 | 其中server字段与local_address填写之前的IP Address。password是自己用于连接这个shadow socks的密码,自定义就好。 185 | 其他的不需要更改。 186 | 187 | 然后保存退出。 188 | 189 | vi 的命令: 按 "i" 进入编辑模式,编辑后按 "esc" 退出编辑模式, 输入 ":wq" 保存退出vi。 190 | 191 | ### 配置防火墙 192 | 193 | # 安装防火墙 194 | yum install firewalld 195 | # 启动防火墙 196 | systemctl start firewalld 197 | 198 | #### 开启防火墙相应的端口 199 | 200 | # 端口号是你自己设置的端口 201 | firewall-cmd --permanent --zone=public --add-port=443/tcp 202 | firewall-cmd --reload 203 | 204 | ### 启动 Shadowsocks 服务 205 | 206 | # 后台运行 207 | ssserver -c /etc/shadowsocks.json -d start 208 | 209 | # 调试时使用下面命令,实时查看日志 210 | ssserver -c /etc/shadowsocks.json 211 | 212 | 213 | 214 | ## 连接 215 | 这样服务器就搭建好了。[全平台的连接方法戳我](https://github.com/shadowsocks/shadowsocks/wiki)。 216 | 217 | ### PC连接 218 | 下载Shadow Socks客户端。[下载地址](https://github.com/shadowsocks/shadowsocks-windows/releases) 219 | 选择适合的版本,下载并解压运行。 220 | 221 | 填写信息:服务器地址,端口号,密码,加密方式与代理端口默认即可 222 | 223 | ![SS信息填写](http://upload-images.jianshu.io/upload_images/606686-4d8d781517796bde.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 224 | 225 | 填写完之后点击确定,然后**到托盘中右键选择开启"启用系统代理"**。 226 | 227 | ### iOS连接 228 | 229 | 在App Store下载Wingy。 230 | 231 | 填写信息:服务器,端口,密码,代理模式,加密方式默认即可。 232 | 233 | ![Wingy信息填写](http://upload-images.jianshu.io/upload_images/606686-84ea88f5860d36cf.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 234 | 235 | ### MacOS连接 236 | 237 | [下载地址](https://github.com/shadowsocks/shadowsocks-iOS/releases) 238 | 使用方式参考windows 239 | 240 | ### Android连接 241 | 242 | [下载地址](https://github.com/shadowsocks/shadowsocks-android/releases) 243 | 244 | ## 国外站点 245 | 246 | [Google](http://www.google.com/) 247 | 248 | [Youtube](http://www.youtube.com/) 249 | 250 | [Facebook](http://www.facebook.com/) 251 | 252 | 如果以上没有问题的话,这时候你就可以畅游外面的世界了。点击上述链接测试吧。 253 | 254 | ## 常见问题 255 | 256 | ### 远程连接工具xshell无法连接服务器。 257 | 258 | 此时ping一下服务器,如果ping不同,则证明创建的服务器ip被墙,请销毁掉当前服务器,重新创建新的服务器。 259 | 260 | ### 计费模式 261 | 262 | 服务器按照小时计费,如果一台服务器创建1天后就销毁了,那么只扣1天的费用。例如:服务器一个月$5,那么1天扣除的就是5/30美元。 263 | 264 | --------------------------------------------------------------------------------