V2Ray 之科学爱国

为了更好响应科学爱国理性上网的倡导和号召,有关人士一直在孜孜不倦上下求索。GoAgent 已是过去式,Shadowsocks 还是进行时但如今也积重难返蹒跚难行,所以找到了一个新的 V2Ray

零、V2Ray 主要特性

  • 多入口多出口: 一个 V2Ray 进程可并发支持多个入站和出站协议,每个协议可独立工作。
  • 可定制化路由: 入站流量可按配置由不同的出口发出。轻松实现按区域或按域名分流,以达到最优的网络性能。
  • 多协议支持: V2Ray 可同时开启多个协议支持,包括 Socks、HTTP、Shadowsocks、VMess 等。每个协议可单独设置传输载体,比如 TCP、mKCP、WebSocket 等。
  • 隐蔽性: V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰。
  • 反向代理: 通用的反向代理支持,可实现内网穿透功能。
  • 多平台支持: 原生支持所有常见平台,如 Windows、Mac OS、Linux,并已有第三方支持移动平台。

说新其实也不新了,这东东也面世有四年了。以前 GoAgent 还是免费时代,经常红字绿字;现在 Shadowsocks 是包年的小飞机,也经常失去响应。至于 V2Ray,我想也许是该自己跑服务器了。开始之前需要两个前提:有自己的境外云、有自己的域名。

关于云这里,知名的有 DigitalOcean 和 Vultr,价格没问题,最低每月五美刀,但因为资源被开发过度,IP 被封锁的情况非常严峻。试用了后者,刚新建的服务器,连远程根本都连不了。忐忑之下尝试使用了阿里云。

本次使用了香港的 ECS,系统为 CentOS、方案为网上成熟的 V2Ray+WebSocket+TLS+Ngxin,因为本身具备加密和伪装的特性,防火墙看起来就像是普通的上网行为,能最大限度保护自己的服务器被墙。推荐!

一、V2Ray(WebSocket)配置

安装 V2Ray

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

修改默认配置文件 /etc/v2ray/config.json,可自行修改端口和 UUID

{
  "inbounds": [
    {
      "port": YOUR_PORT,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "YOUR_UUID",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/YOUR_PATH"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

二、TLS 证书配置

配置域名证书,以 v.xiaomac.com 为例。

yum -y install certbot
certbot certonly --standalone -d v.xiaomac.com

得到证书

/etc/letsencrypt/live/v.xiaomac.com/fullchain.pem
/etc/letsencrypt/live/v.xiaomac.com/privkey.pem

三、Nginx 配置

server {
     listen 443 ssl http2;
     root /var/www/html;
     server_name v.xiaomac.com;
 
     ssl_certificate     /etc/letsencrypt/live/v.xiaomac.com/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/v.xiaomac.com/privkey.pem;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 
     resolver 8.8.4.4 8.8.8.8 valid=300s;
     resolver_timeout 10s;
 
     location /YOUR_PATH {
          proxy_pass                    http://127.0.0.1:YOUR_PORT;
          proxy_redirect                off;
          proxy_http_version            1.1;
          proxy_set_header Upgrade      $http_upgrade;
          proxy_set_header Connection   "upgrade";
          proxy_set_header Host         $http_host;
     }
}

最后还要注意关闭防火墙和开启相关安全组的端口等,并修改相关服务为开机启动等。

systemctl stop firewalld.service
systemctl enable v2ray
systemctl enable nginx
systemctl start v2ray
systemctl start nginx

四、V2Ray 客户端

V2rayU for Mac

v2rayN for Windows

还可以省略掉 Nginx 的反向代理的部分,用最简单而不安全的 HTTP 直连方式。

五、BBR 加速

BBR 是谷歌的一个网络传输拥塞算法,据说开了能明显提升体验。BBR 算法需要 Linux 4.9 及以上的内核支持,所以想要使用该方式的需要先升级内核版本然后再开启 BBR

#确认内核版本
uname -r

#安装EPRL源
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

#安装最新内核版本
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

#查看系统现有内核
rpm -qa | grep kernel

kernel-tools-libs-3.10.0-1062.1.1.el7.x86_64
kernel-3.10.0-957.12.2.el7.x86_64
kernel-devel-3.10.0-957.21.2.el7.x86_64
kernel-devel-3.10.0-957.27.2.el7.x86_64
kernel-devel-3.10.0-1062.1.1.el7.x86_64
kernel-headers-3.10.0-1062.1.1.el7.x86_64
kernel-devel-3.10.0-957.21.3.el7.x86_64
kernel-ml-5.3.6-1.el7.elrepo.x86_64
kernel-tools-3.10.0-1062.1.1.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-957.21.2.el7.x86_64
kernel-3.10.0-957.21.3.el7.x86_64
kernel-3.10.0-957.27.2.el7.x86_64
kernel-3.10.0-1062.1.1.el7.x86_64
kernel-devel-3.10.0-957.12.2.el7.x86_64
kernel-3.10.0-957.5.1.el7.x86_64

#设置系统内核启动项
sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
sudo grub2-set-default 0

#重启服务器...
sudo reboot

#确认最新内核版本
uname -r
> 5.3.6-1.el7.elrepo.x86_64
#安装脚本开启 BBR
sudo wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

#确认开启效果
sudo sysctl net.ipv4.tcp_available_congestion_control
> net.ipv4.tcp_available_congestion_control = reno cubic bbr
sudo sysctl -n net.ipv4.tcp_congestion_control
> bbr
lsmod | grep bbr
> tcp_bbr                20480  15

六、使用 CloudFlare 加速隐藏服务器真实 IP

老牌 CloudFlare 提供域名加速及解析服务,个人可以使用免费版本。将域名添加到后台,然后修改原域名解析的 DNS 为 CloudFlare 的 DNS,然后设置解析,状态为 Proxied 即为保护生效。

#阿里云域名DNS
dns9.hichina.com
dns10.hichina.com

#修改为
darl.ns.cloudflare.com
desi.ns.cloudflare.com

据个人测试,效果确实不错。如果是美国的服务器推荐使用。但香港的话,还是有点绕有点卡。

七、写在最后

  • 推荐使用加密和伪装的方案,安全第一,维稳第一。你不会希望今天弄好明天就被封。
  • 不推荐使用网上的 V2Ray 一键安装脚本,用过但不好用;其实自行安装也超简单的。
  • 不推荐安装任何杀毒软件,推荐使用 Chrome 浏览器,推荐使用代理插件 SwitchySharp。

——打个小赏 感谢支持——

1 自动识别支付宝/微信/QQ支付