VPN 搭建完整教程:从零开始配置你自己的科学上网服务器
为什么要自建 VPN
买现成的机场服务存在几个现实问题:跑路风险高、共享IP容易被封、隐私无法保证、Google Ads 和 Meta 等平台检测到多人共用IP会触发风控。自建的好处是独立IP、完全可控、长期成本更低。
目前主流的自建方案并不是传统意义上的 VPN(比如 OpenVPN、IPSec),而是基于代理协议的工具,抗封锁能力远超传统 VPN。下面按实际效果排列,讲清楚每种方案的搭建过程。
方案选型对比
| 方案 | 协议 | 抗封锁能力 | 搭建难度 | 适合场景 |
|---|---|---|---|---|
| VMESS + WS + TLS + CDN | V2Ray 系 | ⭐⭐⭐⭐⭐ | 中等 | 跨境电商、长期稳定使用 |
| VLESS + Reality | Xray 系 | ⭐⭐⭐⭐⭐ | 中高 | 技术用户、极致伪装 |
| Trojan | TLS 伪装 | ⭐⭐⭐⭐ | 中等 | 通用场景 |
| Shadowsocks-2022 | AEAD 2022 | ⭐⭐⭐ | 低 | 轻度使用、临时需求 |
| WireGuard | 内核级 VPN | ⭐⭐ | 低 | 海外服务器之间互联 |
| OpenVPN | 传统 VPN | ⭐ | 低 | 不推荐用于翻墙 |
推荐选择 VMESS + WebSocket + TLS + CDN 方案,原因:流量经过 Cloudflare CDN 中转,服务器IP不暴露,即使被探测也只看到正常 HTTPS 流量,封IP几率极低。
准备工作
1. 购买境外 VPS
选一台境外服务器,推荐这几家:
| 厂商 | 最低价格 | 推荐线路 |
|---|---|---|
| BandwagonHost(搬瓦工) | $49.99/年 | CN2 GIA 线路,延迟低 |
| Vultr | $6/月 | 日本/新加坡/洛杉矶 |
| DigitalOcean | $4/月 | 新加坡节点 |
| Racknerd | $10.98/年 | 性价比高,黑五促销常有 |
购买时操作系统选 Ubuntu 22.04 或 Debian 12。
拿到服务器后记下:
- 服务器IP地址
- SSH端口(默认22)
- root密码或SSH密钥
2. 注册域名
去 Namesilo、Cloudflare Registrar 或 Namecheap 买一个便宜域名,.com/.xyz/.top 都行,一年几块到几十块钱。
3. 注册 Cloudflare 账号
去 cloudflare.com 注册免费账号,后面要用它做 DNS 解析和 CDN 中转。
4. 本地准备 SSH 工具
- Windows:下载 MobaXterm 或用 Windows Terminal 自带的 ssh 命令
- macOS/Linux:直接打开终端
方案一:VMESS + WebSocket + TLS + CDN(推荐)
这是目前跨境电商从业者用得最多的方案,稳定性最好。
步骤 1:域名接入 Cloudflare
登录 Cloudflare,点 “Add a site”,输入你的域名,选 Free 计划。
Cloudflare 会给你两个 NS 服务器地址,比如:
anna.ns.cloudflare.com
bob.ns.cloudflare.com
去你域名注册商的后台,把 Nameserver 改成 Cloudflare 给的这两个。等待生效,通常几分钟到几小时。
步骤 2:添加 DNS 记录
在 Cloudflare 的 DNS 管理页面,添加一条 A 记录:
- Type: A
- Name: vps(这样你的子域名就是 vps.yourdomain.com)
- IPv4 address: 你的服务器IP
- Proxy status: 先设为 DNS only(灰色云朵),等配置完再开橙色云朵
步骤 3:SSH 连接到服务器
ssh root@你的服务器IP
输入密码登录。
步骤 4:更新系统并安装基础工具
apt update && apt upgrade -y
apt install -y curl wget unzip socat cron
步骤 5:安装 acme.sh 并申请 TLS 证书
curl https://get.acme.sh | sh
source ~/.bashrc
用 Cloudflare API 申请证书(推荐,不用开放80端口):
登录 Cloudflare,进入 “My Profile” → “API Tokens” → “Create Token”,选 “Edit zone DNS” 模板,生成 Token。
export CF_Token="你的CloudflareAPIToken"
export CF_Zone_ID="你的域名ZoneID"
Zone ID 在 Cloudflare 域名概览页面右下角可以找到。
申请证书:
~/.acme.sh/acme.sh --issue --dns dns_cf -d vps.yourdomain.com --keylength ec-256
安装证书到指定目录:
mkdir -p /etc/ssl/xray
~/.acme.sh/acme.sh --install-cert -d vps.yourdomain.com --ecc \
--fullchain-file /etc/ssl/xray/fullchain.pem \
--key-file /etc/ssl/xray/privkey.pem \
--reloadcmd "systemctl restart xray"
步骤 6:安装 Xray-core
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
安装完成后 Xray 二进制文件在 /usr/local/bin/xray,配置文件在 /usr/local/etc/xray/config.json。
步骤 7:生成 UUID
xray uuid
输出类似 a1b2c3d4-e5f6-7890-abcd-ef1234567890,记下来。
步骤 8:编写 Xray 配置文件
cat > /usr/local/etc/xray/config.json << 'EOF'
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 443,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "你的UUID写在这里",
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/yourpath"
},
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/ssl/xray/fullchain.pem",
"keyFile": "/etc/ssl/xray/privkey.pem"
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
EOF
把 你的UUID写在这里 替换成步骤7生成的 UUID,/yourpath 改成一个随机路径比如 /a8f3b2e1。
步骤 9:启动 Xray
systemctl enable xray
systemctl start xray
systemctl status xray
看到 active (running) 就说明启动成功。
步骤 10:配置防火墙
# 如果用 ufw
ufw allow 443/tcp
ufw allow 22/tcp
ufw enable
# 如果用 iptables
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
步骤 11:开启 Cloudflare CDN 代理
回到 Cloudflare DNS 管理页面,把刚才那条 A 记录的代理状态从灰色云朵改成 橙色云朵(Proxied)。
然后到 SSL/TLS 设置页面,加密模式选 Full (Strict)。
到 Network 设置页面,确认 WebSocket 是开启状态。
步骤 12:客户端连接
Windows:V2rayN
下载 V2rayN,添加服务器,填写:
- 地址(address):
vps.yourdomain.com - 端口(port):
443 - 用户ID(UUID): 你生成的 UUID
- 额外ID(alterId):
0 - 加密方式:
auto - 传输协议:
ws - 伪装域名(Host):
vps.yourdomain.com - 路径(Path):
/yourpath(跟服务端一致) - 传输层安全:
tls
macOS:V2rayU 或 ClashX Pro
配置参数跟上面一样。
iOS:Shadowrocket(小火箭)
App Store 美区下载,售价 $2.99。添加节点类型选 VMess,参数同上。
Android:V2rayNG
Google Play 或 GitHub 下载,扫码或手动输入参数。
步骤 13:验证连接
客户端连上后,浏览器访问 https://ipinfo.io,如果显示的IP不是你的服务器IP而是 Cloudflare 的IP段,说明 CDN 中转生效了。访问 Google 正常就表示配置成功。
方案二:VLESS + Reality(进阶)
Reality 是 Xray 项目推出的新协议,不需要域名和证书,伪装成访问别人的网站,抗主动探测能力极强。
步骤 1:安装 Xray-core
跟方案一的步骤6一样。
步骤 2:生成密钥对和 shortId
xray x25519
输出 Private key 和 Public key,都记下来。
再生成一个 shortId:
openssl rand -hex 8
步骤 3:编写配置
cat > /usr/local/etc/xray/config.json << 'EOF'
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "你的UUID",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.microsoft.com:443",
"serverNames": [
"www.microsoft.com"
],
"privateKey": "你的PrivateKey",
"shortIds": [
"你的shortId"
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
EOF
dest 和 serverNames 填一个正常的大型网站,比如 www.microsoft.com、www.apple.com、gateway.icloud.com 等,要求目标网站支持 TLS 1.3 和 H2。
步骤 4:启动并在客户端配置
启动方法同方案一。客户端用 V2rayN 5.x+ 或 NekoBox,协议选 VLESS,传输层安全选 Reality,填入 Public key(注意客户端填的是公钥)、shortId、SNI(serverName)。
方案三:Trojan
Trojan 把代理流量伪装成正常的 HTTPS 访问,特点是配置简单。
快速安装
bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"
编辑 /usr/local/etc/trojan/config.json,填入密码和证书路径。证书申请方法跟方案一的步骤5相同。
客户端用 Clash、Shadowrocket 等,协议选 Trojan,填服务器地址、端口443、密码即可。
方案四:WireGuard(传统 VPN 中最佳)
如果确实需要全局 VPN(不是代理模式),WireGuard 是目前性能最好的选择,但要注意它的流量特征明显,在强审查环境下容易被识别。
安装
apt install -y wireguard
生成密钥
cd /etc/wireguard
wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client_private.key | wg pubkey > client_public.key
服务端配置
cat > /etc/wireguard/w