Firezone 部署教程:自建零信任访问平台

Firezone 是一个基于 WireGuard® 的开源零信任访问平台,提供比传统 VPN 更快的速度和更精细的权限控制 。官方推荐使用其云托管版本,并明确表示目前不官方支持生产环境下的自托管,因为内部 API 变化迅速,自建版本可能与最新客户端不兼容 。本教程仅供学习或实验用途,旨在帮助你在自己的 Linux 服务器上搭建一个 Firezone 实例。

重要提示

  • 本教程基于官方 GitHub 仓库的文档和社区知识编写,并非官方提供的标准部署指南。
  • 自建版本功能可能不完整,且需要自行构建和分发客户端。
  • 部署过程对 Linux 网络和 WireGuard 有一定要求,建议先在测试环境尝试。

准备工作:硬件与系统要求

在开始之前,请确保你的服务器满足以下基本条件:

  • 操作系统:支持 x86_64 架构的 Debian/UbuntuRocky/CentOS 系统 。
  • 内核Linux 内核版本 >= 5.6,或 >= 5.0 并已打上 WireGuard 补丁 。可通过 uname -r 命令查看内核版本。
  • 网络UDP 端口 51820(默认)需要开放,供 WireGuard 使用 。
  • 防火墙:需要能够配置 iptables/nftables,并关闭 SELinux 或将其设置为宽松模式,因为 Firezone 当前与强制模式不兼容 。
  • 依赖:确保系统已加载 WireGuard 内核模块(sudo modprobe wireguard)并安装了 iptablesnftables

第一步:安装 Firezone

Firezone 官方不提供直接的 DEB/RPM 包,而是通过一个安装脚本来部署 。注意:对于 Amazon Linux 2023,需要先安装 iptables,因为该系统默认不包含它 。

1
2
3
4
5
6
7
# 1. (仅限 Amazon Linux 2023) 安装 iptables
sudo dnf install iptables-services -y
sudo systemctl enable iptables
sudo systemctl start iptables

# 2. 运行官方安装脚本 (需要 sudo 权限)
curl -fsSL https://get.firezone.dev | sudo bash

脚本执行完毕后,Firezone 的二进制文件和 systemd 服务单元会被安装在 /opt/firezone 目录下 。

第二步:初始化配置

安装完成后,需要执行初始化命令来生成必要的证书、管理员账户和默认策略 。这个过程会提示你设置访问地址等关键信息。

1
sudo firezone init

Firezone 将所有配置持久化在 SQLite 数据库中(/var/lib/firezone/firezone.db),而不是传统的 /etc/wireguard/*.conf 文件,直接修改 WireGuard 配置文件会被 Firezone 覆盖,因此所有后续配置都应通过管理界面或 CLI 进行 。

第三步:配置防火墙和网络

Firezone 自身不管理防火墙规则,需要管理员手动确保网络环境就绪 。

  1. 开放 WireGuard 端口:使用你的防火墙工具放行 UDP 51820 端口。

    • 使用 firewalld: sudo firewall-cmd --add-port=51820/udp --permanent && sudo firewall-cmd --reload
    • 使用 ufw: 相关命令需要根据实际情况调整。
  2. 启用 IP 转发:确保系统允许转发 IP 数据包。

    1
    2
    3
    # 临时生效
    sudo sysctl -w net.ipv4.ip_forward=1
    # 永久生效,编辑 /etc/sysctl.conf 文件,添加或取消注释 net.ipv4.ip_forward=1
  3. 处理已有 WireGuard 规则:如果服务器上曾配置过其他 WireGuard 接口,请清理可能冲突的 iptables 规则,防止 SNAT 重复或路由混乱 。

第四步:访问 Web 管理界面

完成初始化后,你就可以通过浏览器访问 Firezone 的 Web 管理界面了。地址通常是 https://<你的服务器IP>(初始化时设置的地址)。

  • 重要提醒:Firezone 的 Web 界面依赖 WebSocket 进行实时通信。强烈建议在生产或测试环境中使用 HTTPS 访问,因为在 HTTP 环境下,部分浏览器(如 Firefox)可能会因安全策略阻止 WebSocket 连接,导致登录或界面功能异常 。

首次登录时,你需要使用初始化过程中创建的管理员账户和密码。

常见问题与故障排查

  • 服务启动失败(错误代码 226/NAMESPACE):在较老的系统(如 AWS Linux 2)上,由于其 systemd 版本过低,可能不支持 StateDirectory 功能。作为临时方案,可以手动运行初始化脚本并修改服务文件 。更稳妥的方式是使用较新的操作系统。
  • 网络连接问题(Amazon Linux 2023):此类系统默认的 iptables 规则可能过于严格。解决方案是确保安装了 iptables,并让 Firezone 添加高优先级的转发规则以覆盖系统默认的限制 。
  • 客户端兼容性:再次强调,自建版本需要自行构建客户端。直接从应用商店下载的官方客户端大概率无法连接到你自建的服务器,因为它们是为云服务版本设计的 。

总而言之,自建 Firezone 是一个对技术能力有要求的过程,尤其是在网络和系统配置层面。对于追求稳定和生产级应用的场景,强烈推荐直接使用 Firezone 官方的云托管服务,可以省去大量运维精力和兼容性问题。如果你只想进行功能体验或学习研究,那么可以参照本教程,在实验环境中进行尝试。