|

自建海外代理节点:稳定翻墙与加速访问第1的终极指南

本文是一篇全面的指南,旨在帮助用户自建海外代理节点,实现稳定的翻墙功能和提升国际网站访问速度。内容涵盖服务器选…

虚拟私人网络(Virtual Private Network),简称VPN,微观概念常用于企业或团队的私人网络通信;宏观意义为大众网民突破GFW限制的方法。

1. 代理节点资源准备

1.1 相关资源需要

  • 海外VPS : CentOS / Ubuntu
  • 域名 : SpaceShip¥50购入10年域名(6位数字xyz后缀)
  • Cloud Flare(自用解析平台),免费15年SSL证书

理论上而言,证书并非不可或缺之物。伪装HTTP流量极易被防火墙识破其真实意图,进而致使IP地址被封锁。利用Cloud Flare所签发的证书对流量进行加密处理,可有效避开此类干扰,确保通信的安全与顺畅。

1.2 选择合适的技术模式

参考下面技术协议的优缺点

特征VLESS+Reality+TLSVLESS+WS+TLSVMESS+WS+TLS
抗干扰能力非常强(免 SNI)中等(WS 可被识别)一般(VMess 被收录)
伪装效果极强较强一般
传输性能极强(纯TCP)一般(多层封装)一般
客户端兼容Shadow Rocket不支持所有主流客户端所有主流客户端

本文介绍的是三种形式的封装

1.3 选择合适的服务端

服务端sing-boxv2ray
优势隐蔽性强 资源占用低教程多 兼容性好 易上手
缺点图形客户端兼容差 资料少作者失踪 项目停滞 占用高

2. 环境预设

VMess协议认证依赖于时间,所以要保证客户端与服务端之间时差不能太大

2.1 校准VPS时间

在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,修改时间通过修改系统时间实现,为保持系统时间与CMOS时间的一致性,Linux每隔一段时间(大约是11分钟)会将系统时间写入CMOS

## 查看当前时区
date -R
​
## 修改时区
## 方法一
tzselect
Asia
China
Beijing
Yes
​
## 方法二
timedatectl list-timezones | grep Shanghai
timedatectl set-timezone Asia/Shanghai
date -R
​
## 将时间写入CMOS
clock -w

2.2 开启BBR

vim /etc/sysctl.conf

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

sysctl -p

2.3 验证 BBR 是否生效

sysctl net.ipv4.tcp_congestion_control

##正确输出
net.ipv4.tcp_congestion_control = bbr

lsmod | grep bbr

##正确输出
tcp_bbr

2.4 开启BBR:报错处理

sysctl: setting key “net.ipv4.tcp_congestion_control”: No such file or directory

--安装BBRPlus

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

--安装步骤
先安装BBRPlus内核
再使用BBRPlus加速
自建海外代理节点:稳定翻墙与加速访问第1的终极指南

3. 代理节点服务

3.1 代理节点技术:Sing-Box+VLESS+WS+TLS

3.2 代理节点技术:Sing-Box+VLESS+WS+TLS

3.3 代理节点技术:V2ray+VMESS+WS+TLS

3.3.1 下载服务端

curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
bash install-release.sh --version v4.34.0

3.3.2 修改配置

vim /usr/local/etc/v2ray/config.json

{
  "stats": {},
  "api": {
      "services": [
          "StatsService"
      ],
      "tag": "api"
  },
  "routing": {
      "strategy": "rules",
      "settings": {
          "rules": [
              {
                  "inboundTag": [
                      "api"
                  ],
                  "type": "field",
                  "outboundTag": "api"
              }
          ]
      }
  },
  "inbounds": [
      {
          "streamSettings": {
              "wsSettings": {
                  "path": "/ray" --虚拟路径,后续nginx和客户端配置需保持一致
              },
              "network": "ws", --网络协议
              "tcpSettings": {
                  "header": {
                      "type": "http",
                      "response": {
                          "status": "200",
                          "headers": {
                              "Transfer-Encoding": [
                                  "chunked"
                              ],
                              "Connection": [
                                  "keep-alive"
                              ],
                              "Content-Type": [
                                  "application/octet-stream",
                                  "application/x-msdownload",
                                  "text/html",
                                  "application/x-shockwave-flash"
                              ],
                              "Pragma": "no-cache"
                          },
                          "reason": "OK",
                          "version": "1.1"
                      }
                  }
              }
          },
          "protocol": "vmess", --服务器类型
          "port": 21001, --端口自定义
          "listen":"127.0.0.1",
          "settings": {
              "clients": [
                  {
                      "alterId": 64, --默认推荐64,连接密码
                      "level": 0,
                      "email": "1000",
                      "id": "eca32fc9-6688-8888-6666-1830996ae393" --替换uuid,连接账户
                  }
              ]
          }
      },
      {
          "tag": "api",
          "settings": {
              "address": "127.0.0.1"
          },
          "protocol": "dokodemo-door",
          "port": 5001,
          "listen": "127.0.0.1"
      }
  ],
  "policy": {
      "levels": {
          "0": {
              "statsUserUplink": true,
              "statsUserDownlink": true
          }
      },
      "system": {
          "statsInboundDownlink": true,
          "statsInboundUplink": true
      }
  },
  "outbounds": [
      {
          "protocol": "freedom",
          "settings": {}
      },
      {
          "tag": "blocked",
          "protocol": "blackhole",
          "settings": {}
      }
  ]
}

3.3.3 Nginx反代

安装nginx:LNMP部署

server{
      listen 443 ssl;
      server_name your_domain;

      ssl_certificate     /your_path/nginx/cert/public.pem;
      ssl_certificate_key /your_path/nginx/cert/private.key;

      #access_log /var/log/nginx/host.access.log main;

      ssl_session_cache   shared:SSL:1m;
      ssl_session_timeout 5m;
      ssl_ciphers         HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers on;

      location /ray {
              proxy_redirect off;
              proxy_intercept_errors on;
              error_page 400 = your_domain;
              proxy_pass http://127.0.0.1:21001; #假设WebSocket监听端口为21001
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header Host $http_host;
              # 向后端传递访客ip
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}

3.3.4 配置订阅

3.3.4.1 V2rayN – json格式

VMess通过BASE64编码进行传输

准备连接信息如下,在官网进行转码

  • v — 配置版本
  • ps — 自定义配置名称
  • net — 网络协议
  • id — 同v2ray服务配置
  • aid — 同上
  • path — 同上
{"v": "2","ps": "vpnV2","add": "your_doamin", "port": "443","id": "eca32fc9-6688-8888-6666-1830996ae393","aid": "64","net": "ws","type": "none","path": "/ray","tls": "tls"}

修改上述json串后,在Base64进行编码

编码后解码验证数据一致

创建文件 v2ray ,添加 vmess:// 与base64 编码拼接

vmess://eyJ2IjogIjIiLCJwcyI6ICJ2cG5WMiIsImFkZCI6ICJ5b3VyX2RvYW1pbiIsICJwb3J0IjogIjQ0MyIsImlkIjogImVjYTMyZmM5LTY2ODgtODg4OC02NjY2LTE4MzA5OTZhZTM5MyIsImFpZCI6ICI2NCIsIm5ldCI6ICJ3cyIsInR5cGUiOiAibm9uZSIsInBhdGgiOiAiL3JheSIsInRscyI6ICJ0bHMifQ==

ps:json尽量不要存在换行符,可能导致订阅错误

3.3.4.2 Clash – yaml 格式

clash 通过 yaml 文件获取配置

准备连接信息

创建文件 clash ,保存下面内容

  • server — 指定自己的域名
  • uuid — 同v2ray服务配置
  • alterId — 同上
  • path — 同上
proxies:
  - name: "YAML"
    type: vmess
    server: your_domain
    port: 443
    uuid: eca32fc9-6688-8888-6666-1830996ae393
    alterId: 64
    cipher: auto
    tls: true
    skip-cert-verify: false
    network: ws
    ws-opts:
      path: "/ray"
proxy-groups:
  - name: "自动选择"
    type: url-test
    proxies: ["YAML"]
    url: "http://www.gstatic.com/generate_204"
    interval: 300
rules:
  - DOMAIN-SUFFIX,google.com, 自动选择
  - GEOIP,CN,DIRECT
  - MATCH,自动选择

3.3.4.3 统一订阅文件

mkdir -p /your_path/nginx/proxy
mv v2ray clash /your_path/nginx/proxy

3.3.4.4 完善nginx配置

server 模块中添加以下内容

alias — 访问location时,指向alias中的文件

default_type text/plain — 查看不下载

location /config1 {
      alias /your_path/nginx/proxy/v2ray;
      default_type text/plain;
}
location /config2 {
      alias /www/nginx/proxy/clash;
      default_type text/plain;
}

3.3.4.5 测试

访问域名下的config1 | config2,返回正确的信息说明配置成功!

类似文章