二次优化需求,整合了 EasyRSA 初始化、证书生成、OpenVPN 服务器配置和客户端配置。


一、EasyRSA 初始化与证书生成

以下代码块整合了 EasyRSA 初始化、CA 证书生成、服务器证书生成、Diffie-Hellman 参数生成、HMAC 密钥生成以及客户端证书生成,并附带每一行的注解。

# 1. 安装 OpenVPN 和 EasyRSA
sudo apt update
sudo apt install openvpn easy-rsa

# 2. 初始化 EasyRSA 目录
make-cadir ~/easy-rsa  # 创建 EasyRSA 目录
cd ~/easy-rsa          # 进入 EasyRSA 目录

# 3. 初始化 PKI(公钥基础设施)
./easyrsa init-pki     # 初始化 PKI 目录结构

# 4. 配置 vars 文件(设置证书的默认信息)
cat <<EOF > ~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "CN"          # 国家代码
set_var EASYRSA_REQ_PROVINCE "Beijing"    # 省份
set_var EASYRSA_REQ_CITY "Beijing"        # 城市
set_var EASYRSA_REQ_ORG "HomeVPN"         # 组织名称
set_var EASYRSA_REQ_EMAIL "admin@homevpn.com"  # 邮箱
set_var EASYRSA_REQ_OU "HomeVPN"          # 组织单位
set_var EASYRSA_KEY_SIZE 2048             # 密钥长度
set_var EASYRSA_ALGO "ec"                 # 加密算法
set_var EASYRSA_DIGEST "sha512"           # 哈希算法
EOF

# 5. 生成 CA 证书
./easyrsa build-ca nopass  # 生成 CA 证书,无需密码

# 6. 生成服务器证书和密钥
./easyrsa build-server-full server nopass  # 生成服务器证书,无需密码

# 7. 生成 Diffie-Hellman 参数
./easyrsa gen-dh           # 生成 Diffie-Hellman 参数

# 8. 生成 HMAC 密钥
openvpn --genkey --secret ta.key  # 生成 HMAC 密钥,用于增强安全性

# 9. 生成客户端证书和密钥
./easyrsa build-client-full lukey nopass  # 生成客户端证书,用户名为 lukey

二、OpenVPN 服务器配置

以下是优化后的 OpenVPN 服务器配置文件 /etc/openvpn/server.conf,使用腾讯云的公共 DNS(119.29.29.29)。

# OpenVPN 服务器配置文件
port 1194                  # 监听端口
proto udp                  # 使用 UDP 协议
dev tun                    # 使用 TUN 模式
ca /etc/openvpn/ca.crt     # CA 证书路径
cert /etc/openvpn/server.crt  # 服务器证书路径
key /etc/openvpn/server.key   # 服务器密钥路径
dh /etc/openvpn/dh.pem       # Diffie-Hellman 参数路径
server 10.8.0.0 255.255.255.0  # VPN 内网网段
push "route 10.8.0.0 255.255.255.0"  # 推送内网路由
push "dhcp-option DNS 119.29.29.29"     # 使用腾讯云 DNS
keepalive 10 120            # 保持连接
comp-lzo                    # 启用压缩
persist-key                 # 持久化密钥
persist-tun                 # 持久化 TUN 设备
status /var/log/openvpn-status.log  # 状态日志
log /var/log/openvpn.log    # 日志文件
verb 3                      # 日志详细级别

三、客户端配置文件

以下是优化后的客户端配置文件 lukey.ovpn,使用腾讯云的公共 DNS。

# 客户端配置文件
client
dev tun                    # 使用 TUN 模式
proto udp                  # 使用 UDP 协议
remote 49.232.105.** 1194  # OpenVPN 服务器地址和端口
resolv-retry infinite      # 无限重试连接
nobind                     # 不绑定本地端口
persist-key                # 持久化密钥
persist-tun                # 持久化 TUN 设备
ca ca.crt                  # CA 证书路径
cert lukey.crt             # 客户端证书路径
key lukey.key              # 客户端密钥路径
comp-lzo                   # 启用压缩
verb 3                     # 日志详细级别

四、文件分发与权限设置

  1. 服务器端文件分发

    • 将生成的证书和密钥文件复制到 /etc/openvpn/ 目录:
      sudo cp ~/easy-rsa/pki/ca.crt /etc/openvpn/
      sudo cp ~/easy-rsa/pki/issued/server.crt /etc/openvpn/
      sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/
      sudo cp ~/easy-rsa/pki/dh.pem /etc/openvpn/
      sudo cp ~/easy-rsa/ta.key /etc/openvpn/
      
  2. 客户端文件分发

    • 将以下文件打包发送给客户端:
      • ca.crt
      • lukey.crt
      • lukey.key
      • lukey.ovpn
  3. 权限设置

    • 确保文件权限安全:
      sudo chmod 600 /etc/openvpn/*.key
      sudo chmod 644 /etc/openvpn/*.crt
      sudo chmod 644 /etc/openvpn/*.pem
      

五、启动 OpenVPN 服务

  1. 启动服务

    sudo systemctl start openvpn@server
    sudo systemctl enable openvpn@server
    
  2. 检查状态

    sudo systemctl status openvpn@server
    

六、验证与测试

  1. VPN 连接测试

    • 使用客户端配置文件 lukey.ovpn 连接 OpenVPN 服务器。
    • 检查客户端是否获取到 VPN 分配的 IP 地址(如 10.8.0.x)。
  2. NAS 访问测试

    • 在客户端尝试访问 192.168.1.234,确保可以访问 NAS 资源。
  3. DNS 测试

    • 在客户端检查 DNS 是否设置为腾讯云的公共 DNS(119.29.29.29)。

七、总结

通过以上步骤,你可以实现内外网互通,并支持动态 IPv6 地址。异地设备可以通过 OpenVPN 访问家庭 NAS 资源。如果遇到问题,可以通过日志(如 /var/log/openvpn.log)排查。

文章作者: Lukey
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 三多运维
运维归档 IPsec VPN openVPN
喜欢就支持一下吧