Junkie Work

access: 181445

PPPoE接続(mpd5)


契約しているISP(eo光)は、IPv6対応として「PPPoEによるデュアルスタック方式」を採用しているということですので PPPoEの設定でIPv4と一緒にIPv6もつなぐようにしました。

インストール

MPD(Multi-link PPP daemon for FreeBSD)をインストール。
インストールはパッケージを利用します。

 # pkg install mpd5

IPv6のIPアドレスはDHCPv6で取得するのでdhcp6もインストール。

 # pkg install dhcp6

設定

/usr/local/etc/mpd5/mpd.conf を編集します。

defaultをPPPoEに変更します。

default:
        load PPPoE

PPPoEの設定を記載します。

 認証ID:xxxxxxxx パスワード:yyyyyyyy インタフェース名:re0

PPPoE:
        create bundle static B1
        set iface enable tcpmssfix
        set iface route default
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        set iface up-script /usr/local/etc/mpd5/script-pppoe.up
        set iface down-script /usr/local/etc/mpd5/script-pppoe.down
        set bundle enable ipv6cp

        create link static L1 pppoe
        set link action bundle B1
        set auth authname xxxxxxxx
        set auth password yyyyyyyy
        set link max-redial 0
        set link mtu 1454
        set link keep-alive 10 60
        set pppoe iface re0
        set pppoe service ""
        open

/usr/local/etc/mpd5/script-pppoe.up を編集します。

(IPv6接続時にdefaultを設定し、DHCPv6でIPを取得します)

#!/bin/sh
case "$2" in
 "inet")
;;
 "inet6")
        /sbin/route delete -inet6 default
        /sbin/route -6 add default -iface $1 -mtu 1454
        sleep 3
        /usr/local/sbin/dhcp6c -c /usr/local/etc/dhcp6c.conf $1
;;
esac
exit 0

/usr/local/etc/mpd5/script-pppoe.down を編集します。

(IPv6切断時にdefaultを削除し、DHCPv6クライアントを停止します)

#!/bin/sh
case "$2" in
 "inet")
;;
 "inet6")
        kill -9 `pgrep -f 'dhcp6c' `
        /sbin/route delete -inet6 default
;;
esac
exit 0

/usr/local/etc/dhcp6c.conf を編集してDHCPv6 Clientの設定をします。

PPPoEで作られるインタフェース名:ng0 IPv6を割り当てるインタフェース名:re1

interface ng0 {
     send ia-pd 0;
};

id-assoc pd {
    prefix-interface re1 {
        sla-len 0;
        sla-id 0;
    };
};

起動

/etc/rc.conf に起動の設定を追記します。

mpd_enable="YES"
mpd_flags="-s mpd -b"

起動します。

# service mpd5 start