Nov 1, 2020

EdgerouterXにNDプロキシーを入れてLAN側もIPv6通信をできるようにしてみた。

自宅内の LAN 側も IPv6 対応して、WAN 側と IPv6 通信を可能にしたいと思います。WAN 側は、IPoE(IPv6)通信でしたが LAN 側は IPv4 の通信となっていました。我が家の環境は、NTT 光(ひかり電話はなし)のため、LAN 側に IPv6 のアドレスを配布できないので、EdgeRouterX に ND プロキシー機能を追加して WAN 側と IPv6 の通信を可能にしたいと思います。

LAN 側に IPv6 を割当てます

switch0 に接続された LAN 側に IPv6 の設定を追加したいと思います。その他 FireWall や DNS などの設定は前回のものEdgeRouterX を IPoE と PPPoE にしてみた。と同じです。

...
interfaces {
    :
    switch switch0 {
        address 192.168.1.1/24
        description LAN2
        firewall {
            in {
                modify LAN_PBR
            }
        }
        ipv6 {
            address {
                eui64 2409:xx:xx:xx:xx:xx:xx:xx/64 ← eth0に割り振られたアドレスを設定
            }
            dup-addr-detect-transmits 1
            router-advert {
                cur-hop-limit 64
                link-mtu 1500
                managed-flag false
                max-interval 600
                other-config-flag true
                prefix ::/64 {
                    autonomous-flag true
                    on-link-flag true
                    valid-lifetime 2592000
                }
                reachable-time 0
                retrans-timer 0
                send-advert true
            }
        }
        :
    }
}

EdgeRouterX に ND プロキシーのインストール

このままでは、WAN 側と IPv6 通信できませんので EdgeRouterX に ND プロキシーをインストールしたいと思います。ND プロキーが動作していない場合は IPv6 が割り振られても ND(Neighbor Discovery)が流れてこないので WAN 側と IPv6 の通信をすることはできません。

今回は、Edgerouter X(ER-X) 用に ndppd をカンタンにビルドする (ひかり電話なし)を参考に EdgeRouterX に ND プロキシーをインストールします。コンパイルは、Docker サーバ(Podman)で Ubuntu サーバを立ち上げて MIPS(Little Endian)でビルドしました。こういう時は Docker サーバを持っていると楽だと感じます。ビルドしたらこれを EdgeRouterX に持っていきます。コピー先は、/bdppd/local/sbin とします。このディレトクリに ndppd と ndppd.initscript を配置します。また自動起動できるように/config/scripts/post-config.d に起動ようのスクリプトを作成します。

/config/scripts/post-config.d/ndppd
#!bin/bash
/ndppd/local/sbin/ndppd.initscript start

次に cdppd.con を作成します。WAN 側が eth0、LAN 側が switch0 の場合以下のようになります。

/etc/ndppd.conf
proxy eth0 {
   router no
   timeout 500
   autowire yes
   keepalive yes
   retries 3
   ttl 30000
   rule ::/0 {
      iface switch0
   }
}
 
proxy switch0 {
   router yes
   timeout 500
   autowire yes
   keepalive yes
   retries 3
   ttl 30000
   rule ::/0 {
      auto
   }
}

EdgeRouterX を再起動して ndppd が起動します。

IPv6 での通信のテスト

早速、IPv6 のテストをしたいと思います。まずクライアント Mac のネットワークを確認したいと思います。IPv6 のアドレスが 2 つ設定されています。OK です。

IPv6-Macネットワーク設定!

IPv6 の接続テスト

IPv6-Macネットワークテスト!

以上で LAN 側からも IPv6 通信が可能となりました。