搭建VPN服务端可以实现远程安全访问内网资源,以下是常见VPN协议及搭建方法:
主流VPN协议对比
| 协议类型 | 速度 | 安全性 | 穿透能力 | 适用场景 |
|---|---|---|---|---|
| OpenVPN | 中等 | 极高(SSL/TLS) | 需TCP 443端口 | 企业级安全访问 |
| WireGuard | 极快 | 现代加密 | UDP穿透强 | 移动设备/低延迟需求 |
| IPSec/L2TP | 中等 | 强(IPSec加密) | 需多端口 | 兼容旧设备 |
| PPTP | 快 | 弱(已淘汰) | 易被屏蔽 | 不推荐使用 |
OpenVPN服务端搭建示例(Ubuntu)
# 2. 初始化PKI(证书颁发机构)
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
source vars
./clean-all
./build-ca # 生成CA证书
./build-key-server server # 服务器证书
./build-dh # Diffie-Hellman参数
openvpn --genkey --secret keys/ta.key # TLS-auth密钥
# 3. 配置服务器
sudo cp ~/openvpn-ca/keys/{ca.crt,server.crt,server.key,dh2048.pem,ta.key} /etc/openvpn/
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
sudo nano /etc/openvpn/server.conf # 修改配置:
'''
proto udp
port 1194
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
'''
# 4. 启用IP转发
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 5. 启动服务
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
WireGuard服务端配置(更简易方案)
# 1. 安装WireGuard sudo apt install -y wireguard resolvconf # 2. 生成密钥对 wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey # 3. 创建配置文件 sudo nano /etc/wireguard/wg0.conf ''' [Interface] PrivateKey = <服务器私钥> Address = 10.7.0.1/24 ListenPort = 51820 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # 客户端配置 PublicKey = <客户端公钥> AllowedIPs = 10.7.0.2/32 ''' # 4. 启用服务 sudo systemctl enable --now wg-quick@wg0
安全增强措施
-
防火墙规则:
sudo ufw allow 1194/udp # OpenVPN sudo ufw allow 51820/udp # WireGuard sudo ufw enable
-
客户端管理:
- OpenVPN需为每个客户端生成证书:
cd ~/openvpn-ca source vars ./build-key client1
- WireGuard通过添加多个[Peer]段管理客户端
- OpenVPN需为每个客户端生成证书:
-
日志监控:
sudo tail -f /var/log/syslog | grep openvpn sudo wg show # 查看WireGuard连接状态
客户端连接方式
-
OpenVPN:
- 需传输:ca.crt + client.crt + client.key + ta.key
- 客户端配置文件示例:
client dev tun proto udp remote your.server.ip 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key tls-auth ta.key 1 cipher AES-256-CBC verb 3
-
WireGuard:
-
客户端配置示例:
[Interface] PrivateKey = <客户端私钥> Address = 10.7.0.2/24 DNS = 8.8.8.8 [Peer] PublicKey = <服务器公钥> Endpoint = your.server.ip:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
-
注意事项:
- 生产环境建议禁用密码认证,仅使用证书
- 定期轮换证书(OpenVPN)或更新密钥(WireGuard)
- 云服务器需在安全组放行对应端口
- 考虑使用OCSP Stapling(OpenVPN)或更短密钥轮换周期(WireGuard)提升安全性
根据需求选择协议:企业级安全选OpenVPN,追求性能选WireGuard,移动端两者均有官方客户端应用支持。












