FreeBSD で IIJmioへ pppoe+DHCPv6で 接続するときのメモ

我が家のマンションもBフレッツからフレッツネクストになり、やっとIPv6接続が安価に可能になりました。IIJmioに限らずフレッツ網使ってる限り、pppoeで接続後にDHCPv6でプレフィックスが振り出されるというやり方は基本同じなので、他のプロバイダでも通用するでしょう。

DHCPv6が必要になるので、あらかじめ pkg から dhcp6を インストールしておきます。

# pkg install dhcp6

pppの設定

/etc/ppp/ppp.conf:

iijmiov6:
 set authname AUTHNAME@bnf6.iij.ad.jp
 set authkey AUTHKEY
 set device PPPoE:re0:pppoe-in
 enable lqr
 disable ipcp
 enable ipv6cp
 set cd 5
 set dial
 set login
 set redial 0 0
 set timeout 0
 set reconnect 10 20

AUTHNAME, AUTHKEY, deviceは適宜環境に合わせてください。 ipcpをdisableしてipv6cpをenableにするのがコツです。うまく設定できているかどうかは以下のコマンドで確認できます。

# ppp -unit2 iijmiov6
Working in interactive mode
Using interface: tun2
ppp ON peach> dial
ppp ON peach> Warning: deflink: Reducing configured MRU from 1500 to 1492
Ppp ON peach> 
PPp ON peach> Warning: ::/0: Change route failed: errno: No such process
PPP ON peach> 

pppがPPPになれば、リンクが確立したことになります。ここで、ワーニングが出ますが、これを消す方法があるのかどうかは不明です。別に出てもちゃんと動くようなので気にしないようにしました。

この状態では、リンクがつながってもIPアドレスも振られてなければdefault rotueも設定されていないので、まだIPv6で通信はできません。これらを自動で取得するためにpppを一旦終了し、次のような設定ファイルを書きます。

/etc/ppp/ppp.linkup:

iijmiov6:
  ! sh -c "/usr/local/sbin/dhcp6c tun2"
  ! sh -c "route -6 add default -iface tun2"

/etc/ppp/ppp.linkdown:

iijmiov6:
  ! sh -c "route -6 delete default"
  ! sh -c "kill `cat /var/run/dhcp6c.pid`"

/usr/local/etc/dhcp6c.conf:

interface tun2{
        send ia-pd 0;
};

id-assoc pd 0 {
        prefix-interface fxp0 {
                sla-id 1;
                sla-len 8;
        };
};

dhcp6c.confの fxp0等は適宜読み替えてください。

やってることはなんということはなく、リンクが確立したら

/usr/local/sbin/dhcp6c tun2
route -6 add default -iface tun2

が順番に実行されるだけです。設定段階では上記コマンドを手動でタイプしてちゃんと動いているかどうか、設定に間違いがないかどうか確認するとよいでしょう。特にdhcp6cは間違いやすいので -D -f オプションをつけて実行すると捗るのではないかと思います。

ちなみに dhcp6c.confの意味ですが、プロバイダから振り出されたプレフィックスに 8ビット足してその部分を1にしたものがfxp0にIPv6アドレスとして振るという設定です。IIJmioからは /56でIPv6アドレスが振り出されるので結果/64のアドレスがfxp0に振られます。

うまく動いているようでしたら、起動時に自動で実行されるよう /etc/rc.confに以下の行を追加します

ppp_enable="YES"
ppp_profile="iijmiov6"
ppp_mode="ddial"
ppp_iijmiov6_unit="2"
ppp_iijmiov6_nat="NO"

これで

# /etc/rc.d/ppp start

でIPv6アドレスが振り出されていれば成功です。

 

 

Posted by issei

カテゴリ: BSD