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

最初のルーター

このチュートリアルでは、最小の役立つルーター YAML を組み立てます。WAN を 1 本 (IPv4 を DHCP で取得)、LAN を 1 本 (静的 IPv4 アドレス) です。これでホストは 上流に話しかけられて、LAN の決まったアドレスでアクセスできるようになります。 LAN 側サービス (DHCP / DNS / RA) とファイアウォールは続きのチュートリアルで足します。

このページは インストール を済ませ、/usr/local/sbin/ に routerd バイナリがある前提です。

1. インターフェースを確認する

ホストの物理構成から始めます。

ip link

小さなルーター VM では次のようになります。

  • WAN: ens18
  • LAN: ens19

このようなカーネル名を使うのは、Interface リソースの spec.ifname のところだけです。 それ以外では、リソースの metadata.name (wanlan など) で参照します。 これにより、NIC を差し替えても他のリソースを書き換えずに済みます。

2. インターフェースを宣言する

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: true

- apiVersion: net.routerd.net/v1alpha1
kind: Interface
metadata:
name: lan
spec:
ifname: ens19
adminUp: true
managed: true

Interface を 2 つ。managed: true で routerd がインターフェース設定の所有権を 持ちます。adminUp: true で routerd がリンクを上げます。

3. WAN に IPv4 アドレスをもらう

IPv4DHCPAddress を追加します。

    - apiVersion: net.routerd.net/v1alpha1
kind: IPv4DHCPAddress
metadata:
name: wan-dhcp4
spec:
interface: wan
client: dhclient
required: true

spec.interface: wanInterface リソースを名前で参照しています。 required: true でリースが取れていないときに routerd が警告を出します。

4. LAN に静的 IPv4 アドレスを設定する

IPv4StaticAddress を追加します。

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

exclusive: true で、このインターフェース上の routerd が知らないアドレスを 取り外します。他のツールが追加で割り当てる前提なら外してください。

5. 検証とドライラン

ファイルを保存して validate します。

routerd validate --config /usr/local/etc/routerd/router.yaml

通ったら計画を見ます。

sudo routerd apply \
--config /usr/local/etc/routerd/router.yaml \
--once --dry-run

Interface 2 件を管理し、DHCP リースを 1 件取得し、静的アドレスを 1 件入れる、 という計画になっているはずです。NAT もファイアウォールもまだ無いのは意図的です。

6. apply

sudo routerd apply \
--config /usr/local/etc/routerd/router.yaml \
--once

確認:

routerctl get
routerctl describe interface/wan
ip addr show ens18
ip addr show ens19

ens18 に DHCP で割り当てられたアドレス、ens19192.168.10.1/24 が見えるはずです。

まだやっていないこと

ホストは上流と通信でき、LAN から 192.168.10.1 で到達できるようになりましたが、 LAN クライアント向けのルーターとしてはまだ機能していません。次のものがありません。

  • LAN 側 DHCP サーバー
  • LAN の DNS サービス
  • LAN クライアントが WAN に出る IPv4 NAT
  • ファイアウォールルール

それぞれ別リソースです。続く 2 つのチュートリアルで段階的に足します。