フレッツ光ネクストのIPv6との戦い

IPv6のことがある程度知っている前提で書いています。
分からない方は、勉強しながら見てください。

ひかり電話の有無で変わるprefix

これが全ての元凶でした。
IPv6 IPoEで利用しようとすると、ひかり電話の有無でIPv6のアドレス取得方法が異なるうえ、prefixが異なるという、大変厄介なモノです。

ひかり電話ありの場合

ひかり電話が利用できる状態の時だと、DHCPv6-PD+RAでフレッツ網からIPv6のアドレスを取得してきます。
その時、NTTのホームゲートウェイがprefix/56で受け取ります。
ホームゲートウェイ配下に設置しているRouterにはDHCPv6-PDで/60のprefixを配ってきます。

ひかり電話なしの場合

ひかり電話が利用できない状態の時だと、RAでフレッツ網からprefix/64のアドレスしかもらうことができません。
そのため、Routerを介したネットワークを組むことができなくなり、インターネット側とLAN側をL2で繋がないといけなくなります。

セキュリティとネットワーク構築の観点から、インターネット側とLAN側をIPv6のみL2接続するのはいかがなモノかと思うところがあります。

RouterBoardでの苦悩

さて、ここからが本題です。

ひかり電話が無い状態でどうRouterBoardを用いてIPv6ネットワークを構築するかです。
結果からお伝えします。”IPv6 PPPoE”を利用するです。

フレッツ光ネクスト特有のわけわからん仕様を海外製のRouterBoardが対応してるわけありませんから。

数日、RAが直接クライアントのマシンに届くように、インターネット側のポートもLAN側のbridgeに割り当てて、ごにょごにょしようとしましたが、PPPoEやDHCPの問題がでて諦めました。一応、RAはクライアントのマシンに届き、IPv6のインターネットはできましたよ。

7 thoughts on “フレッツ光ネクストのIPv6との戦い”

  1. g_yotuya

    これも、課題の一つですね。
    某所で話題のscriptを配置しておきます。
    自分はrOSの後ろでシェルを走らせ、これを走らせてたりします。

    see U
    ———————————————————————————————————以下script

    #!/bin/bash

    eth=eth0

    while :
    do
    ping -6 ff02::2 -c 3 >/dev/null
    tcpdump -i $eth -x -t -n -l -c50>/dev/shm/ra

    if cat /dev/shm/ra |grep -sq “router advertisement, length 56”; then

    cat /dev/shm/ra |sed -n -e “/router advertisement, length 56/,/0x0050/p” >/dev/shm/ipv6
    cat /dev/shm/ipv6|sed -e ‘1,2d’|sed -e ‘2,4d’|sed -n ‘1,2p’|sed -e “s/\t0x0010: //”|sed -e “s/\t0x0050: //”|sed -e “s/ /:/g”>/dev/shm/ra
    busybox ifconfig $eth >/dev/shm/eth
    cat /dev/shm/eth |grep Scope:Link|sed -e “s/ inet6 addr: fe80:://”|sed -e “s#/64 Scope:Link##” >> /dev/shm/ra
    cat /dev/shm/ra |sed -n ‘1p’>/dev/shm/gw
    cat /dev/shm/ra |sed -n ‘2p’>/dev/shm/address
    cat /dev/shm/ra |sed -n ‘3p’>/dev/shm/mac

    gw=`cat /dev/shm/gw`
    address=`cat /dev/shm/address`
    mac=`cat /dev/shm/mac`

    gw=`echo $gw|cut -c 1-19`
    address=`echo $address|cut -c 1-19`

    gw=`echo route -A inet6 add default gw fe80::$gw dev $eth`
    address=`echo busybox ifconfig $eth add $address:$mac/64`

    eval $gw
    eval $address

    if ! echo “$address”|grep -sqE “0000:0000:”;then
    break
    fi
    busybox ifconfig $eth down
    busybox ifconfig $eth up
    fi

    if cat /dev/shm/ra |grep -sq “router advertisement, length 112”; then

    cat /dev/shm/ra |sed -n -e “/router advertisement, length 112/,/0x0080/p” >/dev/shm/ipv6
    cat /dev/shm/ipv6|sed -e ‘1,2d’|sed -e ‘2,7d’|sed -n ‘1,2p’|sed -e “s/\t0x0010: //”|sed -e “s/\t0x0080: //”|sed -e “s/ /:/g”>/dev/shm/ra
    busybox ifconfig $eth >/dev/shm/eth
    cat /dev/shm/eth |grep Scope:Link|sed -e “s/ inet6 addr: fe80:://”|sed -e “s#/64 Scope:Link##” >> /dev/shm/ra
    cat /dev/shm/ra |sed -n ‘1p’>/dev/shm/gw
    cat /dev/shm/ra |sed -n ‘2p’>/dev/shm/address
    cat /dev/shm/ra |sed -n ‘3p’>/dev/shm/mac

    gw=`cat /dev/shm/gw`
    address=`cat /dev/shm/address`
    mac=`cat /dev/shm/mac`

    gw=`echo $gw|cut -c 1-19`
    address=`echo $address|cut -c 21-39`

    gw=`echo route -A inet6 add default gw fe80::$gw dev $eth`
    address=`echo busybox ifconfig $eth add $address:$mac/64`

    eval $gw
    eval $address

    if ! echo “$address”|grep -sqE “0000:0000:”;then
    break
    fi
    busybox ifconfig $eth down
    busybox ifconfig $eth up
    fi

    done

    rm /dev/shm/gw /dev/shm/address /dev/shm/ipv6 /dev/shm/ra /dev/shm/eth /dev/shm/mac

    Reply ↓
    1. Hiroki Chinen Post author

      情報ありがとうございます。
      何かの機会に試してみたいと思います

      Reply ↓
  2. 匿名

    個人的な所感ですが,nativeにIPv6をもってくるIPoEよりも
    NGNを跨ぐためにPPPoEを使うという日本独自のPPPoEのほうが
    IPv6の受け取り方としてはフレッツ独自では……

    Reply ↓
    1. Hiroki Chinen Post author

      そうですよね。。。
      ひかり電話の有無でアドレスの振り方を変えずに、DHCPv6でアドレス振って欲しいです。

      Reply ↓
  3. inshin

    すみません、通りすがりのOpenWrtを使ってるものです。
    純粋に思ったのが、RouterBoardにRA, HDCPv6, NDPなどのリレーモードはないんでしょうか?

    Reply ↓
    1. Hiroki Chinen Post author

      返信遅くなりました。
      リレーとして動く機能は無さそうです(見聞きした記憶が無いです)。NGN網のやり方が世界的に見ても独特なのかもしれないです。

      Reply ↓
  4. hatta

    IPv6 PPPoEは、設備投資の観点から、普及することは無いと思われます。
    確かに、日本独自の実装かもしれませんが、なんとか対応してもらいたいものです。

    Reply ↓

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です