作業日記@HatenaBlog

各種の作業メモ

PPPoEの導入

ブロードバンドルータ化する

FreeBSD 8.0 に PPPoE を導入し、ブロードバンドルータ化する。
ports は net/mpd4 を使用する。
参考URL:
http://freebsd.fkimura.com/pppoe-a0.html
http://simasimapants.blog79.fc2.com/blog-entry-274.html
 

インタフェース確認

WAN 側のネットワークインタフェースは em0 とする。

# ifconfig em0
em0: flags=8843 metric 0 mtu 1500
        options=9b
        ether XX:XX:XX:XX:XX:XX
        inet 192.168.n.n netmask 0xffffff00 broadcast 192.168.n.255
        media: Ethernet autoselect (1000baseT )
        status: active

 

/boot/loader.conf

/boot/loader.conf に次の行を追加。

# vi /boot/loader.conf
ng_pppoe_load="YES"

カーネルモジュールは次の通りとなった。

ng_pppoe_load="NO" のとき
# kldstat
Id Refs Address            Size     Name
 1    1 0xffffffff80100000 d188c0   kernel
 
ng_pppoe_load="YES" を追加
# kldstat
Id Refs Address            Size     Name
 1    5 0xffffffff80100000 d188c0   kernel
 2    1 0xffffffff80e19000 6cd8     ng_pppoe.ko
 3    2 0xffffffff80e20000 14e10    netgraph.ko

 

ports 導入
# portinstall net/mpd4

オプション指定

                  Options for mpd 4.4.1_1
[ ] NG_CAR     Use ng_car kernel module from port (<7.0 only)
[ ] NG_IPACCT  Use ng_ipacct kernel module from port

 

設定ファイル

設定ファイルは以下に保存されている。

# cd /usr/local/etc/mpd4
# ls -l
-r--r--r--  1 root  wheel  10999 Mar  6 15:08 mpd.conf.sample
-r--r--r--  1 root  wheel   3778 Mar  6 15:08 mpd.links.sample
-r--r--r--  1 root  wheel  39204 Mar  6 15:08 mpd.script.sample
-r--r--r--  1 root  wheel    834 Mar  6 15:08 mpd.secret.sample

設定ファイルのサンプルをコピーして編集する。(太字は追記、取消線は削除を意味する)

# cp -Rp mpd.conf.sample mpd.conf
# vi mpd.conf
 
startup:
        # enable TCP-Wrapper (host_access(5)) to block unfriendly clients
        set global enable tcp-wrapper
        # configure the console
        set console port 5005
        set console ip 0.0.0.0
        set console user foo bar
        set console user foo1 bar1
        set console open
        # configure the web server
        set web port 5006
        set web user foo bar
        set web open
 
default:
        load myisp
        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 mtu 1454
        set iface idle 0
        set ipcp yes vjcomp
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        set bundle disable multilink
        set auth authname HOGE@FUGA.com
        set link no acfcomp protocomp
        set link disable pap chap
        set link accept chap
        set link mtu 1454
        set link mru 1454
        set link keep-alive 10 60
        open

mpd.links の編集
WAN 側インタフェースは上述のとおり em0 である。

# cp -Rp mpd.links.sample mpd.links
# vi mpd.links
 
PPPoE:
        set phys type pppoe
        set pppoe iface em0
        set pppoe service "whatever"
        set pppoe disable incoming
        set pppoe enable originate

mpd.secret の編集

# cp -Rp mpd.secret.sample mpd.secret
# vi mpd.secret
 
HOGE@FUGA.com   HogeFugaPassword
MyLogin         MyPassword
PeerLogin       PeerPassword

fred            "fred-pw"
joe             "foobar"        192.168.1.1
bob             "\x34\"foo\n"   192.168.1.10/24
sal             "yipee"         192.168.1.254

mpd.secret を他のユーザから読まれないように、パーミッションを変更しておく。

# chmod 400 mpd.secret
# ls -l mpd.secret
-r--------  1 root  wheel  879 Mar  6 18:47 mpd.secret

/etc/rc.conf に追記

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

mpd のログを取るため、/etc/syslog.conf を編集

# vi /etc/syslog.conf
!mpd
*.*                                             /var/log/mpd.log
!ppp
*.*                                             /var/log/ppp.log
!*

ログのローテーションをするため、/etc/newsyslog.conf を編集

# vi /etc/newsyslog.conf
/var/log/mpd.log                        600  5     100  *     JC    /var/run/mpd.pid
NTP の不具合

OS 起動時、 mpd4 の接続が完了する前に ntpd が NTP サーバへ問い合わせをしてしまい、時刻同期に失敗する。
/etc/rc.d/ntpd を編集し、スクリプトの先頭に sleep 10 を追加して mpd4 のネゴシエーションが完了するまで待つようにする。

# vi /etc/rc.d/ntpd
 
# KEYWORD: nojail shutdown
 
sleep 10
 
. /etc/rc.subr

 

IPアドレスの再割り当て

/etc/rc.conf でネットワークインタフェースの IP アドレスなどを書き換えた時は、/etc/netstart を実行して、/etc/rc.conf を再読み込みさせる。
参考URL:http://www.server-memo.net/freebsd/freebsd-ip-setting

# /etc/netstart