亲测基于下面的命令安装两次都成功安装,只要将下面的代码依次复制到命令行中回车运行就行,目前按照的仅供学习交流使用,生产环境请谨慎使用,做好数据加密处理,话不多说直接安排上执行命令
# 更新软件包列表,检查可用的软件包更新
sudo apt update
# 执行这个命令会自动下载和安装OpenVPN。
sudo apt install openvpn
# 证书管理工具
sudo apt install easy-rsa
# 切换目录
cd /usr/share/easy-rsa
# 初始化,程序将自动创建pki目录,所有生成的文件将存储在该目录中
sudo ./easyrsa init-pki
# 清理原有证书和私钥并初始化,可选择性使用不执行该条指令
sudo ./easyrsa clean-all
# 生成自签名的根 CA 证书,用于对 PKI 中的其他证书进行签名
# 备注:这里使用nopass参数设置不需要密码,那么在启动OpenVPN服务的时候就不提示输入密码。
sudo ./easyrsa build-ca nopass
# 生成Diffie-Hellman算法需要的密钥文件,等待一段时间即可生成成功
sudo ./easyrsa gen-dh
# 为OpenVPN服务端生成证书和私钥,文件名称:server
方法一:
sudo ./easyrsa build-server-full server nopass
方法二:
sudo ./easyrsa gen-req server nopass ##为服务器证书生成证书签名请求CSR,用于保护服务器的连接。nopass 选项创建一个没有密码的私钥,以方便使用。
sudo ./easyrsa sign-req server server ##使用 CA 证书签名服务器 CSR,并创建服务器证书。
# 为OpenVPN客户端证书和私钥:文件名称:user1
方法一:
sudo ./easyrsa build-client-full user1 nopass
方法二:
sudo ./easyrsa gen-req user1 nopass ##为客户端证书生成证书签名请求CSR,用于保护客户端的连接。nopass 选项创建一个没有密码的私钥,以方便使用。
sudo ./easyrsa sign-req user1 client ##使用CA 证书签名客户端 CSR,并创建客户端证书。
# 记住这两个文件: /usr/share/easy-rsa/pki/issued/user1.crt 和 /usr/share/easy-rsa/pki/private/user1.key
# 将这些零散的文件集中聚合到 openvpn 目录
sudo cp /usr/share/easy-rsa/pki/private/server.key /etc/openvpn/ # 服务端私钥
sudo cp /usr/share/easy-rsa/pki/issued/server.crt /etc/openvpn/ # 服务端证书
sudo cp /usr/share/easy-rsa/pki/private/user1.key /etc/openvpn/ # 客户端私钥
sudo cp /usr/share/easy-rsa/pki/issued/user1.crt /etc/openvpn/ # 客户端证书
sudo cp /usr/share/easy-rsa/pki/dh.pem /etc/openvpn/
sudo cp /usr/share/easy-rsa/pki/ca.crt /etc/openvpn/
# 编辑服务端配置文件
sudo nano /etc/openvpn/server.conf
server.conf文件内容如下:
# OpenVPN 服务器配置文件
# 指定服务器的协议和端口
proto udp
port 1194 # 为了安全可以考虑修改一下端口号
# 使用 dev tun 作为路由 IP 隧道,或者使用 dev tap 作为以太网隧道
dev tun
# 证书和密钥配置
ca /etc/openvpn/ca.crt # CA 证书路径
cert /etc/openvpn/server.crt # 服务器证书路径
key /etc/openvpn/server.key # 服务器私钥路径
dh /etc/openvpn/dh.pem # Diffie-Hellman 参数文件路径
# 启用证书撤销列表 (CRL) 检查(开启可能导致vpn无法连接)
# crl-verify /etc/openvpn/crl.pem
# OpenVPN 服务器的网络地址,这些地址将会被分配给客户端
server 10.255.0.0 255.255.255.0
# 推送 DNS 解析器给客户端
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# 允许客户端相互通信
client-to-client
# 配置服务器将所有流量通过 OpenVPN 路由
push "redirect-gateway def1 bypass-dhcp"
# 在 VPN 连接上启用压缩
comp-lzo
# 使用合理的加密算法(根据需要调整)
cipher AES-256-CBC
# 使用 HMAC 认证以提高安全性
auth SHA256
# 设置最大同时连接的客户端数
max-clients 10
# 设置日志文件路径
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
# 指定访问的路由,例如 10.1.1.0/24,推送给用户
push "route 10.1.1.0 255.255.255.0"
客户端配置
以Windows11系统为例,下载开源版的OpenVPN客户端,https://openvpn.net/community-downloads/ ,并进行安装。
创建ovpn文件
user1.ovpn文件内容
# OpenVPN 客户端配置文件
# 指定使用 OpenVPN 客户端模式
client
# 使用 tun 设备作为 IP 隧道
dev tun
# 使用 UDP 协议
proto udp
# 远程服务器的 IP 地址和端口号,也可以是域名。
remote 112.36.56.74 1194
# 禁止绑定到特定的本地端口
nobind
# 保持私钥的持久性
persist-key
# 保持 IP 隧道的持久性
persist-tun
# 指定证书颁发机构 (CA) 的证书路径
ca ca.crt
# 指定客户端证书的路径
cert user1.crt
# 指定客户端私钥的路径
key user1.key
# 启用数据压缩
comp-lzo
# 指定客户端路由,例如 10.1.1.0/24
route 10.1.1.0 255.255.255.0
# 看情况添加
remote-cert-tls server
将user1.ovpn文件放入到C:\Users\\OpenVPN\config
将服务器上如下地址的文件也下载下来,并且放入上面win10系统的目录中:
/etc/openvpn/user1.crt
/etc/openvpn/user1.key
/etc/openvpn/ca.crt
连接openvpn
打开OpenVPN GUI,左下角托盘,右键连接,成功。
到此连接完成