区块链中文技术社区

不同区块链 Web3 钱包的密钥管理方式

在中心化钱包(尤其是交易所钱包)的安全架构中,密钥管理方案至关重要,不同的密钥管理方式具有不同的安全等级和使用场景。本文主要介绍目前主流的密钥管理方式:CloudHSM、TEE、KMS+S3 数据库和钱包数据加密存储(wallet.data)。

一.中心化钱包(交易所钱包)的密钥管理方式

1.CloudHSM 硬件安全模块

CloudHSM(Hardware Security Module)是由 AWS、Google 等云服务厂商提供的高安全硬件密钥管理方案,其本质也是一种 KMS, 密钥管理服务, 这种服务密钥是不能离开这个环境的。

1.1.工作原理

  • 用户通过配置 Credentials 调用硬件加密机(HSM)。
  • 密钥对中的私钥永久存储于 HSM 内部,无法被导出或脱离 HSM 环境,仅对外返回对应的公钥。
  • 使用公钥生成对应的钱包地址。
  • 当需要签名交易时,外部应用构造交易的 32 字节消息哈希(Message Hash),将其传入 HSM 进行签名。
  • HSM 返回签名(Signature)后,外部应用将签名与交易本体结合,构成完整的区块链交易并发送至链上。

1.2.优点

  • 最高等级的硬件安全,物理级别隔离,私钥无法导出

1.3.缺点

  • 成本昂贵,密钥容量有限,难以大规模扩展

1.4.适用场景

  • 交易所热钱包、高净值用户托管钱包

2.TEE 可信执行环境

TEE 是由 AWS 等云服务厂商提供的基于芯片级别的可信执行环境,例如 AWS 的 Nitro, Intel SGX

2.1.工作原理

  • 基于 CPU 提供硬件隔离的执行环境(如 AWS Nitro enclave)
  • 离线签名代码封装于 enclave 内,启动 enclave 服务后,通过 vsock 与外部环境通信
  • 签名过程中密钥始终不暴露在非安全环境中

2.2.优点

  • 提供硬件级别的安全保护,成本适中,易于大规模扩展
  • 部分厂商提供的 TEE 环境是没有存储能力的,需要外接 KMS,将密钥加密的之后,通过 vsock 传输处理,使用 S3 数据库(基于 S3 的 KMS)进行密钥的管理

2.3.缺点

  • 安全性略逊于 CloudHSM,对芯片级漏洞存在依赖
  • 没有存储能力的 TEE 依赖于加密和外部存储

2.4.适用场景

  • 普通用户地址管理、交易钱包密钥管理

3.基于 S3 数据库的 AWS KMS 云密钥管理服务

KMS 是 AWS 等云服务提供商提供的密钥管理服务,便捷易用。

3.1.工作原理

  • 用户在 KMS 服务中生成或导入密钥
  • 通过 IAM 权限配置访问 KMS 服务获取密钥,用于签名交易等操作

3.2.优点

  • 使用简单、易于云服务整合,快速开发部署

3.3.缺点

  • 密钥管理和安全等级依赖云服务商,不适合高安全等级场景。

3.4.适用场景

  • 内部服务、测试环境和非敏感场景。

4.Wallet.data 本地加密存储

钱包数据通过 AES 等算法加密后,直接保存在数据库或文件系统中。

4.1.工作原理

  • 钱包创建密钥对后,对私钥进行 AES 对称加密,存储至数据库或文件(如 wallet.data)
  • 使用私钥时,解密后进行签名操作

4.2.优点

  • 简单、成本低廉,易于快速实现和部署

4.3.缺点

  • 安全等级最低,易受内部泄露、数据库攻击风险

4.3.适用场景

  • 低价值交易、测试环境、临时钱包、小规模项目

5.中心化钱包的密钥管理方式安全等级对比

CloudHSM(最高安全性)> TEE(次高安全性)> KMS + S3数据库(一般安全性)> wallet.data 本地加密存储(最低安全性)

管理方式 安全等级 成本 可扩展性 使用场景举例
CloudHSM 5星 较高 一般 热钱包、托管钱包
TEE+S3(KMS) 据库库 4星 中等 交易钱包
KMS+S3 据库库 3星 内部服务、测试环境
Wallet.data 2星 极低 测试、临时、小型钱包
  • 高价值资产托管、交易所热钱包优先选择 CloudHSM。
  • 常规交易钱包、大规模用户地址体系建议使用 TEE 方案。
  • 内部测试和日常非敏感交易环境,可使用更便捷的 KMS 或 wallet.data 本地存储。

二.去中心化钱包的密钥管理方式

去中心化钱包是由用户自己掌控私钥的非托管钱包。去中心化钱包的密钥管理方式主要分为硬件钱包和软件钱包两种

1.硬件钱包(Hardware Wallet)

硬件钱包是一种专用物理设备,用于安全生成和存储密钥,并对交易进行离线签名。

1.1 工作原理

  • 密钥在硬件钱包设备中生成,私钥始终被存储在硬件内部,无法导出
  • 通过设备上的物理按钮和屏幕确认签名交易,签名过程始终在设备内部完成
  • 只有经过硬件钱包确认签名的交易数据才可以发回软件端再广播到区块链网络

1.2 优点

  • 最高的安全性,私钥始终处于硬件隔离环境,避免了木马、病毒或网络攻击风险
  • 适合长期存储大额资产

1.3 缺点

  • 设备需要单独购买,使用流程稍复杂,用户体验不如软件钱包便捷
  • 可能存在设备丢失、物理损坏等风险(可通过助记词备份解决)

1.4 适用场景

  • 存储大量加密资产的个人用户、机构用户或项目方

2.软件钱包(PC端、移动端、浏览器插件钱包)

软件钱包通过软件或应用的方式,将加密后的密钥存储于本地环境。

2.1 工作原理

  • 软件钱包生成密钥对时,通过 AES 等加密算法对私钥进行加密后,存储在用户的本地环境(如电脑、手机本地或浏览器缓存)
  • 用户使用钱包时,通过密码或其他验证方式解密私钥,完成交易签名

2.2 优点

  • 易于安装、免费使用、用户体验流畅,适合日常交易使用
  • 便于与 DApp、DeFi 等去中心化应用集成

2.3 缺点

  • 私钥存储于联网设备中,相比硬件钱包,安全性较低
  • 易受恶意软件、钓鱼攻击等风险

2.4 适用场景:

  • 日常支付、小额资产频繁交易或 DApp 交互

三.MPC(多方安全计算)托管钱包的密钥管理方式

MPC (Multi-party Computation) 钱包通过分布式多方安全计算技术,将私钥分割成多个碎片,分别由多个不同节点管理,交易签名时无需还原完整私钥,极大提升密钥的安全性和灵活性。

1.工作原理

  • MPC 钱包生成私钥时,通过密码学算法将私钥拆分为多个碎片,分别存储在不同节点上
  • 交易签名时,通过 MPC 协议进行多方安全计算,各节点无需交换或还原完整私钥,就能共同生成交易签名
  • 签名过程的所有参与节点都不能单独获取完整的私钥,只有在达成共识的情况下才能成功签名交易

2.优点

  • 没有单点私钥暴露风险,密钥碎片分布式存储,更安全
  • 灵活高效,节点碎片可动态管理,适用于机构级别的资产管理方案
  • 便于权限管理、风控及多人审批流程,适合机构场景

3.缺点

  • MPC技术实现相对复杂,需要较高的技术开发能力和维护成本
  • 系统复杂性提高,可能带来一定的运行成本与效率损耗

4.适用场景

  • 托管钱包、机构钱包、交易所钱包,或有多人审批需求的企业、DAO组织和资产托管平台

四.其他钱包的密钥管理方式

除上述主流钱包类型外,还有智能合约钱包、多签钱包、社交恢复钱包等特殊钱包形态。这些钱包本质上并不直接持有密钥,而是通过 EOA 地址(外部账户)进行控制,因此,它们的密钥管理方式实际上继承了 EOA 地址本身的密钥管理方式

1.智能合约钱包

智能合约钱包本质上是部署在区块链上的合约,钱包逻辑、权限控制、交易执行由合约代码实现,但合约本身的控制权限掌握在一个或多个 EOA 地址手中。

  • 密钥管理方式:
    • 中心化场景(CloudHSM、TEE、KMS、wallet.data)
    • 去中心化场景(硬件钱包、软件钱包)
    • MPC 方式
    • 智能合约钱包本身不直接持有密钥,钱包权限和资产管理依赖于控制它的外部账户(EOA 地址)
    • EOA 地址的密钥管理可按照上文介绍的方式
  • 典型应用场景:
    • 账户抽象(Account Abstraction,ERC-4337)钱包
    • DApp 应用专属钱包

2.多签钱包

多签钱包通常通过智能合约实现,钱包执行任何操作都需要多个地址共同授权签名。

  • 密钥管理方式:
    • 硬件钱包、软件钱包(去中心化)
    • CloudHSM、TEE 或 MPC 托管方案(机构级场景)
    • 每个参与多签钱包的地址都是独立的 EOA 地址,分别拥有各自独立的私钥
    • 单个签名者的密钥可使用任意上述密钥管理方式
  • 典型应用场景:
    • 机构资金托管(如 DAO 资金管理)
    • 多人审批的资金管理场景(公司财务、投资机构)

3.社交恢复钱包

社交恢复钱包是一种特殊的智能合约钱包,通过社交关系(好友、亲人、可信机构)或门限共享秘密密钥拆分(Threshold Secret Sharing)辅助用户恢复钱包控制权限,而不再单纯依赖单一助记词备份。

3.1.密钥管理方式

  • 社交恢复钱包核心地址通常为用户的主控 EOA 地址,用户主控地址的密钥管理可采用任意上述方案,如:
    • 硬件钱包(高价值资产场景)
    • 软件钱包(普通用户日常场景)
    • MPC 或 TEE(托管或企业级用户)

3.2.社交恢复的主要恢复方式

社交信任网络模式
  • 用户在创建钱包时指定多个可信的朋友、家人、机构地址作为「守护人」
  • 当用户丢失密钥时,通过多数(如 3 个中 2 个)守护人的地址签名,智能合约允许重新设置控制权限
基于门限共享秘密密钥拆分(Threshold Secret Sharing)模式
  • 使用密码学门限共享秘密技术(如 Shamir Secret Sharing)将私钥分割为多个片段(shares)。
  • 分割后的密钥碎片分别存储于多个可信任方或设备(如好友设备、云存储、硬件钱包、MPC节点)。
  • 恢复私钥时只需达到一定的门限数量(如 5 个碎片中的任意 3 个碎片)即可恢复出完整的私钥,重新获得钱包控制权。
  • 任意单一碎片或低于门限数量的碎片组合无法推导出私钥,安全性高于单纯依赖单一备份

3.3 优点:

  • 显著降低用户密钥丢失风险,不再依赖单一助记词或单点备份
  • 提升安全性,避免单个恢复途径的单点风险

3.4 缺点:

  • 实现复杂度相对较高,需要一定的密码学和合约开发支持
  • 需要用户选择和信任第三方守护人或存储设备,存在一定的社交信任成本

3.5 典型应用场景:

  • 普通用户日常钱包,降低密钥丢失风险
  • 主流消费钱包,如 Argent、Zengo 等

五.总结

钱包的密钥管理方式决定了资产存储的安全性和便捷性。根据钱包形态的不同,密钥管理方案也有所差异:

中心化钱包(交易所钱包)多使用CloudHSM、TEE、KMS+S3数据库以及本地加密存储(wallet.data),其中CloudHSM安全性最高,但成本较高;TEE则兼顾安全性和扩展性,适合中等安全需求的场景;KMS和wallet.data则适合低价值或测试场景。

去中心化钱包强调用户自主控制密钥,以硬件钱包为最高安全等级,适合长期存储高价值资产;而软件钱包适合小额交易和日常使用,便捷但安全性较低。

MPC托管钱包采用密钥分片、多方安全计算技术,兼顾安全性与灵活性,适合机构用户、多人审批和大额资产托管场景。

智能合约钱包、多签钱包、社交恢复钱包都是通过EOA地址控制,继承EOA地址的密钥管理模式,社交恢复钱包还进一步结合门限共享秘密密钥拆分技术,大幅降低用户丢失密钥的风险,提升钱包的易用性。

通过合理选择与组合以上密钥管理方式,可以在安全性、易用性和成本之间取得最优平衡。

  • 密钥管理关系图示

智能合约钱包/多签钱包/社交恢复钱包     
        │         
        └─ 由 EOA 地址控制       
                │           
                 ├─ 中心化密钥管理方案     
                 │    ├─ CloudHSM      
                 │    ├─ TEE        
                 │    ├─ KMS+S3数据库      
                 │    └─ Wallet.data        
                 │        
                 ├─ 去中心化密钥管理方案     
                 │    ├─ 硬件钱包        
                 │    └─ 软件钱包(PC、移动、插件)         
                 │          
                 └─ MPC 多方安全计算方案(机构级)      
                 │           
                 └─ 门限共享秘密密钥拆分方案(Threshold Secret Sharing)       
                     └─ 社交恢复钱包(分布式碎片存储与恢复)

转载:https://learnblockchain.cn/article/14925

Databasus 支持 MySQL 和 MongoDB 的 PostgreSQL 备份工具

Databasus 是一款免费、开源且可自行托管的 PostgreSQL 备份工具。它支持将备份文件保存到不同的存储位置(S3、Google Drive、FTP 等),并提供备份进度通知(Slack、Discord、Telegram 等)。此外,它也支持 MySQL、MariaDB 和 MongoDB。

项目地址:https://github.com/databasus/databasus
官网地址:https://databasus.com

Trustivon VPN 一款企业级区块链基础设施安全接入管理方案

产品概述

什么是 Trustivon VPN?

Trustivon VPN 是一款企业级区块链基础设施安全接入管理方案,基于 OpenVPN 协议开发,为企业服务提供安全网络访问控制。系统采用 Web 可视化管理界面,支持多种认证方式,提供完善的用户管理、连接监控和审计功能。

产品特点

  • 开箱即用:Docker 一键部署,5 分钟完成安装配置,无需复杂的技术背景
  • 零学习成本:全 Web 界面操作,告别命令行,管理员和用户都能轻松上手
  • 团队协作友好**:支持组织架构管理,批量导入用户,权限配置灵活,适合企业级应用
  • 安全无忧**:多重身份验证机制,MFA 二次验证,证书自动管理,让安全防护更简单
  • 运维可视化:实时连接监控、流量统计图表、历史记录查询,运维状态一目了然
  • 场景适配灵活:支持固定 IP 分配、VPN 网关模式、IPv6 网络,满足不同业务需求
  • 自动化运维:邮件自动发送配置、证书到期提醒、历史记录自动清理,减少人工维护
  • 企业集成:LDAP/AD 认证集成,域名解析服务,轻松融入现有 IT 基础设施

详情查看官方

https://trustivon.com/vpn-service

Docker 一键部署 WireGuard VPN,支持可视化管理与监控

引言

​ 随着远程办公、跨地域访问与隐私保护需求的不断增长,VPN(虚拟专用网络)正在成为个人与企业必备的基础设施之一。而传统的 WireGuard VPN 配置流程对于普通用户而言存在一定门槛,需要大量命令行操作与手动配置。WG-Easy 正是在这种背景下应运而生的高效解决方案,它将 WireGuard 的强大性能与可视化管理相结合,大大降低部署和维护难度。

项目简介

WG-Easy(WireGuard Easy) 是一个将 WireGuard VPN 核心服务Web 可视化管理界面深度集成的开源项目。它通过直观的浏览器操作界面,让用户无需掌握复杂的命令行知识,即可快速完成 VPN 的部署、配置与监控。

设计理念

  • 开箱即用:基于 Docker 容器化部署,一条命令即可启动
  • 可视化优先:所有操作均可在 Web 界面完成,告别配置文件
  • 性能卓越:基于 WireGuard 协议,提供媲美直连的网络速度
  • 安全可靠:采用现代密码学套件,代码简洁易审计

核心特性

WireGuard Easy 提供了一套完整的 VPN 管理功能,主要特性包括:

  • 一体化架构:将 WireGuard 核心 VPNWeb 管理界面整合在一起。
  • 快速部署:基于 Docker 容器化,一条命令即可启动完整 VPN 服务。
  • 可视化管理面板:客户端创建、编辑、禁用、删除全部图形化完成。
  • 二维码一键接入:自动生成配置二维码,便于移动设备一键连接。
  • 一次性分享链接:生成临时配置链接,分享后自动失效,提升安全性
  • 实时连接与流量监控:显示每个客户端的在线状态、上传 / 下载流量。
  • 多语言 & 深浅色模式:自动适配浏览器语言,支持暗黑模式。
  • Prometheus 监控支持:原生支持 Prometheus,便于接入 Grafana 统一监控体系。
  • 双因素认证(2FA):支持 TOTP 双因素认证,提升账户安全。
  • 继承 WireGuard 的安全模型:公钥认证、现代加密算法,无密码、无证书链复杂度。

环境信息

WireGuard 内核支持检查

在部署前,请确认服务器内核已支持 WireGuard:

uname -r

加载 WireGuard 内核模块:

modprobe wireguard

验证是否成功:

lsmod | grep wireguard

说明:

  • Linux Kernel ≥ 5.6 已内置 WireGuard
  • Ubuntu 20.04+ / 22.04 LTS 默认支持
  • 若加载失败,请检查内核版本或云厂商是否裁剪模块

基础环境

  • 云服务器(VPS / 轻量云 / 物理机)
  • 操作系统:Ubuntu 22.04 LTS(推荐)
  • 具有域名公网 IP
  • 已安装 Docker / Docker Compose

网络与安全组要求

  • UDP 51820(WireGuard 通信端口)
  • TCP 51821(wg-easy Web 管理界面)
  • 出口网络允许访问公网(用于 VPN 转发)

配置防火墙规则

# Ubuntu/Debian (使用 ufw)
sudo ufw allow 51820/udp comment 'WireGuard VPN'
sudo ufw allow 51821/tcp comment 'WG-Easy Web UI'

若云厂商启用防火墙 / 安全组,务必同步放行端口。


部署教程

方式一:Docker 命令行部署(快速上手)

1. 创建网络

docker network create \
  -d bridge --ipv6 \
  --subnet 10.42.42.0/24 \
  --subnet fdcc:ad94:bacf:61a3::/64 \
   wg

2. 启动容器

docker run -d \
  --net wg \
  -e INSECURE=true \
  --name wg-easy \
  --ip6 fdcc:ad94:bacf:61a3::2a \
  --ip 10.42.42.42 \
  -v ~/.wg-easy:/etc/wireguard \
  -v /lib/modules:/lib/modules:ro \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add NET_ADMIN \
  --cap-add SYS_MODULE \
  --sysctl net.ipv4.ip_forward=1 \
  --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  --sysctl net.ipv6.conf.all.disable_ipv6=0 \
  --sysctl net.ipv6.conf.all.forwarding=1 \
  --sysctl net.ipv6.conf.default.forwarding=1 \
  --restart unless-stopped \
  ghcr.io/wg-easy/wg-easy:15

3. 访问 Web 界面

访问浏览器 http://服务器IP:51821 即可进入界面。

方式二:Docker Compose 部署(推荐)

1. 安装 Docker Compose

# Ubuntu/Debian
# sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt install -y docker-compose-plugin

2. 创建配置目录

mkdir ~/wg-easy/ && mkdir ~/wg-easy/

3. 下载 Docker Compose 文件

sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

4. 修改配置

  • 编辑docker-compose.yml文件并取消environment注释INSECURE
  • 设置INSECUREtrue允许通过非安全http连接访问 Web UI。

完整docker-compose.yml文件如下:

volumes:
  etc_wireguard:

services:
  wg-easy:
volumes:
  etc_wireguard:

services:
  wg-easy:
    environment:
      - INSECURE=true
    image: ghcr.nju.edu.cn/wg-easy/wg-easy:15
    container_name: wg-easy
    networks:
      wg:
        ipv4_address: 10.42.42.42
        ipv6_address: fdcc:ad94:bacf:61a3::2a
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

networks:
  wg:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.42.42.0/24
        - subnet: fdcc:ad94:bacf:61a3::/64

5. 启动服务

# 启动容器
docker compose up -d

# 查看日志
docker compose logs -f wg-easy

# 查看容器状态
docker compose ps

访问浏览器 http://服务器IP:51821 即可进入界面。

初始配置

创建管理员账号





创建客户端配置

配置路由规则(重要)

修改客户端配置,添加允许的 IP ,决定哪些流量走 VPN:

# 全局代理(所有流量走 VPN)
0.0.0.0/0, ::/0

# 仅访问特定网段(分流模式,推荐)
10.42.42.0/24          # WireGuard 内网
10.7.0.0/22            # 服务器内网
172.17.0.0/24          # docker
192.168.1.0/24         # 家庭网络

分流模式的优势:

  • 仅内网流量走 VPN,外网直连
  • 节省 VPN 服务器带宽
  • 访问国内网站速度更快

保存后即可通过扫描二维码或下载配置文件连接。

启用 Prometheus 监控

1. 在 WG-Easy 中启用

进入 管理面板 > 通用设置 > Prometheus,启用监控并设置密码


2. 配置 Prometheus

在 Prometheus 配置文件中添加:以下是一个示例:

scrape_configs:
    - job_name: 'wg-easy'
      scrape_interval: 30s
      metrics_path: /metrics/prometheus
      static_configs:
          - targets:
                - '服务器IP:51821'
      authorization:
          type: Bearer
          credentials: '上一步设置的密码'


导入 Grafana 仪表盘

Grafana Dashboard ID:21733



项目界面预览

仪表盘


客户端连接

  • Windows客户端


  • iPhone客户端



适用场景

WG-Easy 适用于多种实际应用场景,从个人隐私保护到企业级远程访问,都能提供高效的解决方案:

  • 远程办公 / 内网访问
    安全访问公司内网服务(Git、Jenkins、数据库、K8s 等)。

  • 跨地域统一出口网络
    多终端统一出口 IP,便于访问特定区域网络资源。

  • 家庭网络远程访问
    安全访问家中 NAS、路由器、智能家居设备、监控摄像头、内网服务。

  • 小型团队 VPN 管理
    无需专业网络运维即可维护团队 VPN。

  • 测试 / 沙箱 / 运维环境
    快速搭建临时 VPN,随用随删,配置可追溯。


相关链接

官方文档

高级配置

客户端下载

平台 下载地址
Windows https://download.wireguard.com/windows-client/
macOS https://apps.apple.com/app/wireguard/id1451685025
Android https://play.google.com/store/apps/details?id=com.wireguard.android
iOS https://apps.apple.com/app/wireguard/id1441195209
Linux sudo apt install wireguard 或各发行版包管理器

社区支持


WireGuard vs IPsec vs OpenVPN 核心对比

对比维度 WireGuard IPsec OpenVPN
协议架构 第3层 VPN,内核态,仅 UDP 第3层 VPN 协议族,内核态 应用层 SSL/TLS,用户态,TCP/UDP
加密方案 固定现代套件(ChaCha20-Poly1305) 可配置(AES、3DES 等) 可配置(默认 AES-256-GCM)
认证方式 公钥认证 预共享密钥、证书、EAP 证书、用户名密码、双因素
安全性 高(现代密码学,代码简洁易审计) 较高(成熟可靠但配置复杂) 较高(依赖 OpenSSL)
性能 极高(低延迟,高吞吐) 高性能 中等
资源占用 极低(CPU,内存) 低到中等 中等到高
连接速度 几乎即时 较慢(需要协商) 快速
配置难度 极简(少量配置) 复杂 中等
NAT 穿透 优秀 良好 优秀
防火墙穿透 良好(UDP 可能受限) 一般(ESP 常被阻断) 极佳(可伪装 HTTPS)
移动网络切换 无感知漫游 需要重连 较好
网络拓扑 点对点,站点互联,Mesh 网络 站点互联,远程访问 远程访问,点对点
平台支持 Linux,Windows,macOS,iOS,Android,路由器 全平台原生支持 全平台完整支持
企业成熟度 快速增长中 广泛企业级应用 广泛企业级应用
合规认证 较少 完善(FIPS 等) 多种认证
适用场景 个人 VPN,移动办公,物联网 企业站点互联,高合规场景 企业远程访问,严格防火墙

快速选择指南

选择 WireGuard,如果你需要:

  • [x] 极致性能(低延迟,高吞吐)
  • [x] 移动场景(频繁切换网络)
  • [x] 简单部署(快速上手)
  • [x] 物联网 / 嵌入式设备
  • 适用场景: 个人 VPN,移动办公,物联网,云原生环境

选择 IPsec,如果你需要:

  • [x] 企业合规(FIPS,CC 等认证)
  • [x] 站点互联
  • [x] 操作系统原生集成
  • [x] 传统设备兼容
  • 适用场景: 企业站点互联,金融行业,高合规场景

选择 OpenVPN,如果你需要:

  • [x] 最大兼容性(严格防火墙环境)
  • [x] 灵活认证(用户名密码,双因素)
  • [x] 成熟生态(丰富第三方工具)
  • [x] 精细访问控制
  • 适用场景: 企业远程访问,强防火墙环境

总结

WG-Easy 以其实用性和易用性,大幅降低了传统 WireGuard VPN 的部署门槛,使 VPN 架构不仅对开发者友好,也对非专业用户易于使用。

无论是个人自建 VPN,还是企业内网 VPN 管理,WG-Easy 都能提供简洁,高效,安全的解决方案,是非常值得推荐的开源 VPN 工具。

转载:https://mp.weixin.qq.com/s/l_himr7l9Kq5tRwNqnxLVQ

Docker部署OpenVPN实战指南 | Web可视化配置 | 完美接入多种组网方案

引言

​ 在现代互联网时代,数据安全、隐私保护和远程接入已成为企业与个人网络部署的核心需求。传统 VPN 解决方案在保障网络通信安全方面发挥了重要作用,而随着容器化技术的成熟,将 VPN 服务以 Docker 方式部署并结合 Web UI 管理,正成为自建网络服务的新趋势。

项目简介

GavinTan/openvpn 是一个基于Docker容器化部署的OpenVPN服务器项目,旨在通过直观的 Web 管理界面简化 VPN 管理。该解决方案提供对用户账户管理客户端管理证书管理服务器配置实时连接监控的集中控制,同时通过多因素身份验证和 LDAP 集成保持企业级安全性。


核心特性

1. 账号与权限管理

项目提供了完善的用户管理系统,支持本地账号和LDAP集成两种认证方式:

  • 默认管理员账号为admin/admin,首次登录后可修改密码
  • 支持模板导入创建多个VPN账号,每个账号可独立管理
  • VPN用户可以登录专属页面,自行下载配置文件、修改密码、设置MFA
  • 集成LDAP后可与企业现有的账号体系打通,实现统一认证

2. 证书与密钥管理

作为VPN的核心安全组件,证书管理功能设计得非常周到:

  • 一键生成客户端证书和配置文件
  • 支持证书的吊销和重新生成
  • 自动管理证书有效期,避免过期导致的连接问题

3. 多协议与IPv6支持

项目在网络协议支持方面非常全面:

  • 同时支持UDP和TCP协议,可根据网络环境灵活选择
  • 完整的IPv6支持,适应现代网络环境
  • 双栈配置,IPv4和IPv6可以同时工作
  • 注意:使用IPv6时需要Docker网络和客户端都开启相应支持

4. 企业级安全特性

安全性是VPN最核心的要求,项目在这方面做得很扎实:

  • 多因素认证(MFA):支持基于时间的一次性密码(TOTP),大幅提升账号安全性
  • LDAP集成:可与企业Active Directory或OpenLDAP集成
  • 固定IP分配:可为特定用户分配固定的VPN IP地址
  • 加密标准:参考业界最佳实践配置加密算法和密钥长度

5. 监控与日志

友好的监控功能让问题排查变得简单:

  • 连接历史记录,可查看每个用户的连接时间和时长
  • 在线用户列表,实时掌握VPN使用情况
  • 详细的日志记录,便于故障诊断
  • 支持在线查看和编辑server.conf配置文件

6. 灵活的网络配置

针对不同的使用场景,项目提供了灵活的网络配置选项:

  • 组网模式(默认):客户端只路由VPN内网流量,不影响正常上网
  • 网关模式:客户端所有流量都通过VPN,实现完全的网络控制
  • CCD支持:可为特定客户端定制路由和网络配置
  • 支持在Web界面直接修改OpenVPN配置,启用自动更新后即时生效

部署教程

环境准备

在开始部署前,请确保你的服务器满足以下要求:

  • 操作系统:Linux(推荐Ubuntu 20.04+或CentOS 7+)
  • Docker版本:20.10+
  • 网络:服务器需要有公网IP或可被客户端访问的网络地址

方式一:Docker Run 快速部署

这是最简单的部署方式,适合快速测试和小规模使用:

# 创建数据目录
mkdir-p~/openvpn-data

# 启动容器
dockerrun-d\
--nameopenvpn\
--cap-add=NET_ADMIN\
-p1194:1194/udp\
-p8833:8833\
-v~/openvpn-data:/data\
-v/etc/localtime:/etc/localtime:ro\
docker.1ms.run/yyxx/openvpn

参数说明:

  • --cap-add=NET_ADMIN:赋予容器网络管理权限,OpenVPN必需
  • -p 1194:1194/udp:映射VPN服务端口(UDP协议)
  • -p 8833:8833:映射Web管理界面端口
  • -v ~/openvpn-data:/data:持久化数据目录,包含配置、证书等重要文件
  • -v /etc/localtime:/etc/localtime:ro:同步系统时间,确保日志时间准确

方式二:Docker Compose 部署

对于生产环境,推荐使用Docker Compose,便于管理和维护:

1. 安装Docker Compose

# CentOS/RHEL
yum install -y docker-compose-plugin

# Ubuntu/Debian
apt install -y docker-compose-plugin

2. 创建docker-compose.yml文件

mkdir ~/openvpn&&cd~/openvpn
cat>docker-compose.yml<<'EOF'
services:
openvpn:
    image:docker.1ms.run/yyxx/openvpn
    container_name:openvpn
    restart:unless-stopped
    cap_add:
      -NET_ADMIN
    ports:
      -"1194:1194/udp"
      -"8833:8833"
    volumes:
      -./data:/data
      -/etc/localtime:/etc/localtime:ro
EOF

3. 启动服务

docker compose up -d

4. 查看日志

docker compose logs -f openvpn

IPv6 支持配置

如果你的网络环境支持IPv6,可以启用IPv6功能:

services:
  openvpn:
    image:docker.1ms.run/yyxx/openvpn
    container_name:openvpn
    restart:unless-stopped
    cap_add:
      -NET_ADMIN
    ports:
      -"1194:1194/udp"
      -"8833:8833"
    volumes:
      -./data:/data
      -/etc/localtime:/etc/localtime:ro
    sysctls:
      -net.ipv6.conf.default.disable_ipv6=0
      -net.ipv6.conf.all.forwarding=1

networks:
default:
    enable_ipv6:true

IPv6使用注意事项:

  • 需要在Web管理界面的系统设置中启用IPv6选项
  • 客户端和服务端的协议都要指定为udp6或tcp6
  • Docker网络必须启用IPv6支持
  • OpenVPN Connect客户端需要3.4.1或更高版本

初始化配置流程

服务启动后,按以下步骤完成初始化:

第一步:登录管理界面

  1. 浏览器访问 http://服务器IP:8833
  2. 使用默认账号登录:用户名admin,密码admin
  3. 登录后立即在系统设置中修改管理员密码

第二步:生成客户端配置

  1. 进入"管理" → "客户端"页面
  2. 点击"添加客户端",输入客户端名称、VPNServer及端口
  3. 下载生成的.ovpn配置文件

第三步:创建VPN账号

  1. 进入"管理" → "VPN账号"页面
  2. 点击"添加账号",设置用户名和密码
  3. 默认启用了账号验证,可根据需要关闭

第四步:客户端连接测试

  1. 在客户端设备上安装OpenVPN客户端软件,用第三步创建账号访问http://服务器IP:8833下载对应平台软件
  2. 导入第二步下载的配置文件
  3. 使用第三步创建的账号密码连接
  4. 连接成功后可在管理界面看到在线用户

LDAP集成配置

对于企业用户,可以集成LDAP实现统一认证:

  1. 在系统设置中启用LDAP认证
  2. 配置LDAP服务器参数:
    • OpenLDAP使用:uid
    • Windows AD使用:sAMAccountName
  3. LDAP_URL:LDAP服务器地址,如ldaps://ldap.example.com:636
  4. LDAP_USER_ATTRIBUTE:用户属性字段
  5. LDAP_USER_ATTR_IPADDR_NAME:用于存储固定IP的字段(可选)
  6. LDAP_USER_ATTR_CONFIG_NAME:用于存储客户端配置的字段(可选)

注意:启用LDAP后,本地VPN账号将不再工作,所有认证都通过LDAP进行。


常见问题排查

问题1: 容器启动失败

  • 检查是否赋予了NET_ADMIN权限
  • 确认端口1194和8833未被占用
  • 查看容器日志:docker logs openvpn

问题2: 客户端无法连接

  • 确认服务器防火墙放行了1194端口
  • 检查客户端配置文件中的服务器地址是否正确
  • 验证VPN账号是否启用

问题3: 连接后只能访问8833,无法访问其他服务

这是最常见的问题!原因是没有配置路由推送

解决方案:

  1. 检查路由是否已推送

在Web界面【管理】-->【配置文件】查看 server.conf 配置中是否有类似内容:

push "dhcp-option DNS 8.8.8.8"
push "route 10.0.12.0 255.255.252.0"
push "route 172.17.0.0 255.255.0.0"
push "route 10.100.100.0 255.255.255.0"
  1. 检查服务器IP转发
sysctl net.ipv4.ip_forward
# 应该返回: net.ipv4.ip_forward = 1
  1. 检查iptables规则
iptables -t nat -L -n
# 应该看到 MASQUERADE 规则
  1. 客户端重新连接

修改配置后,客户端必须断开重连才能获取新路由

问题4: 不知道该添加哪些路由

按需添加,不要一股脑全加!判断方法:

# 1. 查看服务器网卡信息
ip addr show

# 2. 确定你要访问的目标
# - 只访问服务器本机? → 只加服务器内网网段
# 云服务器内网路由
push "route 10.0.12.0 255.255.252.0"

# - 要访问ZeroTier设备? → 加ZeroTier网段
push "route 10.100.100.0 255.255.255.0"

# - 要访问Docker容器内部? → 加Docker网段
push "route 172.17.0.0 255.255.0.0"

# 3. 使用最小配置原则
# 先加最必要的,测试通过后再按需添加

问题5: 路由配置后还是无法访问

逐步排查:

# 1. 在客户端检查路由表
# Windows: route print
# Mac/Linux: netstat -rn

# 2. 测试连通性
ping 10.8.0.1        # 测试VPN网关
ping 10.0.12.12      # 测试服务器IP
traceroute 10.0.12.12 # 查看路由路径

# 3. 检查防火墙
# 确认服务器和客户端防火墙都允许相关流量

项目界面预览

管理后台主页

客户端管理

账号管理

系统设置页面

自助页面下载安装客户端

适用场景

1. 企业远程办公

  • 为员工提供安全的内网访问通道
  • 与企业AD/LDAP集成,实现统一账号管理
  • 通过MFA增强安全性
  • 管理员可以随时查看连接情况,掌控网络安全

2. 开发团队协作

对于需要访问开发环境的团队:

  • 为开发人员分配VPN账号,访问测试服务器
  • 固定IP功能方便配置白名单
  • 支持快速添加和删除用户,响应人员变动
  • 详细的连接日志便于审计

3. 多地办公组网

连锁企业或多分支机构可以:

  • 将各地办公网络通过VPN互联
  • 使用组网模式不影响员工正常上网
  • 集中管理所有分支的VPN接入
  • 支持大规模部署,批量生成配置

4. 个人隐私保护

对于注重网络隐私的个人用户:

  • 自建VPN服务器,避免使用商业VPN
  • 启用网关模式,所有流量加密传输
  • 通过MFA保护账号安全
  • 完全掌控数据,无需担心隐私泄露

5. 安全测试与渗透

网络安全从业者可以:

  • 搭建测试用VPN环境
  • 快速为团队成员分配临时账号
  • 灵活的网络配置满足各种测试场景
  • 详细日志方便分析测试结果

6. 家庭智能设备远程访问(实用场景)

这是最常见的个人使用场景:

需求: 外出时访问家里的NAS、监控、智能家居

架构方案:

手机(外网) → OpenVPN(云服务器) → ZeroTier/EasyTier → 家里设备

路由配置:

# OpenVPN配置
push "route 10.100.100.0 255.255.255.0"  # ZeroTier网段
# 家里的NAS、路由器、摄像头都在这个网段

实际效果:

  • 手机连上VPN后访问 http://10.244.244.5:5000 (家里NAS)
  • 访问 http://10.244.244.6:8080 (家里监控)
  • 不影响手机正常上网(微信、购物等不走VPN)

为什么不直接用ZeroTier?

  • ZeroTier手机客户端常驻后台,耗电高
  • OpenVPN用完就断,更省电
  • 灵活性更好,可以给朋友临时分配访问权限

相关链接


总结

​ 该项目是一款结合了 Docker 部署与 Web 管理 UI 的 OpenVPN 解决方案,既保留了 OpenVPN 强大的网络安全能力,又通过 Web 界面降低了部署和维护门槛。对于希望快速构建自有 VPN 平台或希望在内部网络中实现便捷远程访问管理的团队和个人开发者,该项目是一种高效实用的方案。

转载:https://mp.weixin.qq.com/s/FSMfjzZOr4TkI1o-OfjlSA