科学上网

shadowsocks 简介

shadowsocks 是一款自定义协议的代理软件,由于其流量特征不明显,(直到不久前)一直可以稳定提供上网代理。
shadowsocks 客户端会在本地开启一个 socks5 代理,通过此代理的网络访问请求由客户端发送至服务端,服务端发出请求,收到响应数据后再发回客户端。
因此使用 shadowsocks 需要一台墙外的服务器来部署 shadowsocks 服务端。

购买vps 服务器

网上有好多提供商

  • linode
  • digital ocean
  • bandwagon
  • vultr

登录VPS

Mac OS X 或 Linux 下直接在终端中 ssh root@your_vps_ip -p your_ssh_port 即可。
在 windows 系统下需要专门的客户端来 SSH 登录 VPS。在 xShell 官网 下载 xShell。
家庭和学校用户可以免费试用,下载时选择 home and school use 即可。需要用邮箱注册一下,下载链接会发送到邮箱中。
xShell 中新建一个连接,会要求输入目标 IP 地址和端口,以及 root 密码,按提示操作即可。

linux操作(centos7)

先看下你后面要用的端口有没有被占用或者打开

查看监听(Listen)的端口

netstat -lntp

centos7 该命令无法查看需要运行

yum install net-tools

端口操作

firewall-cmd --zone=public --add-port=8383/tcp --permanent  打开8383端口

firewall-cmd --zone=public --remove-port=8383/tcp --permanent 关闭8383端口

firewall-cmd --zone=public --list-ports  查看所有打开的端口

firewall-cmd --reload 更新防火墙规则

firewall-cmd --completely-reload  更新防火墙规则,重启服务

命令含义:

–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效(无该参数,重启会失效)

安装 shadowsocks

打开 shell,使用 VPS 服务商提供的 root 用户和密码 SSH 登录 VPS。然后执行如下命令:

Debian/Ubuntu:

apt-get install python-pip
pip install shadowsocks 

CentOS:

yum install python-setuptools && easy_install pip
pip install --upgrade pip
pip install shadowsocks 
sudo pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U

shadowsocks 就安装好了。
有时 Ubuntu 会遇到第一个命令安装 python-pip 时找不到包的情况。pip 官方给出了一个安装脚本,可以自动安装 pip。先下载脚本,然后执行即可:

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py 

编写配置文件

shadowsocks 启动时的参数,如服务器端口,代理端口,登录密码等,可以通过启动时的命令行参数来设定,也可以通过 json 格式的配置文件设定。推荐使用配置文件,方便查看和修改。

用 vi 新建一个配置文件:

vi /etc/shadowsocks.json 

Inert
然后输入如下内容:

{ 
   "server":"my_server_ip", 
   "server_port":8383, 
   "local_address": "127.0.0.1", 
   "local_port":1080, 
   "password":"mypassword",
    "timeout":300, 
   "method":"aes-256-cfb", 
   "fast_open": false
 } 

保存退出。Esc :wq

配置文件中个字段的含义:

  • server: 服务器ip地址
  • server_port: 绑定的端口,注意不要设置已经使用了的端口
  • possword: 密码
  • timeout: 超时时间
  • method: 加密方法
  • fast_open: 如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟
  • workers: 默认为1

如果需要配置多个SS账号,可以按照如下案例进行配置:

{
    "server":"your_server_ip",
    "port_password":{
         "8381":"password1",
         "8382":"password2",
         "8383":"password3",
         "8384":"password4"
         },
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open":true,
    "workers":1
}

启动 shadowsocks

如果已经写好了配置文件,启动 shadowsocks 服务器的命令如下:

ssserver -c /etc/shadowsocks.json 

后台启动和停止 shadowsocks 服务器:

ssserver -c /etc/shadowsocks.json -d start 
ssserver -c /etc/shadowsocks.json -d stop 

shadowsocks 的日志保存在 /var/log/shadowsocks.log

设置Shadowsocks开机自启动

执行下面的命令,创建shadowsocks.service文件:

vi /etc/systemd/system/shadowsocks.service

shadowsocks.service的内容如下:

[Unit]
Description=Shadowsocks
After=network.target

[Service]
Type=forking
PIDFile=/run/shadowsocks/server.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /run/shadowsocks
ExecStartPre=/bin/chown root:root /run/shadowsocks
ExecStart=/usr/bin/ssserver --pid-file /var/run/shadowsocks/server.pid -c /etc/shadowsocks.json -d start
Restart=on-abort
User=root
Group=root
UMask=0027

[Install]
WantedBy=multi-user.target

设置文件权限:

chmod 755 /etc/systemd/system/shadowsocks.service

启动服务:

systemctl start shadowsocks
systemctl enable shadowsocks

安装并启动 shadowsocks 客户端

shadowsocks 支持 windows、Mac OS X、Linux、Android、iOS 等多个平台。不过 iOS 由于系统对应用后台运行的限制,推荐使用客户端内嵌的浏览器科学上网,给其他应用代理时需要每过几分钟重新启动一下 app。

shadowsocks 项目 Github 主页在这里

里面可以找到客户端下载地址。

下载安装客户端以后,只需按服务器的配置填写 IP 地址、服务器端口、本地端口(如果没有本地端口选项,就是默认的 1080)、密码、加密方式等参数,启动就可以了。

客户端支持全局代理和 PAC 代理两种方式,后者会使用一个脚本来自动检查一个网站是否在需要代理的网站列表中,自动选择直接连接或代理连接。

PAC 列表可以在线更新,但是难免有收录不全的情况。这时可以选择关闭 shadowsocks 代理(实际上是取消对系统代理的配置,shadowsocks 客户端仍然保持工作),然后使用支持自定义规则的代理管理插件来实现自动切换代理,比如 switchyOmega

使用 switchyOmega 实现自动切换代理

switchyOmega 是 chrome 浏览器上一个很好用的代理管理插件。它的前身 switchySharp 更有名。

chrome 应用商店本身需要翻墙才能访问,因此需要先在 shadowsocks 启动代理模式下下载安装,再关闭 shadowsocks 代理。

安装完毕后,右击 switchyOmega 图标,选择选项,进入 switchOmega 配置界面。

创建 shadowsocks 情景模式

新建一个情景模式,比如叫 SS,代理协议选择 socks5,代理地址为 127.0.0.1,端口 1080。
现在切换到 SS 情景模式就可以通过 shadowsocks 科学上网了。后面获取自动切换规则列表

网址协议 代理协议 代理服务器 代理端口
默认 SOCKS5 127.0.0.1 7070

设置自动切换模式

在设置界面选择自动切换模式,在 “切换规则” 中勾选“规则列表规则”,对应的情景模式选择刚刚新建的 SS。

然后在下面的规则列表地址中填写

https://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt

规则列表格式选择 AutoProxy。

然后点击立即更新情景模式, 更新完成后会有提示。

点击左侧的 “应用选项”。然后单击 switchyOmega 图标,选择自动切换,就可以在访问“不存在的网站” 时自动切换到 shadowsocks 代理了。

添加自定义规则

如果遇到某个国外网站无法直接连接或速度太慢时,可以单击 switchyOmega 图标,选择 “添加条件”,情景模式选择 SS,就可以了。

这时打开 switchyOmega 选项,在自动切换模式的切换规则中就可以看到刚刚添加的规则。可以在这里管理自定义的规则

导入和导出 switchyOmega 设置

如果换了一台电脑,重新设置一遍 switchyOmega 就太麻烦了。可以在设置好的 switchyOmega 中导出设置文件,在另一个 chrome 浏览器中导入,就可以直接复制原来的设置了。

在 switchyOmega 选项的左侧点击 “导入 / 导出”,点击“生成备份文件” 即可生成 switchyOmega 设置备份。点击 “从备份文件恢复” 可以导入备份文件。

软件下载地址

链接: https://pan.baidu.com/s/1bx21wlf76zOoZiWtZTRaeQ 提取码: puvx 复制这段内容后打开百度网盘手机App,操作更方便哦


如果客户端使用python的话,使用下面命令启动shadowsocks

sslocal -c c:\shadowsocks.json  客户端

配置BBR加速

TCP BBR是谷歌出品的TCP拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。

Google提交到Linux主线并发表在ACM queue期刊上的TCP-BBR拥塞控制算法。继承了Google“先在生产环境上部署,再开源和发论文”的研究传统。TCP-BBR已经再YouTube服务器和Google跨数据中心的内部广域网(B4)上部署。由此可见出该算法的前途。

TCP-BBR的目标就是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想最大化利用这条水管,最好的办法就是给这跟水管灌满水。

BBR解决了两个问题:

  • 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。
  • 降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。

Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。

对于TCP单边加速,并非所有人都很熟悉,不过有另外一个大名鼎鼎的商业软件“锐速”,相信很多人都清楚。特别是对于使用国外服务器或者VPS的人来说,效果更佳。

BBR项目地址:

https://github.com/google/bbr

下面方法不支持 OpenVZ 架构

配置步骤

使用root用户登录,运行以下命令:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本,显示为最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
或者为:
net.ipv4.tcp_available_congestion_control = reno cubic bbr

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

参考链接

http://blog.chinaunix.net/uid-25530360-id-5595974.html

https://blog.csdn.net/qq_34996727/article/details/81065961

https://teddysun.com/489.html

推荐文章