Edgerouter Xでv6プラス固定IPを使う

目次

環境

脱PPPoEをするためにIPv4 over IPv6を使おうと思うのだが、一般に広く使われているv6プラス(MAP-E)や、transix(DS-Lite)などは、一つのIPv4アドレスを複数の契約者で共有するため利用できるポートが限られてしまう。 *1

そこで、固定IPオプションをつけることにより一つのIPv4アドレスを占有することができ任意のポートを使用できる。

www.jpne.co.jp

www.mfeed.ad.jp

これらは全てNGN網から固定IP終端装置に対してIPIPトンネルを張る。

v6プラス固定IP、transix固定IPのどちらかを選ぶことになるのだが、どうやら transix固定IPでは制限がかけられているらしいのでv6プラス固定IPを使用する。

qiita.com

しかし、v6プラス固定IPサービスを提供している事業者は数少ない。

www.jpne.co.jp

今回引っ越した新居には光コンセントがあったので小型ONUを簡単に出してくれるらしいフレッツコラボのenひかりを契約した。

前提

今回は光電話を契約しなかったため、/64プレフィックスがRAにより配布されているため、EdgerouterでNDproxyを導入する必要がある。

説明に用いている表記は、

# (configureモード)
$ (通常モード)

となっていて、configureモードから通常モードに移行した際はcommit; save; exitをしている。

RA Prefixの取得

回線の開通が済んだら、IPv6のPrefixを取得する。 ここで必要になるのは、

  • 隣ルータのリンクローカルアドレス : fe80::xxxx:xxxx:xxxx:xxxx
  • IPv6 Prefix : 240b:xxxx:xxxx:xxxx::/64

の二つ。

$ sudo radvdump
#
# radvd configuration generated by radvdump 2.16
# based on Router Advertisement from fe80::xxxx:xxxx:xxxx:xxxx
# received by interface eth0
#

interface eth0
{
        AdvSendAdvert on;
        # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
        AdvManagedFlag off;
        AdvOtherConfigFlag on;
        AdvReachableTime 300000;
        AdvRetransTimer 10000;
        AdvCurHopLimit 64;
        AdvDefaultLifetime 1800;
        AdvHomeAgentFlag off;
        AdvDefaultPreference medium;
        AdvSourceLLAddress on;

        prefix 240b:xxxx:xxxx:xxxx::/64
        {
                AdvValidLifetime 2592000;
                AdvPreferredLifetime 604800;
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr off;
        }; # End of prefix definition

}; # End of interface definition

内部LAN側のIPv6アドレスの定義

enひかりから通知された固定IP情報に記載されているインターフェイスIDをyyyy:yyyy:yyyy:yyyyとすると、内部LANのアドレスは240b:xxxx:xxxx:xxxx:yyyy:yyyy:yyyy:yyyy/64となる。

# set interfaces switch switch0 address '240b:xxxx:xxxx:xxxx:yyyy:yyyy:yyyy:yyyy/64'
# set interfaces switch switch0 description Local
# set interfaces switch switch0 ipv6 dup-addr-detect-transmits 1
# set interfaces switch switch0 ipv6 router-advert cur-hop-limit 64
# set interfaces switch switch0 ipv6 router-advert link-mtu 1500
# set interfaces switch switch0 ipv6 router-advert managed-flag false
# set interfaces switch switch0 ipv6 router-advert max-interval 600
# set interfaces switch switch0 ipv6 router-advert other-config-flag true
# set interfaces switch switch0 ipv6 router-advert prefix '240b:xxxx:xxxx:xxxx::/64' autonomous-flag true
# set interfaces switch switch0 ipv6 router-advert prefix '240b:xxxx:xxxx:xxxx::/64' on-link-flag true
# set interfaces switch switch0 ipv6 router-advert prefix '240b:xxxx:xxxx:xxxx::/64' valid-lifetime 2592000
# set interfaces switch switch0 ipv6 router-advert reachable-time 0
# set interfaces switch switch0 ipv6 router-advert retrans-timer 0
# set interfaces switch switch0 ipv6 router-advert send-advert true

IPv6のデフォルトゲートウェイを対岸のルータとする。

set protocols static route6 '::/0' next-hop 'fe80::xxxx:xxxx:xxxx:xxxx' interface eth0

IPIPトンネルを張る

enひかりから通知された固定IP情報に記載されている[固定IPアドレス]と[BRアドレス]を使用する。

# set interfaces ipv6-tunnel v6tun0 address [固定IPアドレス]
# set interfaces ipv6-tunnel v6tun0 description v6plus-static
# set interfaces ipv6-tunnel v6tun0 encapsulation ipip6
# set interfaces ipv6-tunnel v6tun0 firewall in name WAN_IN
# set interfaces ipv6-tunnel v6tun0 firewall local name WAN_LOCAL
# set interfaces ipv6-tunnel v6tun0 local-ip '240b:xxxx:xxxx:xxxx:yyyy:yyyy:yyyy:yyyy'
# set interfaces ipv6-tunnel v6tun0 mtu 1452
# set interfaces ipv6-tunnel v6tun0 multicast disable
# set interfaces ipv6-tunnel v6tun0 remote-ip '[BRアドレス]'
# set interfaces ipv6-tunnel v6tun0 ttl 64

NAT・ルーティングの設定

set service nat rule 5010 outbound-interface v6tun0
set service nat rule 5010 type masquerade
set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0

mss-clampの設定

set firewall options mss-clamp interface-type all
set firewall options mss-clamp mss 1412

NDProxyによるIPv6環境

以下を参考にndppdを導入する

blog.akashisn.info

速度測定

f:id:akashisn:20220310155535p:plain

EdgerouterのCPU性能がボトルネックになってるよう...

f:id:akashisn:20220310155700p:plain

次はx86_64なPCでVyOSを使ってやってみたいな

*1:自宅鯖(80/443)や一部のゲームで使用できない場合があるそう