[FreeBSD]PCルーターを作ろう。mpd編
FreeBSD 6.2R + mpd + pf でがんばってみよう。
mpd は ports で入れる。
kernel に以下の option を追加。
options NETGRAPH # netgraph(4) system
options NETGRAPH_BPF
options NETGRAPH_ETHER
options NETGRAPH_IFACE
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_VJC
#最新のカーネルには標準で入っているので options いらないって情報がありますが
#よくわからないので、とりあえず設定。
mpd の設定ファイルは usr/local/etc/mpd/ 以下に作られるので、sample を cp して作る。
・mpd.conf
default:
load eonet
eonet:
new -i ng0 eonet PPPoE
# Configure the interface: dial on demand, default route, idle timeout.
set iface addrs 1.1.1.1 2.2.2.2
set iface route default
set iface disable on-demand
set iface idle 0
# Configure the bundle account name.
set bundle authname PPPoEのアカウント
# Configure IP addressing -- we get both endpoint assignments from peer.
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set ipcp yes vjcomp
# Configure the (only) link. We expect to be authenticated by peer.
set link disable chap pap
set link accept chap
# Deny weak MS-CHAP version
set link deny chap-msv1
set link no acfcomp protocomp
# Configure modem telephone number, and enable ringback
# set modem script DialPeer
# set modem var $Telephone "1-415-555-1212"
# set modem idle-script Ringback
# "Open" connection (but don't actually dial until there's demand)
open iface
・mpd.links
PPPoE:
set link type pppoe
set pppoe iface de0
set pppoe service "whatever"
set pppoe disable incoming
set pppoe enable originate
・mpd.secret
PPPoEのアカウント パスワード
とりあえず、これで mpd の設定終わり。
kernel を再構築して、reboot 。
mpd と打つと・・・
[root@gateway]# mpd
Multi-link PPP for FreeBSD, by Archie L. Cobbs.
Based on iij-ppp, by Toshiharu OHNO.
mpd: pid 1941, version 3.18 (root@gateway.nnn.mcu.or.jp 18:19 9-Dec-2007)
[eonet] ppp node is "mpd1941-eonet"
[eonet] exec: /sbin/ifconfig de0 up
[eonet] using interface ng0
[eonet] IPCP: peer address cannot be zero
[eonet] IFACE: Open event
[eonet] IPCP: Open event
[eonet] IPCP: state change Initial --> Starting
[eonet] IPCP: LayerStart
[eonet:PPPoE] [eonet] bundle: OPEN event in state CLOSED
[eonet] opening link "PPPoE"...
[PPPoE] link: OPEN event
[PPPoE] LCP: Open event
[PPPoE] LCP: state change Initial --> Starting
[PPPoE] LCP: LayerStart
[PPPoE] device: OPEN event in state DOWN
[PPPoE] device is now in state OPENING
[PPPoE] rec'd ACNAME "K-OPT-BAS"
[PPPoE] PPPoE connection successful
[PPPoE] device: UP event in state OPENING
[PPPoE] device is now in state UP
[PPPoE] link: UP event
[PPPoE] link: origination is local
[PPPoE] LCP: Up event
[PPPoE] LCP: state change Starting --> Req-Sent
[PPPoE] LCP: phase shift DEAD --> ESTABLISH
[PPPoE] LCP: SendConfigReq #1
MRU 1492
MAGICNUM bf6a3ab1
MP MRRU 1600
MP SHORTSEQ
ENDPOINTDISC [802.1] 00 07 e9 0d 05 8a
[PPPoE] LCP: rec'd Configure Request #24 link 0 (Req-Sent)
MRU 1492
AUTHPROTO CHAP MD5
MAGICNUM 7831d869
[PPPoE] LCP: SendConfigAck #24
MRU 1492
AUTHPROTO CHAP MD5
MAGICNUM 7831d869
[PPPoE] LCP: state change Req-Sent --> Ack-Sent
[PPPoE] LCP: rec'd Configure Reject #1 link 0 (Ack-Sent)
MP MRRU 1600
MP SHORTSEQ
ENDPOINTDISC [802.1] 00 07 e9 0d 05 8a
[PPPoE] LCP: SendConfigReq #2
MRU 1492
MAGICNUM bf6a3ab1
[PPPoE] LCP: rec'd Configure Ack #2 link 0 (Ack-Sent)
MRU 1492
MAGICNUM bf6a3ab1
[PPPoE] LCP: state change Ack-Sent --> Opened
[PPPoE] LCP: phase shift ESTABLISH --> AUTHENTICATE
[PPPoE] LCP: auth: peer wants CHAP, I want nothing
[PPPoE] LCP: LayerUp
[PPPoE] CHAP: rec'd CHALLENGE #91
Name: "ED0000-BAS02"
Using authname "********"
[PPPoE] CHAP: sending RESPONSE
[PPPoE] CHAP: rec'd SUCCESS #91
[PPPoE] LCP: authorization successful
[PPPoE] LCP: phase shift AUTHENTICATE --> NETWORK
[eonet] setting interface ng0 MTU to 1492 bytes
[eonet] up: 1 link, total bandwidth 64000 bps
[eonet] IPCP: Up event
[eonet] IPCP: state change Starting --> Req-Sent
[eonet] IPCP: SendConfigReq #1
IPADDR 0.0.0.0
COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
[eonet] IPCP: rec'd Configure Reject #1 link 0 (Req-Sent)
COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
[eonet] IPCP: SendConfigReq #2
IPADDR 0.0.0.0
[eonet] IPCP: rec'd Configure Nak #2 link 0 (Req-Sent)
IPADDR 58.70.13.199
58.70.13.199 is OK
[eonet] IPCP: SendConfigReq #3
IPADDR 58.70.13.199
[eonet] IPCP: rec'd Configure Ack #3 link 0 (Req-Sent)
IPADDR 58.70.13.199
[eonet] IPCP: state change Req-Sent --> Ack-Rcvd
[eonet] IPCP: rec'd Configure Request #95 link 0 (Ack-Rcvd)
IPADDR 60.56.25.12
60.56.25.12 is OK
[eonet] IPCP: SendConfigAck #95
IPADDR 60.56.25.12
[eonet] IPCP: state change Ack-Rcvd --> Opened
[eonet] IPCP: LayerUp
58.70.13.199 -> 60.56.25.12
[eonet] IFACE: Up event
[eonet] setting interface ng0 MTU to 1492 bytes
[eonet] exec: /sbin/ifconfig ng0 58.70.13.199 60.56.25.12 netmask 0xffffffff -link0
[eonet] exec: /sbin/route add 58.70.13.199 -iface lo0
[eonet] exec: /sbin/route add 0.0.0.0 60.56.25.12
[eonet] IFACE: Up event
と、コンソール奪ったままなので、通常は"mpd -b"で、バックグラウンドで動かしませう。
[root@gateway]# ifconfig ng0
ng0: flags=88d1
inet 58.188.219.223 --> 60.56.25.12 netmask 0xffffffff
うーん、グローバルなアドレス貰ってるから、いけてるだろ、きっと・・・
次はpfだな。