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 モデムにつなげば、実は LAN 内にすんなり RA と IPv6 が行き渡ります。つまり IPoE 対応という事は、そのままスイッチングハブつなげば IPv6 が使えるということなんですね。

ということで ONU や VDSL モデムと EdgeRouter の間にスイッチングハブを入れて、 WAN ポート (eth0) と LAN ポート (eth1) 両方とも、そして LAN 内の他の端末も全部スイッチングハブにつないでやります。するとそのスイッチングハブにつながっている他の端末にも RA が配信されるようになり、グローバル IPv6 アドレスが eth0 と他の端末に割り当てられるようになります。 eth1 は RA を受け取らないように、 autoconf など設定しないようご注意ください。

この場合 PPPoE のフレームも eth1 経由で LAN 内を流れることになりますが、他の端末は PPPoE のフレームをシカトするので大丈夫です。また同時に eth1 から出たプライベート IPv4 アドレスのフレームが ONU や eth0 の方に流れることになりますが、 eth0 は PPPoE の設定がされているので、うっかり IPv4 DHCP を受け取る設定などしてなければ IPv4 はシカトします。また ONU や VDSL モデムも当然 IPv4 は PPPoE のフレーム以外シカトしなければいけないので、大丈夫です。

さらに

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

その場合は

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

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

タグ付き VLAN のフレームは VLAN を設定してない端末にはシカトされます。こうすることで、 IPv6 をやりたい端末にだけ VLAN 2 を設定して、選択的に 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) 接続を試す

ちなみに ndppd をインストールすると、日本のフレッツ対応ルーターの ND プロキシ ( もしくは RA プロキシ ) 機能のように RA を LAN に流すようにできる模様です。それであればこのポストのやり方のようにスイッチングハブを使う必要はないですね。でもちょっと難しそうです。

ndppd は最近は apt を使ってインストールできるようです。 apt を使うにはまずリポジトリを登録します。 EdgeRouter 2.0.x 系だとこんな感じです。

configure
set system package repository stretch components 'main contrib non-free'
set system package repository stretch distribution stretch
set system package repository stretch url 'http://archive.debian.org/debian/'
commit
save
exit

そして apt を使ってインストールします。

sudo apt install ndppd

下記のようなサイトを参考にするとよいかもしれません。

EdgeRouter X (ER-X) で ndppd を動かす

Ubiquiti Networks EdgeRouter ER-X

Set up IPv6 without Prefix Delegation


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