在阿里云轻量服务器(新加坡节点)上部署 OpenVPN 的完整过程如下,涵盖了证书生成、服务端配置、NAT 转发以及客户端连接。

最终因为没有买的VPN价格便宜,所以放弃了。

初始化 PKI 与生成证书

使用 Easy-RSA 工具生成 CA、服务端和客户端证书。

make-cadir ~/openvpn-ca        # 创建 CA 工作目录
cd ~/openvpn-ca                # 进入目录
./easyrsa init-pki             # 初始化 PKI 结构
./easyrsa build-ca             # 生成 CA 根证书和私钥
./easyrsa gen-req server nopass # 生成服务端证书请求
./easyrsa sign-req server server # 签发服务端证书
./easyrsa gen-dh               # 生成 Diffie-Hellman 参数
./easyrsa gen-req client1 nopass # 生成客户端证书请求
./easyrsa sign-req client client1 # 签发客户端证书

生成的文件位置:

  • CA 根证书 → pki/ca.crt
  • 服务端证书 → pki/issued/server.crt
  • 服务端私钥 → pki/private/server.key
  • 客户端证书 → pki/issued/client1.crt
  • 客户端私钥 → pki/private/client1.key
  • Diffie-Hellman 参数 → pki/dh.pem

配置 OpenVPN 服务端

创建配置文件

在 /etc/openvpn/server.conf 中写入:

port 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem

server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 10 120
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
data-ciphers-fallback AES-256-CBC
topology subnet
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3

常见问题与解决

  • 证书路径错误:需将证书复制到 /etc/openvpn/,并在配置中引用。
  • 权限问题:私钥文件需设置为 600 权限。
  • 启动失败:使用 openvpn --config /etc/openvpn/server.conf 查看详细报错。

配置 NAT 与路由

开启 IP 转发

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p   # 立即生效

添加 NAT 规则

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

注意:eth0 替换为服务器实际公网网卡名,可用 ip addr 查看。

保存规则:

apt install iptables-persistent
netfilter-persistent save

配置 OpenVPN 客户端

客户端所需文件

  • ca.crt
  • client1.crt
  • client1.key

客户端配置示例 (client1.ovpn)

client
dev tun
proto udp
remote <服务器公网IP> 1194

resolv-retry infinite
nobind
persist-key
persist-tun

remote-cert-tls server
auth SHA256
verb 3

redirect-gateway def1
ca ca.crt
cert client1.crt
key client1.key

也可以将证书直接嵌入 .ovpn 文件,方便分发。

使用到的工具与命令解释

  • make-cadir:创建 Easy-RSA CA 工作目录。
  • cd:进入指定目录。
  • ./easyrsa init-pki:初始化 PKI 目录结构。
  • ./easyrsa build-ca:生成 CA 根证书和私钥。
  • ./easyrsa gen-req:生成证书请求文件。
  • ./easyrsa sign-req:签发证书。
  • ./easyrsa gen-dh:生成 Diffie-Hellman 参数。
  • openvpn –config:手动运行 OpenVPN,验证配置。
  • systemctl start/enable openvpn@server:启动并设置开机自启。
  • journalctl -u openvpn@server -f:查看 OpenVPN 服务日志。
  • iptables:配置 NAT 转发规则。
  • sysctl -p:加载内核参数配置。
  • apt install iptables-persistent:安装持久化保存 iptables 规则的工具。
  • netfilter-persistent save:保存当前防火墙规则。

总结

整个过程包括:

  1. 使用 Easy-RSA 初始化 PKI 并生成证书。
  2. 在 /etc/openvpn/server.conf 配置服务端。
  3. 开启 IP 转发并配置 NAT。
  4. 在客户端导入 .ovpn 文件并连接。