跳到主要内容

安装与升级

routerd 从发布归档安装、检查配置、dry-run,到启动服务的流程

本页采用 Ubuntu Server + systemd 的入门路径。请在隔离 VM 或有本地控制台的备用主机上完成第一次安装;它不适合在唯一的生产网关上远程试错。

1. 下载并安装发布归档​

在 GitHub Releases 选择与 CPU 架构相符的归档。下面使用当前推荐的稳定里程碑 v20260707.1514;稳定版页面是这个推荐的唯一来源。示例为 Linux amd64;arm64 请把文件名改为 linux-arm64。

RELEASE=v20260707.1514
curl -fLO https://github.com/imksoo/routerd/releases/download/${RELEASE}/routerd-linux-amd64.tar.gz
curl -fLO https://github.com/imksoo/routerd/releases/download/${RELEASE}/routerd-linux-amd64.tar.gz.sha256
sha256sum -c routerd-linux-amd64.tar.gz.sha256
tar -xzf routerd-linux-amd64.tar.gz
sudo ./install.sh

归档带有程序、服务模板、示例配置和安装脚本;路由器主机不需要 Go 或 Makefile。安装脚本会安装或检查常用运行时依赖,并把程序放在 /usr/local/sbin。它会写入 /usr/local/etc/routerd/router.yaml.sample,但不会覆盖已有的 /usr/local/etc/routerd/router.yaml。全新安装没有配置时,服务不会自动启动。

确认安装:

routerd --version
routerd --help

2. 先准备配置,再启动服务​

把示例复制成自己的配置并编辑接口名。ens18、ens19 只是常见 VM 名称,不一定是你的机器上的名字。服务尚未运行时,不要用 routerctl;先直接使用 routerd 检查文件。

sudo install -d -m 0755 /usr/local/etc/routerd
sudo install -m 0600 /usr/local/etc/routerd/router.yaml.sample /usr/local/etc/routerd/router.yaml
sudoedit /usr/local/etc/routerd/router.yaml
sudo routerd validate --config /usr/local/etc/routerd/router.yaml

routerd validate 直接读取 YAML,不需要服务已经运行,也不会改动主机网络。

接着做一次隔离的 dry-run。临时路径让状态报告和所有可能的渲染目标都远离系统默认目录;--skip-service-manager 会略过服务管理器操作,--dry-run 本身不会提交网络变更。

LAB_DIR="$(mktemp -d)"
sudo routerd apply --config /usr/local/etc/routerd/router.yaml --once --dry-run --skip-service-manager \
--state-file "$LAB_DIR/state.db" \
--ledger-file "$LAB_DIR/ledger.db" \
--status-file "$LAB_DIR/status.json" \
--netplan-file "$LAB_DIR/50-routerd.yaml" \
--dnsmasq-file "$LAB_DIR/dnsmasq.conf" \
--dnsmasq-service-file "$LAB_DIR/routerd-dnsmasq.service" \
--nftables-file "$LAB_DIR/routerd-nat.nft"

检查输出中的接口名、依赖和警告。dry-run 会观察部分主机信息,但不应把网络设置应用到主机;它也不能证明网线、ISP 或防火墙策略在真实流量下正确。

确认有控制台或独立管理路径后,才启动正常服务:

sudo systemctl enable --now routerd.service
sudo systemctl is-active routerd.service
sudo routerctl get status

现在 routerd serve 已通过 systemd 运行,routerctl 才有可连接的本机 socket。之后的 routerctl validate、routerctl plan 和 routerctl apply 都是向这个运行中的服务请求操作。

升级​

升级会保留当前 routerd 生成的 routerd.service,包括配置中的 Capability 和 Environment。 Managed by routerd 注释本身不表示旧格式;含已移除的 --controller-chain 参数的 unit 会被替换。 运行时配置代际切换会保留配置未变的受管理 DHCP 客户端。 VRRP gracefulActivation 控制 VIP 的初次发布;同一地址、接口已有 Ready/advertised MASTER 记录时,暂时的 readiness 下降不会撤销 VIP。只有地址存在而没有发布记录时仍需通过初始检查。 降为 BACKUP/FAULT 时仍会撤销 VIP。 成功发布历史与当前观测状态分开保存,观测错误不会清除历史。 降级、确认 VIP 不存在或发布失败会使历史失效;不同地址或接口不能沿用历史。

下载新版本、校验哈希、解压后再次运行同一个安装脚本即可:

tar -xzf routerd-linux-amd64.tar.gz
sudo ./install.sh

安装程序会保留已有配置和状态。升级前先备份自己的 router.yaml;如果 routerd.service 已在运行,安装程序可能会重启它以换用新程序。因此请先安排维护窗口并确认管理路径;升级后检查服务状态和本机控制接口:

sudo systemctl is-active routerd.service
sudo routerctl get status

涉及 BGP 等对短暂重启敏感的生产功能时,请先阅读变更记录和自己的运维流程。

平台范围​

Ubuntu Server 是当前主要目标。FreeBSD 和 NixOS 的安装布局、服务管理和网络渲染仍是各自的平台工作,不能把本页的 systemd/nftables 步骤当成它们的等价操作说明。请先读支持的平台。

继续学习​