EdgeRouter X – 番外編4. フレッツで IPv6 / IPv4 同時使用

お久しぶりです。そういえば、ひかり電話を契約しないでも EdgeRouter でフレッツの IPv6 (IPoE) と IPv4 (PPPoE) を同時に使う手軽な方法があります。とりあえずメモがわりに記事を書いてみます。

ひかり電話とは

フレッツ系のプロバイダーで契約できる IP 電話です。これがあると一緒にホームゲートウェイが貸与となり、ホームゲートウェイからルーターには IPv6 が DHCPv6-PD にてプレフィックス /60 で降ってきます。ルーターはさらにこれを /64 のサブネットに分割し、配下の端末にグローバルな IPv6 アドレスを割り当てることができます。これによってルーター配下でも IPv6 が使えるようになります。

ひかり電話がないと

なんとルーターに RA でプレフィックス /64 の IPv6 アドレスしか降ってきません。プレフィックス /64 はこれ以上サブネットに分割できないので、ルーターは配下に IPv6 を割り当てることができません。そのためルーター配下の端末で IPv6 を使うには、ルーター配下にも RA を転送してやらなければなりません。が、しかし RA はレイヤー2のプロトコルなので、そのままではルーター配下には流れません。日本のフレッツ対応のルーターは RA パススルー機能があるようですが、 EdgeRouter にはそんな機能はなく、レイヤー2なので基本的には WAN と LAN をブリッジ接続をすることになります。が、そうすると今度は WAN – LAN 間で IPv4 のルーティングやマスカレードができなくなってしまします。困りましたね。

ではどうするか

レイヤー2なので・・インターネット側(つまり ONU や VDSL モデム)と EdgeRouter の間にスイッチングハブを入れて、 WAN ポート (eth0) と LAN ポート (eth1) を両方スイッチングハブにつないでやります。するとそのスイッチングハブにつながっている他の端末にも RA が配信されるようになり、グローバル IPv6 アドレスが割り当てられるようになります。この場合 PPPoE のフレームも LAN 内を流れることになりますが、他の端末は PPPoE のフレームをシカトするので大丈夫です。また同時に eth1 から出たプライベート IPv4 アドレスのフレームが ONU や eth0 の方に流れることになりますが、 eth0 は PPPoE の設定がされているので、うっかり DHCP を受け取る設定などしてなければ IPv4 はシカトします。また ONU や VDSL モデムも当然 IPv4 は PPPoE 以外シカトしなければいけないので、大丈夫です。

さらに

これで IPv6 と IPv4 の同時使用はできるようになります。しかしこれでは家中の端末にグローバル IPv6 アドレスが行き渡ってしまうので、少々セキュリティ的に心もとない感じです。なんとか IPv6 アドレスを割り当てる端末を、ファイアウォールのある Mac などに限定できないもんでしょうか。

その場合は

VLAN の設定できるスマートスイッチを使うと良さそうです。やり方はこんな感じです。

  1. ONU や VDSL モデムのつながっているポートと EdgeRouter の eth0 がつながっているポートの “ネイティブ” VLAN を VLAN 1 に設定
  2. LAN 内の端末がつながっているポートはデフォルトの VLAN 0 のまま
  3. LAN 内の端末がつながっているポートに “タグ付き” VLAN 1 を追加
  4. Mac の Ethernet や WiFi に VLAN 1 を追加

タグ付き VLAN のフレームは VLAN を設定してない端末にはシカトされます。こうすることで、 IPv6 をやりたい端末にだけ VLAN を設定して、選択的に IPv6 を送受信できるようになります。また、特にメリットはありませんが、 WAN 側にプライベート IPv4 ベースのフレームが流れないようにもできます。

Mac のネットワークインターフェースに VLAN を追加するやり方はこんな感じです。

MAC OSXでVLAN(802.1q)の設定を行う

比較してみると

こんな感じになります。

ちなみに

EdgeRouter でひかり電話なしのフレッツ系 IPv6 (IPoE) を使う場合の、ファイアーウォールと WAN ポートの設定を抜粋するとこんな感じです。

firewall {
    ipv6-name WANv6_IN {
        default-action drop
        description WAN-to-internal
        rule 10 {
            action accept
            description Allow-established/related
            state {
                established enable
                related enable
            }
        }
        rule 500 {
            action drop
            description Drop-invalid-state
            state {
                invalid enable
            }
        }
    }
    ipv6-name WANv6_LOCAL {
        default-action drop
        description WAN-to-router
        rule 10 {
            action accept
            description Allow-established/related
            state {
                established enable
                related enable
            }
        }
        rule 30 {
            action accept
            description Allow-ICMPv6
            protocol icmpv6
        }
        rule 40 {
            action accept
            description Allow-DHCPv6
            destination {
                port 546
            }
            protocol udp
            source {
                port 547
            }
        }
        rule 500 {
            action drop
            description Drop-invalid
            state {
                invalid enable
            }
        }
    }
}

interfaces {
    ethernet eth0 {
        description Internet
        duplex auto
        firewall {
            in {
                ipv6-name WANv6_IN
            }
            local {
                ipv6-name WANv6_LOCAL
            }
        }
        ipv6 {
            address {
                autoconf
            }
            dup-addr-detect-transmits 1
        }
    }
}

どうでしょうか。今回は下記のようなページを参考にしました。

EdgeRouter設定メモ: IPv6/IPoE + DS-Liteでインターネット高速化

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


yabe.jp » Gadgets » EdgeRouter X – 番外編4. フレッツで IPv6 / IPv4 同時使用