Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@sho7650

Edgerouter X(ER-X) 用に ndppd をカンタンにビルドする (ひかり電話なし)

More than 1 year has passed since last update.

この度、無事にIPoE環境にすることができたので、そのへんの諸々を記録しておくことにします。

(updated 2020/5/4: ndppd.conf について追記)

IPv6を利用するにあたって、ひかり電話なし、での Edgerouter ではNDプロキシがないことで、ndppdをどうにかしてクロスコンパイルしながら、Edgerouter 本体へ持っていかなければなりません。できる限り省力化して、かつ誰でも実装できるように、Dockerコンテナとソースコードを準備しましたので、そちらを使ったやり方を紹介します。

前提条件

  • docker が動かせること
  • git コマンドが動作すること
  • Edgerouteへsshできること

※ EdgeMax(ER-X用) firmware 1.10.11で確認していますが、2.xでもきっと動くでしょう。きっと。

実行手順

github にもさらっと書いていますが、4回の手順で Edgerouter向けのndppdが準備できます。

  1. git clone する
  2. docker を起動する
  3. コンパイルする
  4. scp する

1. git clone する

適当なワーキングディレクトリへ移って、git clone します。本家のではなく、わたしのところへForkしたものなので、まちがわずに。

git clone https://github.com/sho7650/ndppd.git

2. docker を起動する

MIPS(Little Endian)用にコンパイラがすでに準備されたUbuntuコンテナイメージで、ndppdディレクトリをマウントしつつ起動させます。

docker run -v $PWD/ndppd:/ndppd -it --rm sho7650/mipsel

3. コンパイルする

もうすでに、Edgerouter用の MIPS(Little Endian)でコンパイルできるようなMakefileに変更してありますので、ディレクトリを移ってmakeするだけです。

cd /ndppd
make

4. scp する

もうこれでndppdの実行ファイルは準備できました。dockerを終了して、ワーキングディレクトリ内から、scpを使って Edgerouter へファイルを転送します。せっかくなので、起動スクリプトも準備しましたから、それらも該当のディレクトリへ移してください。

scp ndppd <user>@<hostname>:/ndppd/local/sbin
scp scripts/ndppd <user>@<hostname>:/config/scripts/post-config.d
scp scripts/ndppd.initscript <user>@<hostname>:/ndppd/local/sbin

すでにsshでEdgerouterへログインできることが前提なのと、事前にEdgerouter側に/ndppd/local/sbinディレクトリを掘っておく必要があります。

例えばこんな感じで。ファイルをコピーする時のユーザー権限など気をつけてください。ここ以下の作業は Edgerouter側で実行しますので、お間違いなきよう。

mkdir -p /ndppd/local/sbin

ファイルをコピーしたあと、ユーザによってはrootとは異なっている可能性が大なので、chownしとくと良いでしょう。

chown -R root /ndppd
chown root /config/scripts/post-config.d/ndppd

5. ndppd.conf を準備する

構成にもよりますが、ここでは 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
   }
}

各項目の意味は次のとおりです。

基本形式

proxy <interface名> {
  rule 1234:5678::/96 {
  }
}

proxyとその中に含まれるruleが必須項目です。ndppdのlistenするインタフェイスをproxyに指定し、ターゲットとなる該当のIPv6アドレスをruleに記述します。rule内には転送先のインタフェイスを指定します。

proxy内のオプション

proxy <interface名> { 〜 } には各種オプションが設定可能です。

  • router: Neighbor Advertisementを流すかどうかを指定します。主にルータ内のLAN側に配置されるIPv6端末の情報をWAN側に提供する場合にyesにします
  • timeout: ruleで指定した対象にNeighbor Advertisementを転送して待機するまでの時間です
  • ttl: proxyで保持する情報をどの程度の期間キャッシュへ保持するかを指定します
  • autowire: Neighbor Advertisementを受信したときに、ルーティングテーブルに自動的にホストエントリーを作成するかどうかを指定します
  • keepalive: セッションが切れる前に、セッションを維持し続けようとするかどうかを設定します
  • retries: NDプロキシが、ホストに到達できるかどうかNDP Solicitationを送信する回数

実際にNDプロキシを利用してIPv6化するには

Edgerouter (ER-X) で NDプロキシを使って IPv6通信を行う (ひかり電話なし)」を参考になさってください

参考

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sho7650
妻x1+娘x4 オンプレインフラメインのインフラエンジニアが、ソフトウェア中心のPaaS/SaaS業界へ転身し、一度はやめたアプリケーションに手を出し始めている昨今、みなさまいかがお過ごしでしょうか。 外資系はいいぞ(

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?