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

routerd

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

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

最新稳定版: v20260914.0729

请按这个顺序开始

先学六个网络名词

第一次实验只需要 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:先检查,再上线

这是尚未运行 routerd 的全新 Ubuntu Server 实验主机流程摘要。先按链接的教程下载并调整完整的 first-router.yaml,再执行命令。请保留控制台或独立管理路径。

阅读 Ubuntu Server 安装指南 → · 按顺序完成第一台路由器 →

1. 只验证配置文件

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

sudo routerd validate --config first-router.yaml

2. 运行隔离的 dry-run

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

LAB_DIR="$(mktemp -d)"
sudo routerd apply --config first-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"
rm -rf "$LAB_DIR"

3. 从控制台进行 live 应用

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

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

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

systemd 服务会启动 routerd serve,持续应用与协调主机网络。确认 active 后,检查状态并按教程测试 LAN 客户端。

sudo install -d -m 0755 /usr/local/etc/routerd
sudo install -m 0600 first-router.yaml /usr/local/etc/routerd/router.yaml
sudo systemctl enable --now routerd.service
sudo systemctl is-active routerd.service
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 网络变更影响远程访问时,控制台或独立管理路径就是恢复途径。