SEIL で NGN IPv6 ネイティブ (IPoE) 接続を試す

先日 (2011/7/21) NTT 東日本/西日本のフレッツ光ネクストで「インターネット(IPv6 IPoE)接続」(以下 IPoE方式) のサービス提供が開始されました。それに合わせて SEIL も対応ファームウェア(SEIL/X,B1 3.40 版、SEIL/x86 1.90 版)をリリースしています。今回は SEIL を使った IPoE方式への接続方法をご紹介します。

記事一覧

IPoE方式を用いる場合、ルータは必ずしも必要ではありませんが、導入することで以下のようなメリットがあります。

※ 弊社 (IIJ) では IPoE方式に対応した個人向け接続サービスとして IIJmio FiberAccess/NF を提供しています。詳しくは以下をご覧ください。

フレッツ 光ネクストの「インターネット(IPv6 IPoE)接続」に対応した新サービス「IIJmio FiberAccess/NFサービス」提供開始のお知らせ

注:

(2014/10/28 追記)

ひかり電話契約有りの場合に配布されるプレフィクスの長さが変更されたため記事を更新しました。以前は ONU 配下に /48 が配布されていましたが、現在は /56 が配布されています。

IPoE方式 について

IPoE方式は、先日当ブログでご紹介した「インターネット(IPv6 PPPoE)接続」 (以下 PPPoE方式) と並んで、フレッツ光ネクストで利用できる IPv6 の接続方式です。PPPoE方式への接続方法をご紹介しているエントリについては以下をご覧ください。

SEIL/x86でNGN IPv6接続を試す

PPPoE方式とIPoE方式の違いをまとめると以下のようになります。

IPoE方式

  • Ethernet上で直接アドレスが払い出されるため、IPv6通信のために専用のPPPoEセッションを消費する、といったことがありません。
  • 利用するにはフレッツ・v6オプションを申し込む必要があります。
  • Ethernet で直接通信できるので PPPoE のオーバーヘッドがなく高速に通信できます。

PPPoE方式

  • フレッツ・v6オプションの申込みが不要なため簡単に導入できます。
  • PPPoEのセッションを IPv6 接続用に余計に1つ消費します。
  • NGN網とインターネットで使用するプレフィクスや経路が異なるため、NGN網への通信を行う場合にトンネルアダプタが必要になります。

さらに、IPoE方式ではひかり電話の契約の有無でネットワークの構成が変わってきます。

パラメータ ひかり電話有り ひかり電話無し
プレフィクス ONU配下には/56で配布されるが、HGWの先はDHCPv6にて/60で分割配布される ONU配下に/64が1つRAで配られる
グローバルアドレス DHCPv6で取得した情報を元に設定 RAで取得した情報を元に生成
デフォルトルート RAで取得 RAで取得
DNSアドレス DHCPv6 (Stateless)DHCPv6

ひかり電話有りの場合

ひかり電話がある場合、ONUの下にホームゲートウェイ(HGW)と呼ばれる機器が設置されます(ONUとホームゲートウェイが一体型の場合もあります)。この場合、ONU配下には/56のプレフィクスが配布されてきますが、さらにその先のホームゲートウェイではそれが /60 に分割されて配布されます。つまり

  • ONU配下
    • 2409:1x:xxxx:xx00::/56
  • HGW配下
    • 2409:1x:xxxx:xxN0::/60

のようになります。このことから、実際には 60 - 56 = 4(bit)ぶんの、16個のプレフィクスを利用できることが分かります。そのうち1つはHGWが利用するため、HGWの配下に最大15台までSEILを並べて同時利用することができることになります(実際にやる人はいないと思いますが...)。

ひかり電話無しの場合

ひかり電話が無い場合、 RAで配られる/64 のプレフィクスひとつが利用できます。LAN内の機器は ICMPv6 のルータ広告 (Router Advertisement, RA) メッセージからプレフィクスを得ます。また、DNS など各種サーバ関連の情報は (Stateless) DHCPv6 プロトコルを使って取得します。ただ、正直に言ってしまうとこの構成でルータを挟む構成にする意味はあまり無い、と言えるかもしれません。

ということで本記事では、複数のセグメントが作れるひかり電話の契約がある場合の設定方法について説明します。

ネットワークの構成

ホームゲートウェイの配下ではルータ広告が送信されると共に DHCPv6-PD が利用できます。SEILはホームゲートウェイの配下に設置します。lan1インタフェース をホームゲートウェイに接続し、lan0インタフェース に SEIL 配下の端末を接続します。

SEIL の設定

SEIL の設定は以下の通りです。

 1  route6 add default router-advertisement interface lan1
 2  dhcp6 client enable
 3  dhcp6 client interface lan1
 4  dhcp6 client prefix-delegation subnet lan0 sla-id 0x1 enable
 5  dhcp6 server interface lan0 enable
 6  dhcp6 server interface lan0 dns add dhcp6
 7  rtadvd enable
 8  rtadvd interface lan0 enable
 9  rtadvd interface lan0 other-flag on
10  rtadvd interface lan0 advertise auto

設定をファイル形式で取得する場合はこちらからダウンロードしてください。

インタフェース名等はご利用の環境に合わせて適宜変更してお使いください。

設定の詳細

1行目の

 1 route6 add default router-advertisement interface lan1

と 3行目の

 3 dhcp6 client interface lan1

以外は、先日「SEIL/x86でNGN IPv6接続を試す」の記事で使った PPPoE方式 の設定と同じです。

PPPoE方式 では PPPoEインタフェース にデフォルト経路を設定していました。それに対し IPoE方式ではルータ広告 (Router Advertisement) メッセージを元にデフォルト経路を設定します。

デフォルト経路の設定

 1  route6 add default router-advertisement interface lan1

IPv6 のデフォルト経路をルータ広告メッセージの送信元に向けるように設定します。ルータ広告メッセージを受信するインタフェースには lan1インタフェース を指定します。

動作確認には show status route6 コマンドを用います。以下のように Destination が default の行が追加されていれば OK です。

# show status route6
Flags: C - Connected, M - Miscellaneous, O - OSPFv3, R - RIPng, S - Static
       * - System route, ! - inconsistent

Destination              Gateway                  Interface Flags  Dist.
default                  fe80::225:dcff:feXX:XXXX
                                                  lan1      S*        1
...(省略)

DHCPv6クライアント の設定

 3 dhcp6 client interface lan1

PPPoE方式の設定では DHCPv6クライアントの動作インタフェースとして pppoe0インタフェースを指定していました。今回は Ethernet 上で直接やり取りしますので lan1インタフェースを指定します。

動作確認は show status dhcp6 コマンドを用います。

以下のように DHCPv6クライアント が running 状態になった上で各種情報が取得できていれば OK です。

# show status dhcp6
========================================
DHCPv6 client: running

----------------------------------------
Interface:          lan1
State:              bound

Client DUID:        00:03:00:01:00:e0:4d:XX:XX:XX
Server DUID:        00:03:00:01:00:25:dc:XX:XX:XX
Server Preference:  0

Delegated Prefix:   2409:10:100:2e0::/60
    preferred lifetime:      14400
    valid lifetime:          14400
    time to renew  (T1):      7200
    time to rebind (T2):     12600

DNS Servers:        2409:10:100:200:225:dcff:feXX:XXXX

SNTP Servers:       2404:1a8:1102::a
                    2404:1a8:1102::b

Last Updated:       2012/01/01 09:01:04

念のため lan0インタフェース にアドレスが付与されていることも show status interface lan0 コマンドで確認しておきます。

# show status interface lan0
interface lan0:
        Description=""
        Status=link up, administratively up
        MTU=1500
        LastChange=2012/01/01 09:00:48
        Ipkts=1322, Ierrs=0, Opkts=2682, Oerrs=0, Colls=0
        InOctets=126912, OutOctets=276246, InDrops=0, OutDiscards=9
        InUnknownProtos=0
        Media=auto (100baseTX)
        EthernetAddress=00:E0:4D:10:XX:XX
        IPv6 address=fe80::2e0:4dff:feXX:XXXX%lan0 prefixlen=64 scopeid 0x1
        IPv6 address=2409:10:100:2e1::1 prefixlen=64 scopeid 0x1
        IPv6 address=2409:10:100:2e1:: prefixlen=64 scopeid 0x1 anycast

Prefix Delegation で得たプレフィクス (2409:10:100:2e0::/60) と sla-id (0x01) から (2409:10:100:2e1::/64) のプレフィクスが生成され、その後ろに ::1 をつけた 2409:10:100:2e1::1 というアドレスが付与されていることが見てとれます。

lan1インタフェースにアドレスを付与するには

上記の設定では lan1インタフェースには IPv6グローバルアドレスが付与されない状態になります。lan1インタフェース にアドレスを付与したい場合は以下を設定してください。

interface lan1 add router-advertisement

この設定ではルータ広告に含まれる Prefix Information オプションを元に IPv6グローバルアドレスを自動生成して lan1インタフェース に付与します。

このアドレスを自動設定する方法はステートレスアドレス自動設定 (Stateless Address Autoconfiguration) と呼ばれています。Ethernet のインタフェースでは付与されるアドレスの下位 64bit (インタフェースID) は Modified EUI-64 と呼ばれる識別子から生成されます。Modified EUI-64 は MACアドレス の 48bit (6オクテット) を元に 3オクテット目と 4オクテット目の間に固定の 2オクテット (0xFFFE) を挿入した上で 1オクテット 目の MSB から 7bit 目 (ユニバーサル・ローカルビットと呼ばれます) を反転することで得られます。

動作確認は show status interface lan1 を用います。以下のように "autoconf" が付いた IPv6グローバルアドレス が付与されていれば OK です。

# show status interface lan1
interface lan1:
        Description=""
        Status=link up, administratively up
        MTU=1500
        LastChange=2012/01/01 09:00:36
        Ipkts=1072, Ierrs=0, Opkts=1300, Oerrs=0, Colls=0
        InOctets=98356, OutOctets=116135, InDrops=0, OutDiscards=0
        InUnknownProtos=0
        Media=auto (1000baseT Full-Duplex)
        EthernetAddress=00:E0:4D:XX:XX:XX
        IPv6 address=fe80::2e0:4dff:feXX:XXXX%lan1 prefixlen=64 scopeid 0x2
        IPv6 address=2409:10:100:200:2e0:4dff:feXX:XXXX prefixlen=64 scopeid 0x2 autoconf

IPv6デフォルト経路と DHCPv6クライアント の動作するインタフェース以外の設定については PPPoE方式と同様です。詳細については「NGN IPv6への接続の設定(dhcp6, rtadvd)」の記事をご覧ください。

以上で SEIL を使って IPoE方式に接続することができました。今回 IPv6アドレス は以下のように払い出されました。

おわりに

今回は、最も単純に IPoE方式の環境で SEIL を使う方法についてご紹介しました。外部からの攻撃に備えたパケットフィルタの書き方など、IPoE方式の環境での SEIL の活用例は、今後改めてご紹介していきたいと思います。

IPoE方式 は Ethernet で直接通信ができるため PPPoE方式や、その他トンネリングを使った IPv6 接続に比べてとてもシンプルな構成になります。IPv6 対応をお考えの際には、導入を検討してみてはいかがでしょうか。

© Internet Initiative Japan Inc.