跳至主要内容
請先在隔離的 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 網路變更影響遠端存取時,主控台或獨立管理路徑就是復原途徑。