FreeBSDにPPPoEを喋らせてブロードバンドルータにする  3 
 Mar 4,2004 takamura@itoh.co.jp

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

回線は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


高村のホームに戻る