证书密钥文件生成

环境准备

  1. 安装OpenVPN以及所需工具
opkg update
opkg install luci-app-openvpn
opkg install openvpn-openssl
opkg install openvpn-easy-rsa

服务端证书生成

1. 初始化PKI目录

cd /etc/openvpn
easyrsa init-pki

2. 生成根证书(CA)

easyrsa build-ca nopass

3. 生成服务端证书及私钥

easyrsa build-server-full server nopass

4. 生成客户端证书及私钥

easyrsa build-client-full client1 nopass

后续新增用户只需修改client1为不同名称(如client2、client3)

5.生成Diffie-Hellman参数

此过程耗时较长(约10-30分钟)

easyrsa gen-dh

6. 证书文件位置说明

├── pki/
│   ├── ca.crt          # CA根证书
│   ├── dh.pem          # DH参数文件
│   ├── issued/
│   │   ├── server.crt  # 服务端证书
│   │   └── client1.crt # 客户端证书
│   └── private/
│       ├── server.key  # 服务端私钥
│       └── client1.key # 客户端私钥

客户端配置文件生成

在shell执行

cat > client1.ovpn <<EOF
client
dev tun
proto udp
remote <服务器地址> 1194
resolv-retry infinite
nobind
persist-tun
remote-cert-tls server
verb 3
comp-lzo yes

# 嵌入证书内容
<ca>
$(cat /etc/openvpn/pki/ca.crt)
</ca>
<cert>
$(cat /etc/openvpn/pki/issued/client1.crt)
</cert>
<key>
$(cat /etc/openvpn/pki/private/client1.key)
</key>
EOF

目录下可以看到一个client1.ovpn文件,这个就是客户端用来连接的文件,导出到本地进行妥善保存。

OpenWRT配置

OpenVPN配置

选择一个模板新建一个配置,点击右边编辑进入配置

左上角切换到高级配置设置界面,切换到配置分类-VPN页面

在左下角的--更多选项--选择并添加一个push选项,用来配置推送内网网段的路由

再添加一个client-to-client选项,并且勾上,表示允许vpn客户端之间互相访问

最后切换到加密算法页面,按照上面生成的文件选择好

防火墙配置

防火墙-常规设置-区域 新添加一个区域 配置放行区域和转发

到这里配置基本完成,可以用客户端进行连接测试了