🖥️

YAMAHAルータを用いてIPv6のグローバルユニキャストアドレスを使いつつセグメント分割する

2024/05/13に公開

概要

IPv6をきちんと触っていなかった筆者が、自宅から利用しているプロバイダ(J:COM)から、IPv6のグローバルルーティングプレフィックスをDHCPv6-PDで割り当ててもらい、自宅内ネットワークの機器にステートレスDHCPでグローバルユニキャストアドレスを割り当てて、IPv6でインターネットへの通信や、機器同士の通信ができるようにしました。またグローバルルーティングプレフィックス長は/56であるため、YAMAHAルータを用いてセグメント分割(/64のセグメントを二つ作成)しました。その時の設定内容とその意味を本記事では記載しています。

背景

我が家のインターネットのプロバイダはJ:COMさんです。
技術サポートに電話でIPv6の利用申し込みの連絡を入れて、翌日以降にケーブルモデムの電源ケーブルを抜いて10秒以上待ってから、再度電源ケーブルを差し込むことで、IPv6のグローバルルーティングプレフィックスを使えるようになる仕様になっています。
IPv6を使わなくても我が家のインターネットの利用は何も問題ありませんでしたが、そろそろきちんとIPv6を触ってみなければと思い、利用申し込みをして、自宅ネットワークでIPv6を使えるようにしました。

構築した構成

下記のような構成となりました。
貧乏なので生産終了品のRTX810をメルカリで調達しました。
脆弱性の報告に目を光らせつつ、遠くない将来にサポート期間内の機器にリプレイスしないといけませんね。

プロバイダからDHCPv6-PDで付与されるグローバルルーティングプレフィックス長は/56です。
せっかくなので、ルータ広告を用いて、RTX810のLANポートごとに異なるサブネットIDのプレフィックスを付与するようにしました。
参考になる設定内容としてはこちらの "設定例 6 : タグ VLAN 併用 DHCPv6-PD" [1] があります。

設定内容

ケーブルモデム HUMAX HG100R-02JG

これがないと物理的にプロバイダへ接続できないので、設置は必須です。
ですがケーブルモデム単体ではセグメント分割ができません。
従いまして、動作モードはブリッジモードに設定しました。
プロバイダからのグローバルルーティングプレフィックスの受信等は、RTX810で行うようにします。

RTX810

RTX810のIPv6向けの設定は下記の通りです。
外向きのLANポート(lan2)はDHCPv6-PDでグローバルルーティングプレフィックスやDNSサーバのアドレスを受け取ります。
内向きのLANポート(vlan1, vlan2)ではルータ広告で流すプレフィックス/64をそれぞれ設定しておきます。配下にあるノードに対してステートレスDHCP[2]でグローバルユニキャストアドレス[3]を設定させ、DNSサーバのアドレスを通知します。

#
# IPv6 configuration
#
ipv6 routing on
ipv6 prefix 1 dhcp-prefix@lan2::1:0:0:0:1/64
ipv6 prefix 2 dhcp-prefix@lan2::2:0:0:0:1/64

#
# VLAN Port Mapping configuration
#
vlan port mapping lan1.1 vlan1
vlan port mapping lan1.2 vlan2

#
# LAN configuration
#
lan type lan1 port-based-option=divide-network

ipv6 vlan1 address dhcp-prefix@lan2::1:0:0:0:1/64
ipv6 vlan1 rtadv send 1 o_flag=on
ipv6 vlan1 dhcp service server

ipv6 vlan2 address dhcp-prefix@lan2::2:0:0:0:1/64
ipv6 vlan2 rtadv send 2 o_flag=on
ipv6 vlan2 dhcp service server

ipv6 lan2 address dhcp
ipv6 lan2 dhcp service client

ipv6 lan2 secure filter in 1010 1011 1012 2000
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 106

#
# IPv6 filter configuration
#
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 2000 reject * * * * *
ipv6 filter 3000 pass * * * * *

#
# IPv6 dynamic filter configuration
#
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * tcp
ipv6 filter dynamic 106 * * udp

設定内容の詳細

以下は、それぞれの設定内容の意味について述べます。

#
# IPv6 configuration
#
ipv6 routing on

まずこちらでIPv6を扱えるように設定します。

ipv6 prefix 1 dhcp-prefix@lan2::1:0:0:0:1/64
ipv6 prefix 2 dhcp-prefix@lan2::2:0:0:0:1/64

次にこちらで、内向きのネットワークに対してルータ広告で流すプレフィックスの種類を定義しています[4]
prefix 1にはサブネットID(8bit)として1("lan2::1"のうち"::1"の部分)を、prefix 2には2("lan2::2"のうち"::2"の部分)を設定しています。
これにより、prefix 1を使用するインターフェースではプレフィックス XXXX:XXXX:XXXX:XX01::/64(XXXXはグローバルルーティングプレフィックス/56)が、prefix 2を使用するインターフェースではプレフィックス XXXX:XXXX:XXXX:XX02::/64が使用されるようになります。
0:0:0:1はYAMAHAルータの内部動作の都合上必要になるようです。

#
# VLAN Port Mapping configuration
#
vlan port mapping lan1.1 vlan1
vlan port mapping lan1.2 vlan2

#
# LAN configuration
#
lan type lan1 port-based-option=divide-network

次にこちらでは、ポートベースVLANを設定しています[5]。これにより、内向きのLANポートごとにIPアドレスを設定できるようになります(上記ではlan1.1とlan1.2に対してのみVLANを設定しています)。

ipv6 vlan1 address dhcp-prefix@lan2::1:0:0:0:1/64
ipv6 vlan1 rtadv send 1 o_flag=on
ipv6 vlan1 dhcp service server

ipv6 vlan2 address dhcp-prefix@lan2::2:0:0:0:1/64
ipv6 vlan2 rtadv send 2 o_flag=on
ipv6 vlan2 dhcp service server

こちらでは内向きのインターフェースvlan1, vlan2それぞれに対して下記の設定を行っています。

  • グローバルユニキャストアドレスを設定
  • ルータ広告設定
  • DHCPv6サーバ機能を有効化

vlan1ではプレフィックスとしてprefix 1を使用します。
そのため、ipv6 vlan1 addressで設定するサブネットIDはprefix 1のものと同様に1となります。インターフェースIDは0:0:0:1としています。
またipv6 vlan2 rtadv sendでは広告するプレフィックスの設定としてipv6 prefixのプレフィックス定義番号1を設定しています。

そして、ステートレスDHCPv6サーバ機能を有効にするため、ipv6 vlan1 rtadv sendでoフラグをonにし [2:1]ipv6 vlan1 dhcp serviceserverを指定しています。

ipv6 lan2 address dhcp
ipv6 lan2 dhcp service client

こちらは外向きのWANポート(lan2)のIPアドレスの設定方法を指定しています。
DHCPv6-PD clientとして動作し、プロバイダからグローバルルーティングプレフィックスやDNSサーバのIPアドレスを受け取ります。
また割り当てられるIPアドレスはこちら[1:1]に記載の通り、"(DHCPv6-PD で取得したプレフィックス)::(EUI-64で生成されたインターフェースID)/56"となります。サブネットIDは0になりますので、前述で定義したプレフィックス定義のプレフィックスとは重複しません。

ちなみにipv6 lan2 dhcp service clientにはir=onを付与する書式があります。
YAMAHAのサイト[6]によると、ir=off(もしくは省略)の場合はSolicitを送信し、ir=onの場合はInform-Requestを送信する、とのことでした。
Inform-Requestの送信は、"DHCPv6 サーバーにアドレス以外の情報を要求する"場合に使用するようです[7]
こちら[1:2]の内容によると、DHCPv6-PDでプレフィックスを受け取る場合には指定しない(もしくはir=off)、RA(ルータ広告)プロキシを使用する場合はir=onを指定するようです。
つまり、RAプロキシとして動作させたい場合はDHCPv6によるアドレス付与は不要なので、その場合はir=onを指定すると、RAプロキシとして正しく動作するようになる、ということではないかと思います。

今回の構成ではプロバイダからDHCPv6-PDでプレフィックスを受け取るのでir=onは指定しません。

ipv6 lan2 secure filter in 1010 1011 1012 2000
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 106

#
# IPv6 filter configuration
#
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 2000 reject * * * * *
ipv6 filter 3000 pass * * * * *

#
# IPv6 dynamic filter configuration
#
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * tcp
ipv6 filter dynamic 106 * * udp

フィルタはRTX810が生成してくれた内容をそのまま流用しています。

動作確認

RTX810のvlan1, vlan2につながっているノードから、こちら[8]などにアクセスして、IPv6でインターネットのサイトに接続できるかどうかを確認します。

また外部からvlan1, vlan2につながっているノードのグローバルユニキャストアドレス宛に通信できないこと(80番ポートが開いているノードがあるならブラウザで"http://[グローバルユニキャストアドレス]/"にアクセスできないこと)を確認します。

脚注
  1. IPv6 IPoE 対応機能 https://www.rtpro.yamaha.co.jp/RT/docs/ipoe/index.html#setting6 ↩︎ ↩︎ ↩︎

  2. IPv6アドレスの設定方法 ~手動/SLAAC/DHCPv6~ https://www.n-study.com/ipv6-detail/ipv6-address-configuration/ ↩︎ ↩︎

  3. IPv6アドレス - ユニキャストアドレス(グローバル、リンクローカル、サイトローカル) https://www.infraexpert.com/study/ipv6z3.html ↩︎

  4. 30.2.2 インタフェースのプレフィックスに基づく IPv6 アドレスの設定 https://www.rtpro.yamaha.co.jp/RT/manual/rt-common/ipv6/ipv6_interface_prefix.html ↩︎

  5. LAN分割機能 https://www.rtpro.yamaha.co.jp/RT/docs/lan-divide/index.html ↩︎

  6. 23.2.4 DHCPv6 の動作の設定 DHCP https://www.rtpro.yamaha.co.jp/RT/manual/nvr500/ipv6/ipv6_interface_dhcp_service.html ↩︎

  7. RTX830 の設定、IPv6 の話https://blog.ttk1.net/2020/12/25/RTX830_の設定、IPv6_の話 ↩︎

  8. あなたの IPv6 接続性をテストしましょう。 https://www.test-ipv6.com/index.html.ja_JP ↩︎

Discussion