Network
IPv6
EdgeRouter

EdgeRouterでIPv6 PPPoEの設定

EdgeRouter-Xを購入

自宅の光回線はフレッツ 光ネクスト ファミリー・ハイスピードタイプをずっと使っていたのですが、さすがに遅さを感じていたため、フレッツ 光ネクスト ファミリー・ギガラインタイプに変更することに。
同時にこれまでつかっていたルーターをNEC UNIVERGE IX2015から変更する必要があるため、いろいろと検討したところ、Ubiquiti Networks EdgeRouter Xが安くて良さそうだということで購入。
amazon.co.jpで購入するとPSE認証付き電源1が付属するとのことで、amazonで購入した。

問題発覚

IPv4の設定も一通り終わり、IPv6の設定を行おうとしたところ、問題が発覚。
どうも、IPv6のみのPPPoEだとまともに動かないらしい。

参考

いろいろと試してみたところ、スクリプトを作成することによりとりあえず対応できそう。

やったこと

EdgeOSにsshでログイン

rootシェルにログインし、スクリプトを作成

$ sudo su -
# vi /config/scripts/ppp/ipv6-up.d/ipv6olny
/config/scripts/ppp/ipv6-up.d/ipv6olny
#!/bin/sh

OLD_IFNAME=$1
ipparam=($6)
NEW_IFNAME=${ipparam[0]}

if [ -z "`ip a show dev $NEW_IFNAME | grep 'inet '`" ]; then
  . /etc/ppp/ip-pre-up.d/0002rename-pppoe $*
  ip link set dev $NEW_IFNAME up state up

  for f in `ls /var/run/pppoe-client-sessions/*@$OLD_IFNAME 2> /dev/null`; do
    mv $f $(echo $f | sed -e s/$OLD_IFNAME/$NEW_IFNAME/)
  done

  /etc/ppp/ip-up $NEW_IFNAME $2 $3 $4 $5
fi
# chmod 755 /config/scripts/ppp/ipv6-up.d/ipv6olny

やっていること

IPv4アドレスが付与されていなければ、次の処理を実施。

  • /etc/ppp/ip-pre-up.d/0002rename-pppoeを動かし、デバイス名の変更を行う。
  • /var/run/pppoe-client-sessions内のinterface名を変更。
  • /etc/ppp/ip-upを実行。ここでDHCPv6-PDの処理などが行われる。

制限事項

ログにCouldn't get PPP statistics: No such deviceが5秒に1回でてきます。
したがって、ログローテートの設定は必須になります。2
pppdを修正し、/etc/ppp/ipv6-pre-up対応すればよいらしいのですが、EdgeOSのソースが見つからず、修正できません。
デバイス名の変更ではなくて、pppoeの名前でダミーデバイスを作成してpppデバイスとブリッジするといいような気もしてます。
パフォーマンスは落ちそうですが。


  1. 中身は秋月電子の電源でした。 

  2. とりあえずサイズ1MB、ファイル数5つにしてます。