Ubiquiti Networks EdgeRouter ER-X

  • 2018/06/08 購入
  • VyOSのかわりにDS-Liteさせてる

IPv6環境をなんとかしたい

参考

ndppdでND Proxy

  • 環境
    • IIJmioひかり(光ネクスト→光コラボ) ひかり電話なし
    • eth0にONUが繋がっている
  • 参考
  • ndppd.tar.gzを/config/user-dataへ転送

    $ cd /config/user-data
    $ tar xvf ndppd.tar.gz
  • ndppd.initscriptとndppd.confを編集(インターフェース名 WAN側をeth0/LAN側をswitch0とする)
  • 自動起動設定

    $ chmod 755 ndppd/ndppd.initscript
    $ cd /config/scripts/post-config.d
    $ touch ndppd
    $ chmod 755 ndppd
    $ vi ndppd
    #!/bin/bash
    /config/user-data/ndppd/ndppd.initscript start
  • 上記ndppd.tar.gzに含まれるndppdのバイナリはmips64elみたいなのでER-Xでは動かない
  • ndppd_0.2.5-3_mipsel.debを試してみる
    # ldd ./ndppd
    ./ndppd: /usr/lib/mipsel-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./ndppd)
    ./ndppd: /usr/lib/mipsel-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./ndppd)
            libstdc++.so.6 => /usr/lib/mipsel-linux-gnu/libstdc++.so.6 (0x77078000)
            libm.so.6 => /lib/mipsel-linux-gnu/libm.so.6 (0x76fea000)
            libgcc_s.so.1 => /lib/mipsel-linux-gnu/libgcc_s.so.1 (0x76fae000)
            libc.so.6 => /lib/mipsel-linux-gnu/libc.so.6 (0x76e32000)
            /lib/ld.so.1 (0x771c2000)
  • libstdc++が古そう
    # strings /usr/lib/mipsel-linux-gnu/libstdc++.so.6 | grep CXX
    GLIBCXX_3.4
    GLIBCXX_3.4.1
    GLIBCXX_3.4.2
    GLIBCXX_3.4.3
    GLIBCXX_3.4.4
    GLIBCXX_3.4.5
    GLIBCXX_3.4.6
    GLIBCXX_3.4.7
    GLIBCXX_3.4.8
    GLIBCXX_3.4.9
    GLIBCXX_3.4.10
    GLIBCXX_3.4.11
    GLIBCXX_3.4.12
    GLIBCXX_3.4.13
    GLIBCXX_3.4.14
    GLIBCXX_3.4.15
    GLIBCXX_3.4.16
    GLIBCXX_3.4.17
    CXXABI_1.3
    CXXABI_1.3.1
    CXXABI_1.3.2
    CXXABI_1.3.3
    CXXABI_1.3.4
    CXXABI_1.3.5
    CXXABI_1.3.6
    CXXABI_TM_1
    #<GLIBCXX_DEBUG_MESSAGE_LENGTH
  • EdgeOS 1.xはDebian wheezyベースっぽいがwheezyのパッケージにndppdはまだ無い
  • EdgeOS 2.0だとstretchのパッケージが使えそう
  • 2.0.1が不具合で取り下げられてる
  • クロスコンパイルするか
  • eth0には2xxx:xxxx:xxxx:xxxx::/64なアドレスが設定される
  • switch0はリンクローカルアドレスのまま
    • Neighbor Solicitaion/Neighbor AdvertisementはndppdがプロキシしてくれるがWAN側のルータからのRouter AdvertisementはLAN側には転送されない?
      • ndppdのREADMEには ‘ndppd’ currently only supports Neighbor Solicitation Messages and Neighbor Advertisement Messages. とある
    • LAN向けはEdgeRouterからRAを送る
    • prefixをどうやって設定するか?
      • switch0にグローバルなアドレスが設定されていないためか,prefix ::/64 だとクライアントに 2xxx:xxxx:xxxx:xxxx::/64 なアドレスが設定されなかった
      • 現状は手設定しているがスクリプトでやらすか
         switch switch0 {
             address 192.168.xxx.xxx/24
             address fe80::1/64
             description Local
             ipv6 {
                 dup-addr-detect-transmits 1
                 router-advert {
                           :
                     prefix 2xxx:xxxx:xxxx:xxxx::/64 {
                         autonomous-flag true
                         on-link-flag true
                     }
                     send-advert true
                 }
             }
           :
         }
  • man radvd.confによると

Special prefix “::/64” is also supported on systems that implement getifaddrs() (on other systems, configuration activation fails and radvd exits). When configured, radvd picks one non-link-local prefix assigned to the interface and starts advertising it. This may be applicable in non-6to4 scenarios where the upstream prefix might change. This option is incompatible with Base6to4Interface option. AdvRouterAddr option is always enabled when this configuration is used.

  • 少し変更 (2019/05/22)
    • switch0にはeth0に割り当たったアドレスのプレフィックスを元に修正EUI64のアドレスを自動設定
    • router-advertのprefixは::/64とする
    • name-server追加
       switch switch0 {
           address 192.168.xxx.xxx/24
           address fe80::1/64
           description Local
           ipv6 {
               address {
                   eui64 2xxx:xxxx:xxxx:xxxx::/64
               }
               dup-addr-detect-transmits 1
               router-advert {
                         :
                   name-server fe80::1
                   prefix ::/64 {
                       autonomous-flag true
                       on-link-flag true
                   }
                   send-advert true
               }
           }
         :
       }

df -h すると /opt/vyatta/config/… が大量に出てくる