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

DS-Lite ホームルーター

IPv6 を主回線として使う access line の例です。router は Router Advertisement と DHCPv6-PD で IPv6 を受け取り、LAN prefix を派生させ、IPv4 traffic は DS-Lite tunnel に通します。

完全な検証済み YAML は examples/example-dslite-home.yaml にあります。

構成図

図の対応表

番号意味主な resource
[1]DS-Lite tunnel の接続先になる ISP 側 AFTR。DSLiteTunnel/transix
[2]IPv6 RA と DHCPv6-PD を受ける WAN interface。DHCPv6PrefixDelegation/wan-pd
[3]tunnel と LAN service を作り、必要な sysctl を導出する routerd host。Derived host runtime
[4]IPv4 egress に使う DS-Lite ip6tnl device。DSLiteTunnel/transix, trust/untrust zone からの NAT44 自動導出
[5]IPv4 address と delegated IPv6 address を持つ LAN interface。IPv4StaticAddress/lan-ipv4, IPv6DelegatedAddress/lan-ipv6
[6]DHCPv4、RA、RDNSS、DNSSL を受ける LAN client。DHCPv4Server/lan-dhcpv4, IPv6RouterAdvertisement/lan-ra

この例で管理するもの

領域routerd resource
WAN IPv6DHCPv6PrefixDelegation/wan-pd
Prefix delegationDHCPv6PrefixDelegation/wan-pd, IPv6DelegatedAddress/lan-ipv6
DS-LiteDSLiteTunnel/transix
LAN IPv4 と DHCPv4IPv4StaticAddress/lan-ipv4, DHCPv4Server/lan-dhcpv4
LAN IPv6 advertisementIPv6RouterAdvertisement/lan-ra
DNSDNSZone/home, DNSResolver/lan-resolver
IPv4 egresstrust/untrust zone から自動導出される NAT44
MTU/MSSDSLiteTunnel/transix と firewall zone から自動導出

この例では Transix に近い AFTR 値を placeholder として使っています。実回線に合わせて、 AFTR FQDN、DNS server、DHCPv6 client profile を置き換えてください。

設定の要点

# [2] WAN から IPv6 prefix delegation を取得する。
- apiVersion: net.routerd.net/v1alpha1
kind: DHCPv6PrefixDelegation
metadata:
name: wan-pd
spec:
interface: wan
client: dhcp6c
profile: ntt-hgw-lan-pd

# [5] delegated prefix から LAN IPv6 address を派生させる。
- apiVersion: net.routerd.net/v1alpha1
kind: IPv6DelegatedAddress
metadata:
name: lan-ipv6
spec:
prefixDelegation: wan-pd
interface: lan
subnetID: "0"
addressSuffix: "::1"

# [1] + [4] ISP AFTR に向けた DS-Lite tunnel を作る。
- apiVersion: net.routerd.net/v1alpha1
kind: DSLiteTunnel
metadata:
name: transix
spec:
interface: wan
tunnelName: ds-transix
aftrFQDN: gw.transix.jp
aftrDNSServers:
- 2404:1a8:7f01:a::3
- 2404:1a8:7f01:b::3
localAddressSource: delegatedAddress
localDelegatedAddress: lan-ipv6
localAddressSuffix: "::100"
defaultRoute: true
mtu: 1454

この DS-Lite tunnel は delegated IPv6 address を local endpoint として使います。 回線側が WAN RA address を endpoint として期待する場合は、localAddressSourceinterface に変えてください。

LAN 側サービス

この例では delegated prefix を RA で広告し、client には router を DNS として配ります。

# [6] delegated LAN prefix と local DNS 情報を RA で広告する。
- apiVersion: net.routerd.net/v1alpha1
kind: IPv6RouterAdvertisement
metadata:
name: lan-ra
spec:
interface: lan
prefixFrom:
resource: IPv6DelegatedAddress/lan-ipv6
field: address
rdnssFrom:
- resource: IPv6DelegatedAddress/lan-ipv6
field: address
dnsslFrom:
- resource: DNSZone/home
field: zone
oFlag: true
mtu: 1454

DNSResolver には AFTR 名向けの conditional forwarder を入れています。AFTR record が access network 側の resolver でだけ意味を持つ構成では、この指定が重要です。

適用手順

cp examples/example-dslite-home.yaml router.yaml
routerd validate --config router.yaml
routerd plan --config router.yaml
routerd apply --config router.yaml --once --dry-run

plan では次を確認します。

  • WAN / LAN interface 名が正しい。
  • 管理 access を誤って消さない。
  • AFTR FQDN と resolver address が意図した値になっている。
  • NAT の出口が物理 WAN ではなく DS-Lite tunnel になっている。

問題なければ実適用します。

routerd apply --config router.yaml --once

確認

routerctl status
routerctl describe DHCPv6PrefixDelegation/wan-pd
routerctl describe IPv6DelegatedAddress/lan-ipv6
routerctl describe DSLiteTunnel/transix
routerctl describe FirewallZone/wan
ip -6 tunnel show
ip route show default

LAN client 側では次を確認します。

ip -6 addr
ip route
curl https://1.1.1.1/
dig router.home.example

よく変える場所

  • platform に合わせて clientprofile を変更する。
  • Transix 以外では gw.transix.jp と AFTR resolver address を置き換える。
  • DS-Lite tunnel を WAN RA address から張る必要がある場合は localAddressSource: interface を使う。
  • DS-Lite では MSS clamp が必要になりやすい。routerd は tunnel MTU と LAN/WAN firewall zone から自動導出する。