下面我将为您提供一份详细、分步的指南,涵盖了从准备工作到客户端连接的全过程,本指南将以目前更安全、性能更好的 OpenVPN 2.5+ (使用 cryptoapi 密钥交换) 为例,同时也会提供旧版 4 (使用 easy-rsa) 的方法作为备选。

核心概念
- OpenWrt: 您的路由器操作系统,它将扮演 VPN 服务器的角色。
- OpenVPN: 用于创建安全 VPN 隧道的开源软件。
- CA (Certificate Authority): 证书颁发机构,用于签发服务器和客户端的证书,是信任的基石。
- 密钥: 服务器和客户端各自拥有一对公钥和私钥,用于加密通信和身份验证。
- 客户端: 您的电脑、手机或其他需要连接到 VPN 的设备。
使用 OpenWrt 19.07+ 的 openvpn-client 软件包(推荐,简单快捷)
这是目前 OpenWrt 官方软件包中集成的最新方法,简化了证书和密钥的生成过程。
第一步:准备工作
- 一台刷好 OpenWrt 的路由器:确保路由器可以正常联网。
- 连接到路由器的管理界面:通过浏览器访问
168.1.1或您路由器的 LAN 地址。 - 更新软件包列表:
- 进入 系统 -> 软件包。
- 点击 “更新列表” 按钮。
第二步:安装 OpenVPN 服务器
-
在 软件包 页面的 “已安装” 选项卡中,搜索并安装以下软件包:
luci-app-openvpn: OpenVPN 的 Web 界面配置程序(推荐,方便管理)。openvpn-easy-rsa: 一个用于简化 CA 和密钥管理的工具集(新版本已集成)。openvpn: OpenVPN 核心程序。
-
如果您不想用 Web 界面,可以直接安装
openvpn和openvpn-easy-rsa。
第三步:生成证书和密钥
我们将使用 openvpn 包自带的 easyrsa 脚本。

-
通过 SSH 连接到您的路由器(这是最方便的方式)。
ssh root@192.168.1.1
-
创建工作目录并初始化 CA:
# 创建一个工作目录 mkdir -p /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa # 复制 easy-rsa 的模板文件 cp -r /usr/share/easy-rsa/* . # 编辑 vars 文件,设置一些默认变量(可选,但推荐) nano vars
在
vars文件中,您可以设置一些默认的国家、州、城市、邮箱等。set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "Beijing" set_var EASYRSA_REQ_CITY "Beijing" set_var EASYRSA_REQ_ORG "MyHome" set_var EASYRSA_REQ_EMAIL "admin@myhome.com" set_var EASYRSA_REQ_OU "MyHomeVPN"
保存并退出 (
Ctrl+X,Y,Enter)。
(图片来源网络,侵删) -
初始化 PKI (Public Key Infrastructure):
./easyrsa init-pki
-
构建 CA 证书:
# 系统会提示您输入一些信息,可以按回车使用 vars 文件中的默认值,或者直接输入。 # 最后会要求输入一个密码,请务必记住这个密码! ./easyrsa build-ca nopass
nopass表示 CA 私钥不使用密码,方便服务器自动启动,如果加了密码,服务器每次重启都需要手动输入密码。- 执行后,会在
pki目录下生成ca.crt(CA证书) 和ca.key(CA私钥)。
-
生成服务器证书和密钥:
# 创建服务器证书请求 ./easyrsa gen-req server nopass # 签发服务器证书 ./easyrsa sign-req server server
签发时,系统会问您 "Confirm request details: (y/n)",输入
y并确认。 -
生成 Diffie-Hellman (DH) 参数:
# 这一步可能需要几分钟时间,请耐心等待 ./easyrsa gen-dh
-
生成 HMAC 密钥 (用于增强安全性):
openvpn --genkey --secret ta.key
-
创建客户端证书和密钥(为第一个客户端):
# 创建客户端1的证书请求 ./easyrsa gen-req client1 nopass # 签发客户端1的证书 ./easyrsa sign-req client client1
签发时,同样输入
y确认。
至此,所有证书和密钥都已生成完毕。 它们都在 /etc/openvpn/easy-rsa/pki 目录下。
第四步:配置 OpenVPN 服务器
-
在 OpenWrt Web 界面中创建配置文件:
- 进入 系统 -> 软件,找到 "openvpn" 并点击 "配置" 按钮。
- 您会看到一个名为 "Custom configuration" 的文本框,将以下配置粘贴进去。
-
服务器配置文件示例:
# 基本设置 port 1194 proto udp dev tun # CA 证书 ca /etc/openvpn/easy-rsa/pki/ca.crt # 服务器证书 cert /etc/openvpn/easy-rsa/pki/issued/server.crt # 服务器私钥 key /etc/openvpn/easy-rsa/pki/private/server.key # DH 参数 dh /etc/openvpn/easy-rsa/pki/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" # 安全设置 cipher AES-256-CBC auth SHA256 user nobody group nogroup # 防止重放攻击 reneg-sec 0 # 更高的 TLS 密钥交换 tls-crypt /etc/openvpn/easy-rsa/ta.key # 保持客户端连接 keepalive 10 120 # 日志设置 status /var/log/openvpn-status.log verb 3
-
保存并应用:
- 点击 "保存" 按钮,然后点击 "保存 & 应用"。
- 系统会提示您安装缺失的依赖,点击 "安装"。
第五步:启动服务器并设置防火墙
-
启动 OpenVPN 服务:
- 回到 系统 -> 软件,确保 "openvpn" 的状态是 "已启用",如果没启动,点击旁边的 "启用" 按钮。
-
配置防火墙(最关键的一步!):
- 进入 网络 -> 防火墙。
- 创建新的区域:
- 点击 "添加" 按钮。
- 名称:
VPN - 输入:
wan - 转发: 勾选
接受 - 输出: 勾选
接受 - 覆盖允许区域: 勾选
lan - 点击 "保存"。
- 创建新的规则:
- 在 "VPN" 区域下,点击 "添加" 按钮来添加规则。
- 规则名称:
Allow OpenVPN - 目标:
任意的 - 源:
VPN - 协议:
UDP - 源端口:
1194 - 目标端口:
1194 - 跳过目标地址检查: 勾选
