自建VPN服务器完全指南 | 从零开始的科学上网搭建教程

自建VPN服务器完全指南 | 从零开始的科学上网搭建教程

一、前言/概述

1.1 为什么要自建VPN服务器

在众多科学上网方案中,自建VPN服务器具有独特的优势。相比于使用商业VPN服务或共享节点,自建服务器能够提供更高的隐私保护和更好的性能体验。

graph TD
    A[VPN方案选择] --> B[商业VPN服务]
    A --> C[共享节点]
    A --> D[自建服务器]
    B --> B1[优点:配置简单]
    B --> B2[缺点:隐私风险/速度受限]
    C --> C1[优点:成本低]
    C --> C2[缺点:不稳定/安全隐患]
    D --> D1[优点:完全控制/隐私保护]
    D --> D2[缺点:需要技术能力]

1.2 自建VPN的优势

优势详细说明
完全控制对服务器拥有完全的管理权限,可随时调整配置
隐私保护无需担心服务商记录日志或泄露隐私
性能保障独享服务器带宽,速度稳定可预期
成本可控可根据需求选择不同价位的VPS
学习提升在搭建过程中学习网络和服务器知识

1.3 注意事项

⚠️ 重要提示

  1. 请确保遵守当地法律法规
  2. 不用于任何非法活动
  3. 注意服务器IP可能被封锁的风险
  4. 建议准备备用服务器

二、准备工作

2.1 VPS选择建议

选择合适的VPS是搭建VPN服务器的第一步。以下是主流VPS服务商的对比:

主流VPS服务商对比

服务商优势劣势价格区间推荐指数
Vultr按小时计费、全球节点、IP更换方便部分IP被墙$2.5-20/月⭐⭐⭐⭐⭐
DigitalOcean稳定可靠、文档丰富价格稍高、IP更换困难$4-24/月⭐⭐⭐⭐
BandwagonHost价格便宜、CN2线路配置较低$49.99/年起⭐⭐⭐⭐
Linode性能稳定、客服响应快价格偏高$5-20/月⭐⭐⭐⭐
AWS Lightsail大厂出品、稳定可靠需要信用卡验证$3.5-80/月⭐⭐⭐

VPS选择建议

graph LR
    A[VPS选择] --> B{主要需求}
    B -->|追求性价比| C[BandwagonHost]
    B -->|追求稳定| D[DigitalOcean]
    B -->|追求灵活| E[Vultr]
    B -->|企业级需求| F[AWS Lightsail]

推荐配置

用途CPU内存存储带宽
个人使用1核512MB-1GB10-20GB1TB/月
小团队(3-5人)1核1-2GB20-40GB2TB/月
中团队(5-10人)2核2-4GB40-60GB4TB/月

2.2 系统要求

推荐使用以下Linux发行版:

发行版版本推荐理由
Ubuntu20.04 LTS / 22.04 LTS社区支持好、教程丰富
Debian11 / 12稳定性高、资源占用低
CentOSStream 9企业级稳定、安全更新及时

💡 建议:推荐使用 Ubuntu 22.04 LTS,本教程以该系统为例进行讲解。

2.3 必要工具准备

SSH客户端

平台推荐工具下载地址
WindowsPuTTY / Windows TerminalPuTTY官网
macOSTerminal (内置) / iTerm2iTerm2官网
LinuxTerminal (内置)-

其他工具

  • 文本编辑器:VS Code、Sublime Text(用于编辑配置文件)
  • FTP客户端:FileZilla、WinSCP(用于文件传输)
  • DNS解析工具:了解基本DNS配置

三、服务器基础配置

3.1 SSH连接服务器

获取服务器信息

购买VPS后,服务商会提供以下信息:

1
2
3
4
服务器IP: 192.0.2.100
SSH端口: 22
用户名: root
密码: YourPassword123

连接服务器

Windows (使用PowerShell/CMD):

1
ssh root@192.0.2.100

macOS/Linux:

1
ssh root@192.0.2.100

首次连接会提示确认服务器指纹,输入 yes 并回车,然后输入密码。

3.2 系统更新与基础安全配置

更新系统

连接服务器后,首先更新系统:

1
2
3
4
5
# Ubuntu/Debian
apt update && apt upgrade -y

# CentOS
yum update -y

创建普通用户(可选但推荐)

1
2
3
4
5
6
7
8
# 创建新用户
adduser vpnadmin

# 添加sudo权限
usermod -aG sudo vpnadmin

# 切换到新用户
su - vpnadmin

配置SSH密钥登录(推荐)

在本地电脑生成SSH密钥:

1
2
3
4
5
# 生成ED25519密钥(推荐)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 或者生成RSA密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

将公钥上传到服务器:

1
2
# 本地执行
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.0.2.100

修改SSH配置

1
2
# 编辑SSH配置文件
nano /etc/ssh/sshd_config

修改以下配置项:

1
2
3
4
5
6
7
8
9
10
11
# 修改默认端口(可选,建议修改)
Port 2222

# 禁用密码登录(配置密钥后启用)
PasswordAuthentication no

# 禁用root登录(如果创建了普通用户)
PermitRootLogin no

# 只允许特定用户登录
AllowUsers vpnadmin

重启SSH服务:

1
systemctl restart sshd

3.3 防火墙设置

使用UFW(Ubuntu/Debian)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 安装UFW
apt install ufw -y

# 设置默认策略
ufw default deny incoming
ufw default allow outgoing

# 允许SSH(如果修改了端口,请相应调整)
ufw allow 2222/tcp comment 'SSH'

# 允许VPN端口(根据使用的协议开放)
# WireGuard
ufw allow 51820/udp comment 'WireGuard'

# Shadowsocks
ufw allow 8388/tcp comment 'Shadowsocks'
ufw allow 8388/udp comment 'Shadowsocks-UDP'

# V2Ray
ufw allow 443/tcp comment 'V2Ray'

# 启用防火墙
ufw enable

# 查看状态
ufw status verbose

使用firewalld(CentOS)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 安装firewalld
yum install firewalld -y

# 启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld

# 开放端口
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --add-port=51820/udp
firewall-cmd --permanent --add-port=8388/tcp
firewall-cmd --permanent --add-port=443/tcp

# 重载配置
firewall-cmd --reload

# 查看已开放端口
firewall-cmd --list-ports

四、主流VPN协议搭建教程

4.1 WireGuard搭建教程

WireGuard是现代化的VPN协议,具有代码精简、性能高效、配置简单等优点,强烈推荐使用。

WireGuard架构图

graph LR
    A[客户端] <-->|加密隧道| B[WireGuard服务器]
    B <-->|解密流量| C[互联网]

安装WireGuard

Ubuntu 22.04+:

1
apt install wireguard -y

Ubuntu 20.04 / Debian:

1
2
apt update
apt install wireguard -y

CentOS:

1
2
yum install epel-release -y
yum install wireguard-tools -y

生成密钥对

1
2
3
4
5
6
7
8
9
10
11
# 创建配置目录
mkdir -p /etc/wireguard

# 生成服务器私钥和公钥
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key

# 查看私钥(稍后配置需要)
cat /etc/wireguard/server_private.key

# 查看公钥
cat /etc/wireguard/server_public.key

配置服务器

创建配置文件:

1
nano /etc/wireguard/wg0.conf

写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Interface]
# 服务器私钥
PrivateKey = YOUR_SERVER_PRIVATE_KEY
# 服务器地址
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
# DNS设置
DNS = 1.1.1.1
# 启用IP转发后的NAT配置
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 客户端配置(每个客户端需要单独添加)
[Peer]
# 客户端1
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32

[Peer]
# 客户端2
PublicKey = CLIENT2_PUBLIC_KEY
AllowedIPs = 10.0.0.3/32

启用IP转发

1
2
# 编辑系统配置
nano /etc/sysctl.conf

添加或取消注释以下行:

1
2
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

应用配置:

1
sysctl -p

启动WireGuard

1
2
3
4
5
6
7
8
9
10
11
# 设置权限
chmod 600 /etc/wireguard/wg0.conf

# 启动WireGuard
wg-quick up wg0

# 设置开机自启
systemctl enable wg-quick@wg0

# 查看运行状态
wg show

生成客户端配置

在服务器上为客户端生成密钥:

1
2
3
4
5
6
7
8
# 生成客户端密钥
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

# 查看客户端私钥(客户端配置需要)
cat client1_private.key

# 查看客户端公钥(服务器配置需要)
cat client1_public.key

创建客户端配置文件 client1.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Interface]
# 客户端私钥
PrivateKey = CLIENT1_PRIVATE_KEY
# 客户端IP地址
Address = 10.0.0.2/24
# DNS服务器
DNS = 1.1.1.1

[Peer]
# 服务器公钥
PublicKey = YOUR_SERVER_PUBLIC_KEY
# 服务器地址和端口
Endpoint = YOUR_SERVER_IP:51820
# 允许的IP范围(0.0.0.0/0表示全局代理)
AllowedIPs = 0.0.0.0/0, ::/0
# 保持连接
PersistentKeepalive = 25

⚠️ 重要:将客户端公钥添加到服务器配置的 [Peer] 部分,然后重启WireGuard:

1
wg syncconf wg0 <(wg-quick strip wg0)

4.2 V2Ray/Xray搭建教程

V2Ray/Xray功能强大,支持多种协议和传输方式,具有良好的抗检测能力。

V2Ray架构图

graph LR
    A[客户端] <-->|VMess/VLESS| B[V2Ray服务器]
    B <-->|WebSocket/gRPC| C[CDN可选]
    C <-->|解密流量| D[互联网]

一键安装脚本(推荐)

1
2
3
4
5
# 安装V2Ray
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

# 或者安装Xray(更新更强大)
bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)

手动配置V2Ray服务器

创建配置文件:

1
nano /usr/local/etc/v2ray/config.json

VMess + WebSocket + TLS 配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 443,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/vmess"
},
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/v2ray/v2ray.crt",
"keyFile": "/etc/v2ray/v2ray.key"
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}

生成UUID

1
2
3
4
# 生成新的UUID
v2ray uuid
# 或者
cat /proc/sys/kernel/random/uuid

配置TLS证书

使用Let’s Encrypt免费证书:

1
2
3
4
5
6
7
8
9
10
11
12
# 安装certbot
apt install certbot -y

# 申请证书(需要域名)
certbot certonly --standalone -d your-domain.com

# 复制证书到V2Ray目录
cp /etc/letsencrypt/live/your-domain.com/fullchain.pem /etc/v2ray/v2ray.crt
cp /etc/letsencrypt/live/your-domain.com/privkey.pem /etc/v2ray/v2ray.key

# 设置自动续期
crontab -e

添加自动续期任务:

1
0 3 * * * certbot renew --quiet && cp /etc/letsencrypt/live/your-domain.com/fullchain.pem /etc/v2ray/v2ray.crt && cp /etc/letsencrypt/live/your-domain.com/privkey.pem /etc/v2ray/v2ray.key && systemctl restart v2ray

启动V2Ray

1
2
3
4
5
6
7
8
# 启动服务
systemctl start v2ray

# 设置开机自启
systemctl enable v2ray

# 查看状态
systemctl status v2ray

VLESS + Reality 配置(Xray推荐)

VLESS + Reality 是目前最先进的抗检测方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.microsoft.com:443",
"serverNames": ["www.microsoft.com"],
"privateKey": "YOUR_REALITY_PRIVATE_KEY",
"shortIds": [""]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}

生成Reality密钥对:

1
xray x25519

4.3 Shadowsocks搭建教程

Shadowsocks是经典的代理协议,配置简单,客户端支持广泛。

Shadowsocks架构图

graph LR
    A[客户端] <-->|加密代理| B[Shadowsocks服务器]
    B <-->|解密流量| C[互联网]

安装Shadowsocks-libev

1
2
3
4
5
6
# Ubuntu/Debian
apt install shadowsocks-libev -y

# CentOS
yum install epel-release -y
yum install shadowsocks-libev -y

配置服务器

编辑配置文件:

1
nano /etc/shadowsocks-libev/config.json

写入配置:

1
2
3
4
5
6
7
8
9
10
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "YourStrongPassword123!",
"timeout": 300,
"method": "aes-256-gcm",
"fast_open": true,
"nameserver": "1.1.1.1",
"mode": "tcp_and_udp"
}

推荐加密方式

加密方式安全性性能推荐
aes-256-gcm⭐⭐⭐⭐⭐
chacha20-ietf-poly1305高(ARM)⭐⭐⭐⭐⭐
aes-128-gcm⭐⭐⭐⭐

启动Shadowsocks

1
2
3
4
5
6
7
8
# 启动服务
systemctl start shadowsocks-libev

# 设置开机自启
systemctl enable shadowsocks-libev

# 查看状态
systemctl status shadowsocks-libev

安装Shadowsocks-Rust(更高性能)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载最新版本
wget https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.15.0/shadowsocks-v1.15.0.x86_64-unknown-linux-gnu.tar.xz

# 解压
tar -xf shadowsocks-v1.15.0.x86_64-unknown-linux-gnu.tar.xz

# 移动到系统目录
mv ssserver /usr/local/bin/

# 创建配置目录
mkdir -p /etc/shadowsocks-rust

# 创建配置文件
nano /etc/shadowsocks-rust/config.json

配置文件内容:

1
2
3
4
5
6
7
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "YourStrongPassword123!",
"timeout": 300,
"method": "aes-256-gcm"
}

创建systemd服务:

1
nano /etc/systemd/system/shadowsocks-rust.service
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Shadowsocks-Rust Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

启动服务:

1
2
3
systemctl daemon-reload
systemctl start shadowsocks-rust
systemctl enable shadowsocks-rust

五、客户端配置

5.1 Windows客户端

WireGuard客户端

  1. 下载安装:WireGuard官网
  2. 导入配置文件或手动添加配置
  3. 点击"激活"连接

V2Ray客户端(推荐V2RayN)

  1. 下载:V2RayN Releases
  2. 解压运行 v2rayN.exe
  3. 添加服务器配置:
    • 扫描二维码
    • 或粘贴vmess/vless链接
  4. 设置系统代理模式

Shadowsocks客户端

  1. 下载:Shadowsocks-Windows
  2. 运行 Shadowsocks.exe
  3. 编辑服务器设置
  4. 启用系统代理

5.2 macOS客户端

WireGuard

1
2
3
4
5
# 使用Homebrew安装
brew install wireguard-tools

# 或下载GUI客户端
# https://apps.apple.com/app/wireguard/id1451685025

V2Ray客户端(推荐V2RayN)

  1. 下载:V2RayN Releases
  2. 安装并运行
  3. 添加服务器配置
  4. 选择代理模式

Clash客户端(推荐)

  1. 下载:Clash Verge Rev
  2. 配置订阅或手动添加节点
  3. 设置代理规则

5.3 Android客户端

WireGuard

  1. Google Play下载:WireGuard
  2. 扫描二维码或导入配置文件
  3. 点击开关连接

V2Ray客户端(推荐v2rayNG)

  1. 下载:v2rayNG
  2. 添加服务器配置
  3. 选择路由模式
  4. 启动VPN

Shadowsocks客户端

  1. 下载:shadowsocks-android
  2. 配置服务器信息
  3. 启动VPN

5.4 iOS客户端

WireGuard

App Store下载:WireGuard

Shadowrocket(推荐)

App Store购买下载(需要外区账号)

支持协议:

  • Shadowsocks
  • VMess
  • VLESS
  • Trojan
  • Hysteria等

Quantumult X

功能强大的网络调试工具,支持多种代理协议。


六、优化与维护

6.1 性能优化建议

内核参数优化

编辑 /etc/sysctl.conf

1
nano /etc/sysctl.conf

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 网络优化
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_slow_start_after_idle = 0

# BBR拥塞控制
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

应用配置:

1
sysctl -p

启用BBR加速

1
2
3
4
5
6
7
8
9
10
11
# 检查是否支持BBR
modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf

# 启用BBR
echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
sysctl -p

# 验证
sysctl net.ipv4.tcp_congestion_control

DNS优化

1
2
3
4
5
# 安装DNS缓存服务
apt install dnsmasq -y

# 配置上游DNS
nano /etc/dnsmasq.conf

添加:

1
2
3
4
server=1.1.1.1
server=8.8.8.8
server=208.67.222.222
cache-size=10000

6.2 定期维护事项

维护检查清单

graph TD
    A[定期维护] --> B[每日]
    A --> C[每周]
    A --> D[每月]
    B --> B1[检查服务状态]
    C --> C1[检查日志]
    C --> C2[检查磁盘空间]
    D --> D1[系统更新]
    D --> D2[证书续期]
    D --> D3[备份配置]

创建维护脚本

1
nano /root/vpn_maintenance.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash

# VPN维护脚本

echo "=== VPN服务器维护检查 ==="
echo "时间: $(date)"
echo ""

# 检查服务状态
echo "1. 服务状态检查:"
systemctl status wg-quick@wg0 --no-pager
systemctl status v2ray --no-pager

# 检查磁盘空间
echo -e "\n2. 磁盘空间:"
df -h

# 检查内存使用
echo -e "\n3. 内存使用:"
free -h

# 检查网络连接
echo -e "\n4. 活动连接:"
ss -tunlp | grep -E '51820|443|8388'

# 检查系统负载
echo -e "\n5. 系统负载:"
uptime

echo -e "\n=== 检查完成 ==="
1
chmod +x /root/vpn_maintenance.sh

设置定时任务

1
crontab -e
1
2
3
4
5
6
7
8
# 每周检查更新
0 3 * * 0 apt update && apt upgrade -y

# 每天重启服务(可选)
0 4 * * * systemctl restart wg-quick@wg0

# 每周备份配置
0 2 * * 0 tar -czf /root/vpn_backup_$(date +\%Y\%m\%d).tar.gz /etc/wireguard /usr/local/etc/v2ray /etc/shadowsocks-libev

6.3 故障排查指南

常见问题诊断流程

graph TD
    A[无法连接] --> B{能否ping通服务器?}
    B -->|否| C[检查网络/防火墙]
    B -->|是| D{服务是否运行?}
    D -->|否| E[启动服务]
    D -->|是| F{端口是否开放?}
    F -->|否| G[检查防火墙规则]
    F -->|是| H{配置是否正确?}
    H -->|否| I[检查配置文件]
    H -->|是| J[查看日志排查]

检查服务状态

1
2
3
4
5
6
7
8
9
10
11
# 检查WireGuard
wg show
systemctl status wg-quick@wg0

# 检查V2Ray
systemctl status v2ray
journalctl -u v2ray -f

# 检查Shadowsocks
systemctl status shadowsocks-libev
journalctl -u shadowsocks-libev -f

检查端口监听

1
2
3
4
5
6
7
# 查看所有监听端口
ss -tunlp

# 检查特定端口
ss -tunlp | grep 51820
ss -tunlp | grep 443
ss -tunlp | grep 8388

检查防火墙

1
2
3
4
5
6
7
8
# UFW状态
ufw status verbose

# 查看iptables规则
iptables -L -n -v

# 测试端口是否开放(从本地执行)
nc -zv YOUR_SERVER_IP 51820

查看日志

1
2
3
4
5
6
7
8
9
10
11
# 系统日志
journalctl -xe

# WireGuard日志
journalctl -u wg-quick@wg0 -f

# V2Ray日志
journalctl -u v2ray -f

# 认证日志(检查登录尝试)
tail -f /var/log/auth.log

七、安全建议

7.1 安全最佳实践

服务器安全检查清单

项目状态操作
修改SSH端口编辑 /etc/ssh/sshd_config
禁用密码登录配置SSH密钥后启用
禁用root登录创建普通用户后启用
配置防火墙只开放必要端口
安装fail2ban防止暴力破解
定期更新系统apt update && apt upgrade
配置日志监控安装日志分析工具

安装fail2ban

1
2
3
4
5
6
7
8
# 安装fail2ban
apt install fail2ban -y

# 创建本地配置
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# 编辑配置
nano /etc/fail2ban/jail.local

关键配置项:

1
2
3
4
5
6
7
8
9
10
11
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh,2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

启动服务:

1
2
systemctl enable fail2ban
systemctl start fail2ban

7.2 隐私保护措施

DNS隐私

使用加密DNS保护DNS查询隐私:

1
2
3
4
5
# 安装stubby
apt install stubby -y

# 配置DoT
nano /etc/stubby/stubby.yml
1
2
3
4
5
6
7
8
9
10
11
12
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
idle_timeout: 10000
round_robin_upstreams: 1
upstream_recursive_servers:
- address_data: 1.1.1.1
tls_auth_name: "cloudflare-dns.com"
- address_data: 8.8.8.8
tls_auth_name: "dns.google"

日志管理

1
2
# 配置日志轮转
nano /etc/logrotate.d/vpn
1
2
3
4
5
6
7
8
9
/var/log/vpn/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
}

八、常见问题 FAQ

Q1: VPS的IP被封锁了怎么办?

A: 可以采取以下措施:

  1. 更换IP:部分服务商(如Vultr)支持在控制面板更换IP
  2. 更换服务器:删除旧服务器,创建新服务器
  3. 使用CDN:通过Cloudflare等CDN中转流量
  4. 使用域名:配置域名解析,IP变化后更新DNS即可

Q2: 连接速度慢怎么优化?

A: 优化建议:

  1. 选择合适的服务器位置:选择离你物理距离近的数据中心
  2. 使用BBR拥塞控制:大幅提升网络性能
  3. 优化加密方式:选择性能更好的加密算法
  4. 检查服务器带宽:确保VPS带宽充足
  5. 使用UDP协议:如WireGuard比OpenVPN更快

Q3: 如何判断VPN是否正常工作?

A: 验证方法:

1
2
3
4
5
# 检查IP地址
curl ipinfo.io

# 或者
curl ifconfig.me

如果返回的是VPS的IP地址,则VPN工作正常。

Q4: 多人使用同一个服务器安全吗?

A: 安全建议:

  1. 使用独立账号:每个用户使用不同的密钥/密码
  2. 限制并发连接:防止单用户滥用
  3. 监控流量:及时发现异常使用
  4. 定期更新:保持软件最新版本

Q5: 如何在路由器上配置VPN?

A: 步骤:

  1. 确认路由器支持VPN客户端功能(如OpenWrt、华硕梅林固件)
  2. 导入VPN配置文件
  3. 配置路由规则
  4. 测试连接

Q6: VPS选择哪个地区比较好?

A: 地区选择建议:

用途推荐地区原因
日常使用日本、新加坡、韩国延迟低、速度快
流媒体解锁美国、英国内容丰富
稳定性优先香港、台湾网络质量好
预算优先洛杉矶、圣何塞价格实惠

Q7: WireGuard和V2Ray如何选择?

A: 协议对比:

特性WireGuardV2Ray/Xray
配置复杂度简单中等
性能极高
抗检测较弱
协议特征明显隐蔽
推荐场景网络环境宽松网络审查严格

💡 建议:如果网络环境对VPN限制较少,首选WireGuard;如果需要更好的隐蔽性,选择V2Ray/Xray。

Q8: 如何备份VPN配置?

A: 备份方法:

1
2
3
4
5
6
7
8
# 创建备份
tar -czf vpn_backup_$(date +%Y%m%d).tar.gz \
/etc/wireguard \
/usr/local/etc/v2ray \
/etc/shadowsocks-libev

# 下载备份(本地执行)
scp root@YOUR_SERVER_IP:/root/vpn_backup_*.tar.gz ./

九、总结

自建VPN服务器虽然需要一定的技术能力,但带来的隐私保护和性能优势是值得的。本教程涵盖了从VPS选择到客户端配置的完整流程,希望能帮助你成功搭建自己的VPN服务。

核心要点回顾

  1. 选择可靠的VPS服务商:推荐Vultr、DigitalOcean等
  2. 做好服务器安全配置:修改SSH端口、配置防火墙、安装fail2ban
  3. 选择合适的VPN协议:WireGuard简单高效,V2Ray抗检测强
  4. 定期维护和监控:保持系统更新,检查服务状态
  5. 遵守法律法规:合法合规使用

推荐阅读


声明:本教程仅供学习交流使用,请遵守当地法律法规,不用于任何非法用途。


自建VPN服务器完全指南 | 从零开始的科学上网搭建教程
https://freenode.osbooting.com/SelfHostedVPNGuide
作者
OSBooting
发布于
2026年2月18日
许可协议