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

IPv6環境をなんとかしたい

参考

ndppdでND Proxy

  • 環境
    • IIJmioひかり(光ネクスト→光コラボ) ひかり電話なし
    • eth0にONUが繋がっている
    • ER-X (EdgeOS v1.10.9)
  • 参考
  • 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/… が大量に出てくる

ER-X自身のホスト名を問い合わせると127.0.1.1が返ってくる

  • set service dns forwarding options no-hosts