★FreeBSDにPPPoEを喋らせてブロードバンドルータにする 2
 May 25,2003 takamura@itoh.co.jp

最近のFreeBSDはPPPoEするためにカーネルの再構築が要りません。と言うか
余計なオプションを付けてkernel makeするとエラーになることもあります。
(ipfilterもカーネル再構築不要です。)

そんな訳でカーネル再構築のあたりを削り、パフォーマンスアップチューンを
ちょっと施して書き直ししてみました。

条件は
FreeBSD 4.8-RELEASEを使用
OCN光アクセスIP8/16、InfosphereIP8、同ADSLのように固定のグローバルサブ
ネットを振り出してくれるサービスに対応します。

★PPPの準備

/etc/ppp/ppp.conf
を下記のように作成

default:
 set device PPPoE:rl0  ### これはPPPoEに使うネットワークデバイス
 set log Phase Chat LCP IPCP CCP tun command
 set speed sync
 set mru 1454
 set mtu 1454
 set ctsrts off
 set timeout 0
 accept CHAP
 add default HISADDR
 enable tcpmssfix
 disable deflate
 disable pred1

pppoe:
 set authname is********@***.sphere.ne.jp
 set authkey **********


続いて
/etc/ppp/ppp.linkup
を下記のように作成

pppoe:
 ! ifconfig tun0 delete
 ! ifconfig tun0 PPPoEルータのIPアドレス netmask 255.255.255.248 HISADDR
 add! default HISADDR

この ppp.linkupが無いとInfoshereBizADSL8/16や OCN ADSL IP8/16、そのほか光
も なぜかネットワークアドレスそのものを名乗ってしまうのでその対策です。

★rc.confの追加事項

/etc/rc.conf

network_interfaces="rl0 rl1 lo0"
tcp_extensions="YES"

ifconfig_rl0="media 10BaseT/UTP up"
#ifconfig_rl0="up" だけだとオートネゴが効かないのでADSLの場合は上記のように記述
#B-Fletsの場合は下記を採用しないとオートネゴが効かない。
#ifconfig_rl0="media 100baseTX mediaopt full-duplex up"
#ADSLもBフレッツもADSLモデム/メディアコンバータ(光加入者線終端装置)と直結時は
#必ず上記のように記述。 2セッション(Bフレッツ)を張る場合にスイッチを経由する
#ときはupだけでも多分OKだと思われる。

ifconfig_rl1="inet PPPoEルータのIPアドレス netmask 255.255.255.248"
gateway_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="pppoe"
ppp_nat="NO"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES"
ipmon_flags="-D /var/log/ipf.log"

★パフォーマンスアップ
/etc/rc.network の

ppp_command="/usr/sbin/ppp -quiet -${ppp_mode}"

の行を探してその後に

ppp_command="/usr/sbin/rtprio 5 ${ppp_command}"

を追加します。どうやらpppdプロセスの優先度をこれで上げてあげるようです。

★パケットフィルタリング設定
これは
http://www.tac.tsukuba.ac.jp/~hiromi/ipf4.html
を参考に適当に設定してください。

とりあえずPPPoEの動作確認の為に臨時で

/etc/ipf.rulesを

pass in all
pass out all

などと書いておけばとりあえず動きますが、ちゃんとしたパケットフィルタ設定
は必須です。

★いよいよ動かしてみます。

shutdown -r now
で立ち上がったら
/var/log/ppp.log
をみてみたり

ifconfig tun0
なんかも確認してみます。

高村のホームに戻る