代理的作用

由于 GFW 的作用,国外很多网站被屏闭,比如 Google、Youtube 等,有时包括 Github。代理服务器一般由国外云计算商提供,因为服务器建在墙外,可以自由上网。所以就有了利用代理服务器作为中介,通过搭桥的方式让国内客户端能够与墙外的世界进行交流的方法,从而实现网络信息世界的相对自由。其中代理服务器和国内客户端进行数据交换时,一般会采取加密传输、隐藏 IP 地址的安全策略,以防止代理服务器被 GFW 发现,再次被墙。

通过代理服务器翻墙,首先你需要一个境外的虚拟服务器、一台笔记本电脑或是手机作为客户端、然后就是分别对两者进行软件配置。软件配置有单纯基于 socks5 代理的 SS(shadowsocks)和 SSR(shadowsocks-R),还有更加复杂的 VMess 协议,通过 V2RAY 进行配置。这里采取更加安全的 VMess 协议进行配置,详情见 Project V官方文档

建立代理服务器

搬瓦工、Vultr、Linode、DigitalOcean、Hostwinds 都是国内常用的虚拟服务器(VPS)提供商。大家可自行 Baidu 相关服务商的对比测评,进行参考,然后选择合适的提供商。本人图便宜目前使用 Vultr,速度确实不快,下次试试 Hostwinds。买 VPS 注册帐号之前可以先 Baidu 下看有没有优惠活动,直接注册的话享受不了优惠。如 Vultr 目前有充 10 刀送 50 刀的活动,Try Vultr for free with $50 free credit!

选机房时可以 ping 下各机房的域名,选择 ping 下来延时最短的。当然最好还是一次多建几个处于不同区域的 VPS,直接 ping 所建代理服务器的地址。实际对比各机房的网络延迟,保留延时最短的 VPS,其余的都删除。本文采取“vmess+websocket+TLS+Nginx+Website”一键安装脚本方案进行配置,其脚本不支持 Fedora 系统,安装虚拟机系统的时候须注意。建议使用 Debian 9 x64 作为服务器系统,一波流安装很快。

购买属于自己的域名

另外此方案需要绑定空闲域名到 VPS 地址,因此须提前购买。在 namecheapGoDaddy 等域名注册网站上花 1 刀左右买个自己喜欢的域名可以用一年,当然要是非要 .com 等常见后缀的话自然要贵些。其中 namecheap 不支持支付宝和微信,可以开通 PayPal 支付或者用带 visa 的信用卡。

域名到手后,在购买的注册商网站选择管理域名。如 namecheap 上自己注册的域名后点击 MANAGE,首先直接删掉预绑定的纪录,然后在 Advanced DNS 菜单中进行主机(HOST)绑定。在 HOST RECORDS 中添加新记录,Type 栏选择 A Record,Host 栏填 www 或者 @ 符号,Value 栏填入刚才购买的 VPS 的 IP 地址,TTL 刷新时间选择 20~30 min。其中 Host 栏如果是 www 时,域名开头会加上 www.,否则 Host 栏为 @ 的话,域名开头什么也没有。保存之后就完成了 DNS 绑定。

通过 V2Ray 配置代理服务器

按照“新 V2Ray 白话文指南”高级篇,WebSocket+TLS+Web 算是比较复杂的配置方式。好在有现成的一键式脚本,对于小白来说足够友好,步子大了也不会扯着蛋。脚本相对于其他一键式脚本来说很干净,减少无关元素,隐藏代理域名。

实施起来很方便,主要可分成三步。

  1. 利用 ssh 工具在本地登录 VPS 服务器,在终端直接输入以下内容:
1
ssh root@0.0.0.0  (替换成你刚安装的VPS地址)

在本地登录远程时,第一次要在本地进行已知主机登记,按照提示进行就好。登录后,就可以进行服务器配置。

  1. 通过下面的命令安装 V2RAY 和 Nginx,这里给出 Vmess+websocket+TLS+Nginx+Website 的优化版本:
1
bash <(curl -L -s https://raw.githubusercontent.com/paniy/V2Ray_ws-tls_bash_onekey/master/install.sh) | tee v2ray_ins.log

安装过程是傻瓜式的,需要人介入时有提示。这时就要求输入绑定好 VPS 地址的域名,如 www.google.com。安装完成后终端会打印出配置客户端所需要的信息。到这一步,实际上客户的主要配置已经完成。为改善上网体验,可通过 BBR 对代理服务器的数据交换进行加速优化。BBR 是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟。

  1. 通过 BBR 加速网络,同样也有一键式脚本方便部署
1
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

运行此脚本可选择安装 BBR/BBR 魔改版、BBRplus 版内核、或者 Lotserver(锐速)内核。根据开心小站长的测评,锐速的速度最快,建议安装使用此内核。开启加速需要重复运行该命令,这样就完成了服务器端的所有配置。

Linux 服务器与客户端的配置参考

通过 V2RAY 配置代理服务器的第 2 步执行完毕后,V2RAY 配置文件为 /etc/v2ray/conf.json,在同一个目录里还有个文件 vmess_qr.json 包含了配置客户端需要的所有信息。另外在目录 /etc/nginx/conf.d 中是 nginx 的相关配置。这里贴上“新 V2Ray 白话文指南”中 WebSocket+TLS+Web 方案关于服务器和客户端的相关配置,仅作为对照参考。

指南里服务器的 V2Ray 配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
  "inbounds": [
    {
      "port": 10000,
      "listen":"127.0.0.1",//只监听 127.0.0.1,避免除本机外的机器探测到开放了 10000 端口
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

Nginx 配置如下:

配置中使用的是域名和证书使用 TLS 小节的举例,请替换成自己的。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
  listen 443 ssl;
  ssl on;
  ssl_certificate       /etc/v2ray/v2ray.crt;
  ssl_certificate_key   /etc/v2ray/v2ray.key;
  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           HIGH:!aNULL:!MD5;
  server_name           mydomain.me;
    location /ray { #  V2Ray 配置中的 path 保持一致
      if ($http_upgrade != "websocket") { # WebSocket协商失败时返回404
          return 404;
      }
      proxy_redirect off;
      proxy_pass http:/127.0.0.1:10000; # 假设WebSocket监听在环回地址的10000端口上
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      # Show real IP in v2ray access.log
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Linux 客户端配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
  "inbounds": [
    {
      "port": 1080,
      "listen": "127.0.0.1",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "mydomain.me",
            "port": 443,
            "users": [
              {
                "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
                "alterId": 64
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "wsSettings": {
          "path": "ray"
        }
      }
    }
  ]
}
#

客户端安装 V2Ray 并进行配置

Windows 和 Android、iOS 用户配置简单

如果是 Windows 或者手机用户,有很方便简单的客户端软件,可以参考 V2Ray客户端配置详解

Linux 用户安装配置 V2Ray

Linux 用户若是能连上 Github,可以通过脚本或下载的方式安装 V2Ray。安装脚本如下:

1
bash <(curl -L -s https://install.direct/go.sh)

或者下载脚本: https://install.direct/go.sh 和 V2Ray 程序包: https://github.com/v2ray/v2ray-core/releases 然后通过命令安装本地程序包:

1
./go.sh --version v1.13 --local /path/to/v2ray.zip

如果 Linux 用户上不了 Github,可以通过 Snapcraft 安装V2RAY

V2RAY 在 Linux 客户端配置的详情可参考上文“新 V2Ray 白话文指南”中的相关设置。

浏览器走代理的方法

浏览器的配置可以参考“谷歌浏览器插件SwitchyOmega使用教程”。通过 Proxy SwitchyOmega 可以设置自动代理模式,满足规则进行代理,否则进行直连。如此只在需要的时候开启代理,从而加快网页打开的速度,同时减小服务器的压力。

这里只给出规则列表网址:

1
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

填入后,连接方式选择 Proxy 。

终端走代理的方法

前面是浏览器的代理配置方式,但有时也会需要终端中设置代理,可以参考让终端走代理的几种方法。直接在.bashrc 或者.zshrc 添加下面内容:

1
2
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"

或者直接设置 ALL_PROXY:

1
export ALL_PROXY="socks5://127.0.0.1:1080"

查看服务器和客户端 v2ray 是否正常运行

通过以下命令查看 v2ray 的运行状态:

1
systemctl status v2ray

查看状态是否为 Active。

再查看端口是否占用,通过下面的命令查看 v2ray 端口监听情况:

1
netstat -apn | grep v2ray

当然,安装配置流程是否正确最重要判别标准就是能否科学上网。