メインコンテンツまでスキップ

基本の NAT とファイアウォールポリシー

WAN、LAN、任意の管理インターフェース、NAT44Rule、FirewallZone、FirewallPolicy、nftables 検証を含む基本的な routerd NAT44 とファイアウォールチュートリアルの流れ

routerd は、Linux ルーター上で IPv4 NAPT (NAT44) とステートフルファイアウォールを適用します。 このチュートリアルでは、初期構成のホストに両方を入れる最小手順を示します。

想定する構成

ルーターは次の構成になっているものとします。

  • IPv4 が乗っている上流インターフェース (wan)。ネイティブデュアルスタック / PPPoE / DS-Lite のいずれでもかまいません。
  • LAN 内クライアントにプライベートアドレスを配る LAN インターフェース (lan)。
  • 任意で、管理インターフェース (mgmt)。

ここでの目的は次の 2 つです。

  • LAN からの外向き IPv4 を masquerade する。
  • 健全なファイアウォールの既定状態を適用する (WAN は LAN に届かない、LAN は WAN に届く、管理側はルーター自身に届く)。

NAT44

- apiVersion: net.routerd.net/v1alpha1
kind: NAT44Rule
metadata:
name: lan-to-wan
spec:
outboundInterface: wan
sourceCIDRs:
- 192.0.2.0/24
masquerade: true

routerd は、routerd_nat nftables テーブルにルールを生成します。 DHCP 取得回線、PPPoE 仮想インターフェース、DS-Lite トンネルのいずれでも書き方は同じで、outboundInterface だけを変えます。

conntrack 観測

routerd は conntrack を読み、Web 管理画面と routerctl connections でライブフローを表示します。 /proc/net/nf_conntrack がない環境では、sysctl 由来のサマリに縮退します。失敗にはせず、観測できる範囲だけを表示します。

ファイアウォール Kind

FirewallZoneFirewallPolicyFirewallRule がステートフルフィルターを表現します。 routerd は、これらを inet routerd_filter nftables テーブルに生成します。

役割 (untrusttrustmgmt) が、暗黙の accept / drop マトリクスを提供します。 DHCP / DNS / DS-Lite 制御のような管理対象サービスに必要な穴は、routerd が自動で開けます。

- apiVersion: firewall.routerd.net/v1alpha1
kind: FirewallZone
metadata: {name: wan}
spec:
role: untrust
interfaces:
- Interface/wan

- apiVersion: firewall.routerd.net/v1alpha1
kind: FirewallZone
metadata: {name: lan}
spec:
role: trust
interfaces:
- Interface/lan

- apiVersion: firewall.routerd.net/v1alpha1
kind: FirewallPolicy
metadata: {name: default}
spec: {}

例外を入れたいときは ファイアウォールルールのガイド を参照してください。

確認

routerctl describe NAT44Rule/lan-to-wan
routerctl firewall test from=wan to=lan proto=tcp dport=22
nft list table inet routerd_filter
nft list table ip routerd_nat

関連項目