FreeBSDのUserland PPPはお手軽で良いのですが、あまりにもパフォーマンスが出ないのでMPDをインストールしてみます。FreeBSD 4.10-RELEASE


Mar 4,2004 takamura@itoh.co.jp

回線はNTT東のBフレッツベーシックやニューファミリーにOCN光アクセスIP8とかIP16とかを想定。

【kernel再構築】

以下を追加してKernel Rebuildします。

options NETGRAPH
options NETGRAPH_BPF
options NETGRAPH_ETHER
options NETGRAPH_IFACE
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_VJC

make install後、再起動したらmpdをインストール。portsでお手軽に。

cd /usr/ports/net/mpd
make install

【設定ファイル】

/usr/local/etc/mpd/mpd.conf

default:
load PPPoE

PPPoE:
new -i ng0 PPPoE PPPoE
set iface addrs 1.1.1.1 2.2.2.2
set iface route default
set iface disable on-demand
set iface idle 0
set iface mtu 1454
set iface up-script mpd.linkup
set bundle disable multilink
set bundle authname PPP_ID@???.ocn.ne.jp
set bundle password PPP_Password
set link no acfcomp protocomp
set link disable pap chap
set link accept chap
set link mtu 1454
set link mru 1454
set ipcp yes vjcomp
set ipcp ranges aaa.bbb.ccc.ddd/32 aaa.bbb.ccc.ddd/32
open iface
※ aaa.bbb.ccc.ddd PPPoEをしゃべらせるマシンに付けたGlobal IP Adress

/usr/local/etc/mpd/mpd.links

PPPoE:
set link type pppoe
set pppoe iface rl0
set pppoe service "whatever"
set pppoe disable incoming
set pppoe enable originate

/usr/local/etc/mpd/mpd.linkup

#!/bin/sh
/sbin/ipf -y
/sbin/ipnat -CF -f /etc/ipnat.rules

NATさせない場合は ipnatの行は不要。
これが無いと切断〜復旧時に通信不能になる場合がある。

全ファイルともrootしか読めないように設定しておくこと。
(パスワードが埋め込まれているので。)

/etc/ipf.rules は ng0 をpppoeデバイスに指定して設定。
(Userland PPPではtun0だったものをng0に変更)

NATまでやらせるときは

/etc/ipnat.rules


map ng0 192.168.0.0/24 -> 0/32 proxy port ftp ftp/tcp mssclamp 1414
map ng0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto mssclamp 1414
map ng0 192.168.0.0/24 -> 0/32 mssclamp 1414


のように mssclamp 1414 を追加する。

/etc/rc.conf

ifconfig_rl0="up"
に変更。


【起動スクリプト】

/usr/local/etc/rc.d/mpd.sh

#!/bin/sh

mpd_command="/usr/local/sbin/mpd"
mpd_conf_file="/usr/local/etc/mpd/mpd.conf"

case "$1" in
start)
if [ -x ${mpd_command} -a -f ${mpd_conf_file} ]; then
${mpd_command} -b
echo "mpd start pppoe connection"
fi

sleep 5
/sbin/ipf -y
/sbin/ipnat -CF -f /etc/ipnat.rules

;;

stop)
echo "mpd stop pppoe connection"
/usr/bin/killall mpd

;;

*)
echo "Usage: mpd.sh {start|stop}"
exit 1
esac

exit 0