本地部署 OpenVPN 教程

avatar 2025年12月18日18:23:19 评论 3 次浏览

1. 环境准备

  • 操作系统:推荐使用 Ubuntu 22.04 / Debian 12

  • 权限:需要 root 或 sudo 权限

  • 网络:确保服务器有公网 IP,并且 UDP 1194 端口可访问(OpenVPN 默认端口)


2. 安装 OpenVPN

 sudo apt update
 sudo apt install -y openvpn easy-rsa
  • openvpn:VPN 服务端和客户端工具

  • easy-rsa:用于生成证书和密钥


3. 配置证书和密钥

  1. 初始化 PKI 目录:

 make-cadir ~/openvpn-ca
 cd ~/openvpn-ca
  1. 编辑 vars 文件(可选修改默认参数,如国家、组织等):

 nano vars

示例修改:

 set_var EASYRSA_REQ_COUNTRY    "CN"
 set_var EASYRSA_REQ_PROVINCE   "Beijing"
 set_var EASYRSA_REQ_CITY       "Beijing"
 set_var EASYRSA_REQ_ORG        "MyVPN"
 set_var EASYRSA_REQ_EMAIL      "admin@example.com"
 set_var EASYRSA_REQ_OU         "MyVPN-Unit"
  1. 初始化 PKI 并生成 CA:

 ./easyrsa init-pki
 ./easyrsa build-ca nopass

nopass 表示 CA 不设置密码(方便自动化,如果安全要求高,可以不加)

  1. 生成服务器证书和密钥:

 ./easyrsa gen-req server nopass
 ./easyrsa sign-req server server
  1. 生成 Diffie-Hellman 参数:

 ./easyrsa gen-dh
  1. 生成 HMAC 认证密钥(加强安全):

 openvpn --genkey --secret ta.key

4. 配置 OpenVPN 服务器

  1. 创建服务端配置文件:

 sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
 sudo gzip -d /etc/openvpn/server.conf.gz
  1. 编辑 /etc/openvpn/server.conf,修改关键参数:

 port 1194
 proto udp
 dev tun
 
 ca ca.crt
 cert server.crt
 key server.key
 dh dh.pem
 tls-auth ta.key 0
 cipher AES-256-CBC
 auth SHA256
 
 server 10.8.0.0 255.255.255.0
 ifconfig-pool-persist ipp.txt
 push "redirect-gateway def1 bypass-dhcp"
 push "dhcp-option DNS 8.8.8.8"
 keepalive 10 120
 persist-key
 persist-tun
 status openvpn-status.log
 log-append /var/log/openvpn.log
 verb 3
  1. 将生成的证书和密钥复制到 /etc/openvpn/

 sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
 sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
 sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
 sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/
 sudo cp ~/openvpn-ca/ta.key /etc/openvpn/

5. 启动 OpenVPN 服务

 sudo systemctl enable openvpn@server
 sudo systemctl start openvpn@server
 sudo systemctl status openvpn@server

确认没有报错,即服务器启动成功。


6. 创建 VPN 用户客户端

  1. 生成客户端证书:

 cd ~/openvpn-ca
 ./easyrsa gen-req client1 nopass
 ./easyrsa sign-req client client1
  1. 生成客户端配置文件模板(例如 client.ovpn):

 client
 dev tun
 proto udp
 remote <服务器公网IP> 1194
 resolv-retry infinite
 nobind
 persist-key
 persist-tun
 remote-cert-tls server
 cipher AES-256-CBC
 auth SHA256
 key-direction 1
 verb 3
 
 <ca>
 # 将 ca.crt 内容复制到这里
 </ca>
 
 <cert>
 # 将 client1.crt 内容复制到这里
 </cert>
 
 <key>
 # 将 client1.key 内容复制到这里
 </key>
 
 <tls-auth>
 # 将 ta.key 内容复制到这里
 </tls-auth>

可以为每个客户端生成单独配置,便于管理。


7. 客户端使用

  • 下载 OpenVPN 客户端:

    • Windows / macOS:官网下载 GUI 版本

    • Linux:sudo apt install openvpn

  • client.ovpn 文件导入客户端,连接即可。

  • Linux 命令行连接示例:

 sudo openvpn --config client.ovpn

8. 常用管理命令

  • 查看在线客户端:

 cat /etc/openvpn/openvpn-status.log
  • 禁用客户端(删除对应证书或 CRL):

 ./easyrsa revoke client1
 ./easyrsa gen-crl
 sudo cp ~/openvpn-ca/pki/crl.pem /etc/openvpn/
  • 重启 OpenVPN 服务:

 sudo systemctl restart openvpn@server

9. 测试 VPN

  1. 客户端连接成功后,执行:

 ping 10.8.0.1
  1. 验证公网 IP 已被 VPN 转发:

 curl ifconfig.me

✅ 至此,一个基础的本地 OpenVPN 已经部署完成,并且支持多用户管理和客户端连接。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: