跳至主要内容

基本 IPv4 NAT 閘道

DHCP WAN、routerd 管理的 LAN 閘道、DHCPv4、NAT44 與區域資源組成的 IPv4 閘道

這是適合實驗室閱讀的家用 IPv4 閘道形狀:WAN 以 DHCPv4 取得位址,LAN 使用 192.168.10.1/24,用戶端經 NAT44 連往外部網路。完整 YAML 位於 examples/example-basic-ipv4-nat.yaml。

請先在隔離的 Ubuntu Server VM 進行測試,並保留主控台。這不是將正在承載生產網路的設備直接改成路由器的捷徑。

拓撲​

網際網路/上游路由器
|
wan(DHCPv4)
|
routerd 主機
|
lan(192.168.10.1/24)
|
LAN 用戶端
工作主要資源
宣告 WAN 和 LANInterface/wan、Interface/lan
取得 WAN IPv4DHCPv4Client/wan-dhcpv4
持有 LAN 閘道位址IPv4StaticAddress/lan-base
分配 LAN 位址DHCPv4Server/lan-dhcpv4
讓 LAN IPv4 對外連線NAT44Rule/lan-to-wan

重要設定:現代 NAT 欄位​

- apiVersion: net.routerd.net/v1alpha1
kind: NAT44Rule
metadata:
name: lan-to-wan
spec:
type: masquerade
egressInterface: wan
sourceRanges:
- 192.168.10.0/24
excludeDestinationCIDRs:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16

這是目前 NAT44Rule 的結構:使用 type、egressInterface 和 sourceRanges。masquerade 適合 WAN 位址會改變的 DHCP 上游。排除的私有目的網段不會做 NAT,避免損壞內部、VPN 或管理路由。

下列資源將 LAN 位址與 DHCP 位址池連起來:

- apiVersion: net.routerd.net/v1alpha1
kind: IPv4StaticAddress
metadata:
name: lan-base
spec:
interface: lan
address: 192.168.10.1/24

- apiVersion: net.routerd.net/v1alpha1
kind: DHCPv4Server
metadata:
name: lan-dhcpv4
spec:
interface: lan
addressPool:
start: 192.168.10.100
end: 192.168.10.199
leaseTime: 12h
gatewayFrom:
resource: IPv4StaticAddress/lan-base
field: address
dnsServers:
- 1.1.1.1
- 1.0.0.1

這個第一輪實驗直接對用戶端公告外部 DNS 解析器 1.1.1.1 和 1.0.0.1,因此路由器本身暫時不需要承擔 DNS 服務。請先確認學校、家庭、公司或上游網路允許使用這些公共解析器;若網路政策指定 DNS,或你要讓路由器提供本地名稱、過濾或條件式轉送,請改用獲准的 DNS 位址,或先設定 DNSResolver,再公告路由器的 LAN 位址。

執行這個範例​

第一台實驗路由器提供符合安裝版本的檔案下載、 介面修改、驗證、隔離 dry-run、真正套用、服務啟動及用戶端檢查的完整步驟。 發布封存檔不包含儲存庫的 examples/ 目錄。上面的片段用於解釋資源,實際執行時請用 下載的完整檔案。

關於防火牆​

完整範例也包含 FirewallZone 和 FirewallPolicy,用來展示 NAT 與區域策略如何搭配。不過防火牆功能仍在預發布的基礎實作階段,不是完整安全邊界。NAT 成功、dry-run 成功,或看到 nftables 表存在,都不能證明對外曝露已安全。

常見調整​

  • 將 ens18、ens19 換成真實介面名稱。
  • 若 192.168.10.0/24 與上游、VPN 或管理網路重疊,改用未使用的私有網段。
  • 若需要可信的訪客隔離,請採用 VLAN、獨立 SSID 或獨立實體埠;不要只依賴共用二層 LAN 上的 MAC 分類。