凌峰创科服务平台

OpenWRT如何搭建OpenVPN服务器?

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

OpenWRT如何搭建OpenVPN服务器?-图1
(图片来源网络,侵删)

核心概念

  • OpenWrt: 您的路由器操作系统,它将扮演 VPN 服务器的角色。
  • OpenVPN: 用于创建安全 VPN 隧道的开源软件。
  • CA (Certificate Authority): 证书颁发机构,用于签发服务器和客户端的证书,是信任的基石。
  • 密钥: 服务器和客户端各自拥有一对公钥和私钥,用于加密通信和身份验证。
  • 客户端: 您的电脑、手机或其他需要连接到 VPN 的设备。

使用 OpenWrt 19.07+ 的 openvpn-client 软件包(推荐,简单快捷)

这是目前 OpenWrt 官方软件包中集成的最新方法,简化了证书和密钥的生成过程。

第一步:准备工作

  1. 一台刷好 OpenWrt 的路由器:确保路由器可以正常联网。
  2. 连接到路由器的管理界面:通过浏览器访问 168.1.1 或您路由器的 LAN 地址。
  3. 更新软件包列表
    • 进入 系统 -> 软件包
    • 点击 “更新列表” 按钮。

第二步:安装 OpenVPN 服务器

  1. 软件包 页面的 “已安装” 选项卡中,搜索并安装以下软件包:

    • luci-app-openvpn: OpenVPN 的 Web 界面配置程序(推荐,方便管理)。
    • openvpn-easy-rsa: 一个用于简化 CA 和密钥管理的工具集(新版本已集成)。
    • openvpn: OpenVPN 核心程序。
  2. 如果您不想用 Web 界面,可以直接安装 openvpnopenvpn-easy-rsa

第三步:生成证书和密钥

我们将使用 openvpn 包自带的 easyrsa 脚本。

OpenWRT如何搭建OpenVPN服务器?-图2
(图片来源网络,侵删)
  1. 通过 SSH 连接到您的路由器(这是最方便的方式)。

    ssh root@192.168.1.1
  2. 创建工作目录并初始化 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)。

    OpenWRT如何搭建OpenVPN服务器?-图3
    (图片来源网络,侵删)
  3. 初始化 PKI (Public Key Infrastructure)

    ./easyrsa init-pki
  4. 构建 CA 证书

    # 系统会提示您输入一些信息,可以按回车使用 vars 文件中的默认值,或者直接输入。
    # 最后会要求输入一个密码,请务必记住这个密码!
    ./easyrsa build-ca nopass
    • nopass 表示 CA 私钥不使用密码,方便服务器自动启动,如果加了密码,服务器每次重启都需要手动输入密码。
    • 执行后,会在 pki 目录下生成 ca.crt (CA证书) 和 ca.key (CA私钥)。
  5. 生成服务器证书和密钥

    # 创建服务器证书请求
    ./easyrsa gen-req server nopass
    # 签发服务器证书
    ./easyrsa sign-req server server

    签发时,系统会问您 "Confirm request details: (y/n)",输入 y 并确认。

  6. 生成 Diffie-Hellman (DH) 参数

    # 这一步可能需要几分钟时间,请耐心等待
    ./easyrsa gen-dh
  7. 生成 HMAC 密钥 (用于增强安全性):

    openvpn --genkey --secret ta.key
  8. 创建客户端证书和密钥(为第一个客户端)

    # 创建客户端1的证书请求
    ./easyrsa gen-req client1 nopass
    # 签发客户端1的证书
    ./easyrsa sign-req client client1

    签发时,同样输入 y 确认。

至此,所有证书和密钥都已生成完毕。 它们都在 /etc/openvpn/easy-rsa/pki 目录下。

第四步:配置 OpenVPN 服务器

  1. 在 OpenWrt Web 界面中创建配置文件

    • 进入 系统 -> 软件,找到 "openvpn" 并点击 "配置" 按钮。
    • 您会看到一个名为 "Custom configuration" 的文本框,将以下配置粘贴进去。
  2. 服务器配置文件示例

    # 基本设置
    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
  3. 保存并应用

    • 点击 "保存" 按钮,然后点击 "保存 & 应用"
    • 系统会提示您安装缺失的依赖,点击 "安装"

第五步:启动服务器并设置防火墙

  1. 启动 OpenVPN 服务

    • 回到 系统 -> 软件,确保 "openvpn" 的状态是 "已启用",如果没启动,点击旁边的 "启用" 按钮。
  2. 配置防火墙(最关键的一步!)

    • 进入 网络 -> 防火墙
    • 创建新的区域
      • 点击 "添加" 按钮。
      • 名称: VPN
      • 输入: wan
      • 转发: 勾选 接受
      • 输出: 勾选 接受
      • 覆盖允许区域: 勾选 lan
      • 点击 "保存"
    • 创建新的规则
      • 在 "VPN" 区域下,点击 "添加" 按钮来添加规则。
      • 规则名称: Allow OpenVPN
      • 目标: 任意的
      • : VPN
      • 协议: UDP
      • 源端口: 1194
      • 目标端口: 1194
      • 跳过目标地址检查: 勾选
分享:
扫描分享到社交APP
上一篇
下一篇