RouterOSでステートレスDHCPv6な設定を行う

この記事は約5分で読めます。

IPv6まわりはいまだによくわかっていない筆者です。

RouterOSもIPv6には対応しているのですが、相変わらずNGNなIPv6に対応していないので、ひかり電話なしの環境では、RAは受け取れるのですが確認する手段がないという状態です。また、RA Proxy機能も実装されていないので、bridgeインターフェースをゴニョゴニョするしかないはずです。
どうしても無理なら、ひかり電話ありのHGWの環境にすると、DHCPv6が払いだされることになるので、これならばRouterOSは受け取れるようになります。

問題はinternal、LAN側の話なのですが、通常ならRAだけで問題ないと思いますが、DNSv6な情報もクライアントに渡したい場合は、若干設定が必要なようです。

ノードのIPv6アドレス設定方法RAは必要か?RAにプレフィックス情報が必要か?m-flag/o-flag付加情報(DNSサーバアドレスなど)
手動不要手動設定
SLAAC必要必要off/off手動設定
ステートフルDHCPv6必要不要on/onDHCPで配布
ステートレスDHCPv6必要必要off/onDHCPで配布

参照:

どう割り振る? IPv6でのアドレス設計
IPv4アドレス在庫の枯渇やWorld IPv6 Dayの実施に伴い、「そういえば昔IPv6について読んだけれど、いまはどうなっているんだろう?」と感じている人も多いのではないでしょうか。最新状況を踏まえたIPv6の「基礎」を改めて紹介します。(編集部)

クライアント側はというと、

Windows10 Creators updateからRAでDNSサーバの情報が払い出された場合、受け取れるようになっていたんですね・・・

参照:

Windows10 Creators updateにしてRDNSSを試してみました。 – JPNIC Blog

とにかくDHCPv6サーバを用意してやることで、DNSv6情報を配布できるみたいです。

しかし、RouterOS側を確認してみると、そのままではRouterOSが保持するDNSv6情報配布できない場合があるようです。問題がない場合もあるみたいですが・・・

公式フォーラムを覗いていると、この問題そのものに言及している書き込みがありました。

Can't get DNSv6 from SLAAC - MikroTik

どうやらDHCPv6オプションのrawデータそのものを編集して対応すればよいようです。

/ipv6 dhcp-server option
add code=23 name=dnsrecursivenameserver value=0x20010db800000000000000000000000220010db8000000000000000000000003
add code=24 name=domainsearchlist value=0x076578616d706c65036e657400076578616d706c6503636f6d00

がっつり16進数に書き換えてありますね・・・ Webなどには、16進数の変換してくれるサイトもあるので、それらを活用するのも手段ですが、実はWikiにはこのへんについて説明があります。

Manual:IP/DHCP Server - MikroTik Wiki

Starting from v6.8 available data types for options are:

  • 0xXXXX – hex string (works also in v5)
  • ‘XXXXX’ – string (works also in v5 but without ‘ ‘ around the text)
  • $(XXXXX) – variable (currently there are no variables for server)
  • ‘10.10.10.10’ – IP address
  • s’10.10.10.10′ – IP address converted to string
  • ’10’ – decimal number
  • s’10’ – decimal number converted to string

’’シングルクォーテーションで囲ってあげると、良しなに変換してくれます。つまり以下のようにします。

/ipv6 dhcp-server option
add code=23 name=dnsrecursivenameserver value='2001:db8::2''2001:db8::3'
add code=24 name=domainsearchlist value='example.net'

あとはipv6 ndを以下のようにして、otherフラグを設定することで、ステートレスDHCPv6な環境を構築することができると思います。

/ipv6 nd
set [ find default=yes ] other-configuration=yes

ちなみに筆者はDHCPv6サーバを設定しても、DNSv6情報が払い出されない動作がよくわからなくて、最近まで別にDHCPv6サーバを構築して、そちらから払い出すようにしていました。

今回の件を確認してから、再度RouterOSに任せるようにしたので、別に構築したDHCPv6サーバはシャットダウンしました。

今回の記事については、動作させることがメインになってしまったため、どうしてそのような動作をするのか、などが不勉強です。間違えているなどありましたらご指摘など頂けますと助かります。

404 Not Found
タイトルとURLをコピーしました