本文记录了使用 DMIT VPS + Xray Reality 协议搭建科学上网服务的完整过程,包含VPS选型、系统配置、安全加固等所有细节。适合有一定Linux基础的朋友参考。
📚 目录
前言
为什么选择自建?
相比机场服务,自建科学上网有以下优势:
- 🔒 隐私安全:数据完全掌握在自己手中
- ⚡ 速度稳定:独享带宽,不受他人影响
- 💰 性价比高:年付$88即可,长期使用划算
- 🛡️ 抗封锁强:使用Reality协议,抗审查能力极强
技术栈选择
| 组件 | 选择 | 理由 |
|---|---|---|
| VPS | DMIT LAX.Pro | CN2 GIA线路,母机不超售 |
| 系统 | Debian 13 (Trixie) | 当前稳定版,安全支持至2028年,LTS支持至2030年 |
| 协议 | Xray Reality | 2023年问世的顶尖抗审查技术,持续迭代至今 |
| 防护 | fail2ban + UFW | 多层安全防护 |
⚠️ 关于操作系统版本:Debian 13 (Trixie) 已于2025年8月正式发布,是目前的当前稳定版。Debian 12 (Bookworm) 的官方安全支持将于2026年6月10日终止,之后进入社区维护的LTS阶段。新建服务器请直接选择 Debian 13。如果你的VPS供应商尚未提供 Debian 13 镜像,Debian 12 仍可使用但建议尽早升级。
一、VPS选型
1.1 需求分析
首先明确自己的需求:
- 使用场景:日常浏览、视频、学习
- 流量需求:个人使用约500GB/月
- 预算:年付100美元以内
- 地理位置:美国西海岸(延迟低)
1.2 线路科普
CN2 GIA 线路优势:
- ✅ 电信、联通、移动三网优化
- ✅ 延迟低(150-200ms)
- ✅ 丢包率低(<1%)
- ✅ 晚高峰稳定
1.3 商家对比
经过调研,整理了几家主流CN2 GIA商家(价格和配置以购买时官网实时信息为准,商家可能随时调整):
| 商家 | 套餐/年付价格 | 配置 | 带宽 | 推荐指数 |
|---|---|---|---|---|
| DMIT | LAX.Pro.TINY $88.88/年(75折) | 1核2G/20G SSD/1000GB | 1Gbps | ⭐⭐⭐⭐⭐ |
| 搬瓦工 | CN2 GIA-E $49.99/季($169.99/年) | 2核1G/20G/1TB | 2.5Gbps | ⭐⭐⭐⭐ |
| HostDare | CSSD0 $35.99/年起 | 1核768M/10G NVMe/250GB | 30Mbps | ⭐⭐⭐ |
说明:
- 搬瓦工 $49.99/年的是 KVM 常规方案(非CN2 GIA线路),CN2 GIA-E 最低为 $49.99/季、$169.99/年
- HostDare CSSD0 是 CN2 GIA 系列入门款,配置较低但价格也最便宜
- DMIT 产品线近期有平台迁移(AN4→AN5),套餐名可能变为 LAX.AN5.Pro.TINY
💡 最终选择:DMIT LAX.Pro.TINY套餐
- DMIT 和搬瓦工均接入中国电信 CN2 GIA 线路,品质有保障
- 母机不超售,性能稳定
- 美国原生IP,解锁流媒体
1.4 购买流程
- 访问 DMIT官网
- 在 Los Angeles → Premium Network 下选择 TINY 套餐
- 操作系统选择 Debian 13 x64(若暂无 Debian 13 镜像,可先选 Debian 12 后续升级)
- 重要:勾选"SSH Key",系统会生成密钥对
- 下载私钥文件(PEM格式)
二、系统初始化
2.1 SSH配置
收到VPS信息后,配置本地SSH:
# 1. 确保本地 .ssh 目录存在
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 2. 保存私钥
chmod 600 ~/Downloads/your-key.pem
mv ~/Downloads/your-key.pem ~/.ssh/vps-key.pem
# 3. 配置SSH快捷登录
cat >> ~/.ssh/config << 'EOF'
Host myvps
HostName YOUR_VPS_IP
User root
IdentityFile ~/.ssh/vps-key.pem
ServerAliveInterval 60
EOF
# 4. 首次连接
ssh myvps
2.2 系统更新
# 更新软件包
apt update && apt upgrade -y
# 安装常用工具(含后续维护监控所需的 htop 和 vnstat)
apt install -y curl wget vim ufw socat htop vnstat
# 设置时区(可选)
timedatectl set-timezone Asia/Shanghai
2.3 启用BBR加速
BBR是Google开发的TCP拥塞控制算法,可显著提升网络性能:
# 添加BBR配置
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 应用配置
sysctl -p
# 验证BBR已启用
sysctl net.ipv4.tcp_congestion_control
# 输出应为: net.ipv4.tcp_congestion_control = bbr
📈 性能提升:启用BBR后,在弱网环境下速度可提升10-30%
2.4 防火墙配置
# 配置UFW防火墙
ufw allow 443/tcp # Xray端口
ufw allow 22/tcp # SSH端口
ufw enable
# 查看状态
ufw status verbose
三、Xray Reality部署
3.1 什么是Reality?
Reality 是Xray项目于 2023年初 推出的抗审查技术(首次出现在 Xray-core v1.8.0),经过三年多的持续迭代,目前已是最成熟可靠的抗审查方案之一:
- ✅ 完美伪装TLS流量
- ✅ 无需购买域名和证书
- ✅ 抗主动探测
- ✅ 性能优于传统方案
3.2 安装Xray-core
使用官方一键安装脚本:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
安装完成后验证:
xray version
# 输出示例: Xray 26.3.27 (Xray, Penetrates Everything.) ...
# 版本号以实际安装时最新版为准
3.3 生成密钥
Reality协议需要三组密钥信息:
1) 生成UUID
xray uuid
# 输出示例: a1b2c3d4-e5f6-7890-abcd-ef1234567890
2) 生成x25519密钥对
xray x25519
输出格式说明(重要):
Xray 不同版本的输出格式有所不同:
旧版(v25.3.6 之前):
Private key: xxxxxxxxxxxxxxxxxx
Public key: yyyyyyyyyyyyyyyyyy
新版(v25.3.6+):
PrivateKey: xxxxxxxxxxxxxxxxxx
Password: yyyyyyyyyyyyyyyyyy
Hash32: zzzzzzzzzzzzzzzzzz
⚠️ 注意:新版输出中的
Password就是公钥(Public Key),无需额外手动计算!记录下PrivateKey(服务端配置用)和Password(即公钥,填入客户端配置)即可。
3) 生成Short ID
openssl rand -hex 8
# 输出示例: a1b2c3d4e5f67890
3.4 选择伪装目标网站(dest)
Reality 协议需要指定一个伪装目标网站。选择标准:
- 支持 TLS 1.3 和 H2
- 与你的 VPS 同 ASN 或同网段的网站为最佳
- 网站在国内可以正常访问
推荐做法:使用 RealiTLScanner 工具扫描你 VPS 所在 IP 网段的邻居,找到合适的伪装目标。
⚠️ 重要注意事项:
- RealiTLScanner 必须在本地电脑上运行,不要在 VPS 上运行——官方明确警告在云端运行扫描器可能导致 VPS 被标记
- 需使用 CIDR 格式扫描邻居网段,而非单个 IP(单个 IP 会进入 infinity mode,只扫描该 IP 本身,无法发现邻居)
假设你的 VPS IP 是 154.17.6.123,操作方法如下:
# ===== 以下命令在本地电脑上运行,不是在VPS上! =====
# 下载 RealiTLScanner(请到 GitHub Releases 下载对应平台的最新版)
# https://github.com/XTLS/RealiTLScanner/releases
# 扫描 VPS 所在的 /24 网段邻居
./RealiTLScanner -addr 154.17.6.0/24
# 如果需要更多结果,可以扫描更大范围(耗时较长,建议开多线程)
./RealiTLScanner -addr 154.17.0.0/16 -timeout 5 -thread 10
从输出结果中选择 feasible=true 且证书颁发者为知名 CA(如 DigiCert、Let’s Encrypt 等)的域名作为你的 dest 目标。
⚠️ 不推荐使用
www.apple.com或www.icloud.com:Xray-core v26.3.27 起已对使用 apple/icloud 域名作为 dest 发出官方警告。这些热门域名使用的人太多,容易成为审查重点目标。建议用 RealiTLScanner 扫描到的同网段邻居网站。
以下配置中以 your.target.com 为示例,请替换为你实际扫描到的域名。
3.5 配置文件
创建Xray配置文件:
cat > /usr/local/etc/xray/config.json << 'EOF'
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "YOUR_UUID_HERE",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "your.target.com:443",
"serverNames": ["your.target.com"],
"privateKey": "YOUR_PRIVATE_KEY_HERE",
"shortIds": ["YOUR_SHORT_ID_HERE"]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"],
"routeOnly": true
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
}
]
}
EOF
配置说明:
| 参数 | 说明 |
|---|---|
port: 443 |
使用HTTPS端口,不易被封 |
dest |
伪装目标网站,建议用 RealiTLScanner 在本地扫描到的同网段邻居 |
flow: xtls-rprx-vision |
Reality专用流控,仅在 TCP + TLS/Reality 组合下可用 |
privateKey |
第3.3步生成的 PrivateKey(服务端用) |
shortIds |
第3.3步生成的 Short ID |
sniffing |
流量嗅探,用于识别目标域名以配合路由规则,routeOnly 表示仅用于路由判断不覆盖目标地址 |
3.6 启动服务
# 测试配置
xray run -test -c /usr/local/etc/xray/config.json
# 启动服务
systemctl enable xray
systemctl start xray
# 查看状态
systemctl status xray
四、客户端配置
4.1 iOS – Shadowrocket
配置参数:
类型: VLESS
地址: YOUR_VPS_IP
端口: 443
UUID: [你的UUID]
传输方式: tcp
流控: xtls-rprx-vision
TLS设置:
- 开启TLS
- SNI: your.target.com
Reality设置:
- Public Key: [x25519输出中的Password,即公钥]
- Short ID: [你的Short ID]
- Fingerprint: chrome
💡 关于 ALPN:Reality 协议通过 uTLS Fingerprint 自动协商 ALPN,客户端的 ALPN 字段留空即可,无需手动设置。
4.2 Windows – v2rayN
- 下载 v2rayN
- 添加服务器,选择"VLESS"
- 填入上述相同参数
- 测试连接
4.3 Android – v2rayNG
配置方法与v2rayN类似,在Google Play或GitHub下载。
4.4 验证连接
连接成功后测试:
# 访问Google
curl -I https://www.google.com
# 查看出口IP
curl ip.sb
五、安全加固
5.1 创建普通用户
不建议长期使用root账户:
# 创建新用户
adduser myuser
# 安装sudo
apt install sudo -y
# 添加sudo权限(Debian默认使用sudo组)
usermod -aG sudo myuser
5.2 配置SSH密钥
# 切换到新用户
su - myuser
# 创建.ssh目录
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 复制root的密钥
sudo cp /root/.ssh/authorized_keys ~/.ssh/
sudo chown myuser:myuser ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
本地SSH配置:
cat >> ~/.ssh/config << 'EOF'
Host myvps-user
HostName YOUR_VPS_IP
User myuser
IdentityFile ~/.ssh/vps-key.pem
ServerAliveInterval 60
EOF
5.3 锁死SSH登录方式
⚠️ 此步骤极为重要! 在执行以下操作前,请务必先用新用户
myuser通过密钥成功登录一次 VPS,确认无误后再继续。否则可能把自己锁在门外。
# 先用新用户测试登录(在本地新开一个终端)
ssh myvps-user
# 确认成功后,在VPS上执行以下操作:
# 禁止root直接SSH登录
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
# 禁止密码登录(强制使用密钥)
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
# 重启SSH服务使配置生效
sudo systemctl restart sshd
🔒 为什么必须做这一步? 仅靠 fail2ban 只能减缓暴力破解,无法根本阻止。关闭密码登录 + 禁止root直连 SSH,才能从根本上杜绝暴力破解风险。
5.4 部署fail2ban
fail2ban可自动封禁暴力破解SSH的IP,作为额外的防护层:
# 安装必要软件包
# python3-systemd 是必须的,否则 fail2ban 使用 systemd backend 会报错
sudo apt install -y fail2ban python3-systemd
配置fail2ban:
# 注意:sudo cat > 无法正确写入受保护文件(shell重定向在sudo提权前执行)
# 使用 sudo tee 才是正确写法
sudo tee /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
backend = systemd
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 3
bantime = 3600
EOF
启动fail2ban:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 查看状态
sudo fail2ban-client status sshd
六、性能优化
6.1 系统参数优化
# 注意:sudo cat >> 无法正确追加写入受保护文件
# 使用 sudo tee -a(-a 等价于 >>,表示追加)
sudo tee -a /etc/sysctl.conf << 'EOF'
# 网络性能优化
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_mtu_probing = 1
# 提高连接队列
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 2048
EOF
sudo sysctl -p
6.2 客户端优化
Shadowrocket设置:
- 算法选择:自动
- 路由:绕过大陆IP
- DNS:1.1.1.1
浏览器扩展:
- SwitchyOmega(自动切换代理)
七、维护监控
7.1 日常检查命令
# 查看Xray状态
sudo systemctl status xray
# 查看Xray日志
sudo journalctl -u xray -f
# 查看fail2ban统计
sudo fail2ban-client status sshd
# 查看系统资源
htop
# 查看流量使用
vnstat
7.2 定期维护
每月任务:
- ✅ 系统更新:
sudo apt update && sudo apt upgrade -y - ✅ 查看登录日志:
last -n 50 - ✅ 检查封禁IP:
sudo fail2ban-client status sshd - ✅ 流量统计(注意避免超出套餐月流量限制)
配置备份:
# 备份重要配置
mkdir -p ~/backup
sudo cp /usr/local/etc/xray/config.json ~/backup/
sudo cp /etc/fail2ban/jail.local ~/backup/
sudo cp /etc/ssh/sshd_config ~/backup/
tar -czf backup-$(date +%Y%m%d).tar.gz ~/backup/
7.3 故障排查
Xray无法连接:
# 1. 检查服务
sudo systemctl status xray
# 2. 查看日志
sudo journalctl -u xray -n 50
# 3. 测试配置
sudo xray run -test -c /usr/local/etc/xray/config.json
# 4. 检查端口
ss -tlnp | grep 443
SSH无法登录:
# 检查是否被fail2ban封禁
sudo fail2ban-client status sshd
# 解封IP(如果误封)
sudo fail2ban-client unban YOUR_IP
总结
🎯 部署成果
经过以上步骤,我们成功搭建了:
- ✅ 高性能科学上网服务(CN2 GIA线路)
- ✅ Reality协议(成熟可靠的抗审查方案)
- ✅ 多层安全防护(SSH密钥 + 禁止密码登录 + 禁止root直连 + fail2ban + 防火墙)
- ✅ 系统性能优化(BBR加速)
- ✅ 完善的监控体系
📊 性能评测
| 指标 | 评分 | 说明 |
|---|---|---|
| 速度 | ⭐⭐⭐⭐⭐ | 1Gbps带宽,BBR加速 |
| 稳定性 | ⭐⭐⭐⭐⭐ | 母机不超售,CN2 GIA |
| 延迟 | ⭐⭐⭐⭐⭐ | 洛杉矶机房,150-200ms |
| 安全性 | ⭐⭐⭐⭐⭐ | Reality协议 + 多层防护 |
| 抗封锁 | ⭐⭐⭐⭐⭐ | 流量完美伪装 |
💰 成本分析
VPS年费: $88.88(DMIT LAX.Pro.TINY 75折年付)
域名: $0(Reality不需要域名)
客户端: $2.99(Shadowrocket一次性购买)
-------------------------
总计: ~$92/年 ≈ ¥660/年 ≈ ¥55/月
(汇率按约1美元≈7.17人民币估算,实际以购买时为准)
对比机场:
- 机场月费通常 ¥30-50
- 年费 ¥360-600
- 性价比相当,但自建更安全稳定
🔮 进阶玩法
- XHTTP传输:Xray新一代传输方式,可通过CDN中转,进一步增强抗封锁能力
- WireGuard备用:配置VPN作为Plan B
- 流媒体解锁:Netflix、Disney+等
- TUN模式:Xray-core v26+ 新增TUN入站,可实现透明代理
⚠️ 注意事项
- 合法合规:仅用于学习、工作等正当用途
- 流量控制:注意套餐月流量限额,避免超限
- 定期更新:保持系统和Xray最新版本
- 密钥安全:妥善保管所有密钥和配置
- 伪装目标:不要使用 apple.com/icloud.com 等热门域名,用 RealiTLScanner 在本地电脑上以 CIDR 格式(如
/24)扫描 VPS 同网段邻居
📚 参考资源
📝 更新日志
- 2026-04-25:全文修订更新(第四版——最终版)
- 操作系统升级为 Debian 13 (Trixie):Debian 12 安全支持将于2026年6月终止,新建服务器应使用当前稳定版 Debian 13
- 修复
sudo cat >权限Bug:将 5.4 节和 6.1 节中的sudo cat >/sudo cat >>全部替换为sudo tee/sudo tee -a,修复普通用户下执行会 Permission Denied 的问题 - 修正 x25519 输出标签:新版输出字段名为
Password(即公钥),而非Password (PublicKey) - 修正 DMIT 与搬瓦工关系表述:改为"均接入CN2 GIA线路",避免无充分依据的"上游供应商"说法
- 修正Reality协议年份描述(2023年问世,非"2024最新")
- 修正x25519密钥生成说明(新版直接输出公钥,无需手动Python计算)
- 修正VPS商家对比表中搬瓦工、HostDare的配置和价格错误
- 更新:不推荐使用apple.com作为伪装目标(官方已发出警告)
- 新增RealiTLScanner工具推荐及正确使用方式(本地运行 + CIDR格式)
- 新增SSH安全加固:
PermitRootLogin no+PasswordAuthentication no - 新增sniffing配置段:与官方示例配置对齐
- 修复工具依赖:初始化阶段预装
htop、vnstat;fail2ban 安装补充python3-systemd - 移除冗余rsyslog:Debian 使用
backend = systemd无需 rsyslog - 客户端ALPN说明:Reality协议下ALPN留空即可
- 补充本地
mkdir -p ~/.ssh确保目录存在 - 将
netstat命令替换为更现代的ss命令 - 新增进阶玩法:XHTTP传输、TUN模式
- 2025-12-25:首次发布
如果这篇文章对你有帮助,欢迎点赞收藏! 👍
有任何问题欢迎在评论区讨论! 💬
免责声明:本文仅供技术学习交流使用,请遵守当地法律法规。
标签:#科学上网 #Xray #Reality #VPS #DMIT #CN2GIA #Debian13 #2026更新
下面是几款主流的一键安装脚本及其推荐理由(点击链接可跳转到脚本仓库),一句话说明适合人群或特色:
- 233boy Xray 脚本 – 多协议(包括 VMESS、VLESS‑Reality、Shadowsocks 等)支持,提供一键添加/删除用户和自动 TLS 功能,适合想要快速部署并灵活管理代理的朋友。
仓库地址:https://github.com/233boy/Xray/ - mack‑a v2ray‑agent 脚本 – 使用 ASCII 连字符的地址为 mack-a,支持 sing‑box/Xray 双内核及 VLESS、VMess、Trojan、Hysteria2、Tuic 等多种协议,并集成流量分流和黑名单功能 ,适合需要深度自定义的用户。
仓库地址:https://github.com/mack-a/v2ray-agent - 3X‑UI 面板脚本 – 提供图形化界面,支持 VMESS、VLESS、Trojan、Shadowsocks、HTTP、WireGuard 等协议,并能一键申请和续期 TLS 证书 ,新手也能轻松上手。
仓库地址:https://github.com/mhsanaei/3x-ui/ - AnyTLS-Go 一键脚本 – 原仓库 mingmenmama/anytls 已失效,可替换为镜像仓库;该脚本支持智能端口检测、多系统兼容和 Let’s Encrypt 证书配置 ,适合想尝试 AnyTLS 混淆协议的用户。
替代仓库:https://github.com/bruce019/anytls - fscarmen sing-box 全家桶脚本 – 地址应使用 ASCII 连字符 sing-box,可同时部署 ShadowTLS v3、XTLS Reality、Hysteria2、Tuic v5、ShadowSocks、Trojan、VMess + ws、VLESS + ws + TLS、H2 Reality、gRPC Reality 与 AnyTLS 等协议,并输出适配各客户端的订阅链接,适合追求多协议组合和便捷管理的朋友。
仓库地址:https://github.com/fscarmen/sing-box
如果你追求更简单的包管理而只需要 Shadowsocks,可以考虑 Teddysun 的二进制包仓库,通过系统包管理器安装即可,不过它并非完整的一键脚本。