安全起步:先檢查,不先斷線

本教學的目的不是立刻把機器變成家用閘道,而是安全完成第一輪:寫一份很小的設定、檢查它、再在不提交網路變更的情況下跑一次。請使用隔離的 Ubuntu Server VM 或備用電腦,並保留主控台。
尚未安裝時,先完成安裝與升級。
1. 找出介面名稱
ip -br link
範例將 ens18 當 WAN、ens19 當 LAN。你的主機可能顯示 enp1s0、eth0 或其他名稱,務必以輸出為準。不要透過即將由 routerd 接管的唯一網路介面遠端 SSH 後進行實驗。
2. 建立最小設定
將下列內容存成 first-router.yaml。它目前只宣告兩個介面,尚未提供 DHCP、NAT 或網際網路分享。
apiVersion: routerd.net/v1alpha1
kind: Router
metadata:
name: first-router
spec:
resources:
- apiVersion: net.routerd.net/v1alpha1
kind: Interface
metadata:
name: wan
spec:
ifname: ens18
adminUp: true
managed: false
owner: external
- apiVersion: net.routerd.net/v1alpha1
kind: Interface
metadata:
name: lan
spec:
ifname: ens19
adminUp: true
managed: true
owner: routerd
metadata.name 是設定內部使用的名稱;spec.ifname 才是 Linux 看到的實體介面名稱。將 WAN 標為 external 是保守的第一步:一開始不要讓 routerd 直接接管上游連線。
3. 離線驗證檔案
routerd validate --config first-router.yaml
這是獨立命令,不需要 routerd serve 已經啟動,也不會寫入網路設定。若出現錯誤,先修正 YAML 或介面名稱,別急著做真實套用。
4. 在暫存路徑做一次 dry-run
workdir=$(mktemp -d)
routerd apply --once --dry-run --skip-service-manager --config first-router.yaml --status-file "$workdir/status.json" --state-file "$workdir/state.db" --ledger-file "$workdir/ledger.db" --netplan-file "$workdir/50-routerd.yaml" --dnsmasq-file "$workdir/dnsmasq.conf" --dnsmasq-service-file "$workdir/routerd-dnsmasq.service" --nftables-file "$workdir/routerd-nat.nft"
rm -rf "$workdir"
--dry-run 會計算相依關係、計畫和產生意圖,但不會提交主機網路變更。暫存目錄也讓狀態報告與輸出不會落入 /run、/etc 或 /var/lib。請閱讀輸出,尤其是介面名、資源參照與管理路徑警告。
不要把 dry-run 當作連通性或安全測試:它不會替你測量真實 ISP、交換器 VLAN 或完整的防火牆暴露面。
5. 在下一篇進行真正的變更
這個小檔案只宣告介面,沒有 DHCP、NAT 或網際網路共享。請保持服務停止,繼續 第一台實驗路由器,在那裡依序檢查完整設定、啟動服務、 查看狀態並測試 LAN 用戶端。