自建海外代理节点:稳定翻墙与加速访问第1的终极指南
本文是一篇全面的指南,旨在帮助用户自建海外代理节点,实现稳定的翻墙功能和提升国际网站访问速度。内容涵盖服务器选…
虚拟私人网络(Virtual Private Network),简称VPN,微观概念常用于企业或团队的私人网络通信;宏观意义为大众网民突破GFW限制的方法。
Table of Contents
1. 代理节点资源准备
1.1 相关资源需要
- 海外VPS : CentOS / Ubuntu
- 域名 : SpaceShip¥50购入10年域名(6位数字xyz后缀)
- Cloud Flare(自用解析平台),免费15年SSL证书
理论上而言,证书并非不可或缺之物。伪装HTTP流量极易被防火墙识破其真实意图,进而致使IP地址被封锁。利用Cloud Flare所签发的证书对流量进行加密处理,可有效避开此类干扰,确保通信的安全与顺畅。
1.2 选择合适的技术模式
参考下面技术协议的优缺点
特征 | VLESS+Reality+TLS | VLESS+WS+TLS | VMESS+WS+TLS |
抗干扰能力 | 非常强(免 SNI) | 中等(WS 可被识别) | 一般(VMess 被收录) |
伪装效果 | 极强 | 较强 | 一般 |
传输性能 | 极强(纯TCP) | 一般(多层封装) | 一般 |
客户端兼容 | Shadow Rocket不支持 | 所有主流客户端 | 所有主流客户端 |
本文介绍的是三种形式的封装
1.3 选择合适的服务端
服务端 | sing-box | v2ray |
优势 | 隐蔽性强 资源占用低 | 教程多 兼容性好 易上手 |
缺点 | 图形客户端兼容差 资料少 | 作者失踪 项目停滞 占用高 |
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.confnet.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 = bbrlsmod | 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加速

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,返回正确的信息说明配置成功!