跳到主要内容
请先在隔离的 Ubuntu Server VM 中测试

routerd

先描述路由器,再决定何时变更网络。

routerd 将 WAN、LAN、DNS、NAT、路由和系统设置明确写入一份 YAML。请从实验主机开始,并保留控制台或独立管理网卡:live 运行可能改变连通性。

最新稳定版: v20260707.1514

请按这个顺序开始

先学六个网络名词

第一次实验只需要 WAN、LAN、IP 地址、网关、DHCP 和 DNS。指南不假设你已有网络经验,会用简短方式说明。

  • WAN
  • LAN
  • DHCP
  • DNS
学习六个基本名词 →

准备隔离的 Ubuntu Server 实验环境

使用备用 VM 或主机,并保留控制台或独立管理 NIC。不要在生产环境或唯一的路由器上进行第一次 live 变更。

  • Ubuntu Server
  • 控制台访问
  • 独立管理 NIC
准备实验环境 →

编写一项小型路由器任务

先从接口和单一 LAN 服务开始,再逐一加入 DHCP、DNS 和出站 IPv4 NAT。

  • Interface
  • DHCPv4Server
  • NAT44Rule
构建第一台路由器 →

FreeBSD 和 NixOS:仍处于基础建设阶段

已有安装布局和服务管理集成的基础工作,但原生平台渲染器和功能对等性仍待完成。第一台路由器请使用 Ubuntu Server。

  • Ubuntu Server 为主
  • FreeBSD 基础工作
  • NixOS 基础工作
查看平台状态 →

接着进行第一次安全的变更

请按这个顺序进行。验证和 dry-run 不会变更主机网络;在控制台运行的 live apply 和守护进程可能会。请使用控制台或独立管理路径,并且只在守护进程启动后使用 routerctl。

1
学习基本概念
WAN / LAN / DHCP / DNS
2
准备 Ubuntu 实验环境
控制台 / 管理 NIC
3
编写 YAML
router.yaml
4
仅验证
routerd validate
5
隔离 dry-run
routerd apply --once --dry-run
6
在控制台 live 应用
routerd apply --once
7
启动守护进程后检查
routerd serve → routerctl

Ubuntu Server:先检查,再上线

请在备用的 Ubuntu Server VM 或主机上安装 routerd,将示例 YAML 放到下列路径;进行 live 步骤前,保留控制台或独立管理路径。

阅读 Ubuntu Server 安装指南

1. 只验证配置文件

这会检查 YAML 和资源规则,不会变更主机网络,也不需要 routerd 守护进程正在运行。

sudo routerd validate --config /usr/local/etc/routerd/router.yaml

2. 运行隔离的 dry-run

这会使用临时的 state、ledger 和 status 路径执行一次应用流程,不应用网络变更,也不写入 routerd 的正常状态文件。它仍是独立操作,不需要守护进程或 routerctl。

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"

3. 从控制台进行 live 应用

这会变更主机网络后退出。只在实验环境的控制台,或有独立管理路径时运行。

# 一次 live 应用:变更主机网络后退出。
sudo routerd apply --config /usr/local/etc/routerd/router.yaml --once

4. 启动守护进程,再使用 routerctl

routerd serve 是 live 运行,会持续应用并协调主机网络。启动后才在另一个终端中使用 routerctl。

# 从控制台启动 live 守护进程。
sudo routerd serve --config /usr/local/etc/routerd/router.yaml

# routerd serve 启动后,在另一个终端中运行。
sudo routerctl get status
sudo routerctl get events --limit 20

routerd 是 pre-release v1alpha1 软件。不要把第一次 live 运行用于网络中唯一的路由器或唯一的远程管理路径。

守护进程启动后再检查路由器

routerctl 会与本地正在运行的 routerd 守护进程通信。它用于检查已运行的路由器,不用于上面的独立验证和 dry-run。

routerctl get status

在进行下一项变更前,检查守护进程报告的资源状态。

routerctl doctor

路由器启动后,通过守护进程执行有针对性的健康诊断。

routerctl get events

资源未进入预期状态时,查看最近的控制器事件。

保留主机控制台

live 网络变更影响远程访问时,控制台或独立管理路径就是恢复途径。