おうちで NetBSD といっても、特別なことはほとんどありません。
単に大学だと LAN 環境にいるけれども、家に帰ると電話回線でしか
よその計算機とお話しできないって事だけです。そこで、
ここでは NetBSD 附属の pppd
を用いて
ppp 接続するための方法についてまとめます。
NOTE:福井医科大学内のユーザで防火壁内部から 見ている場合はてらに 大学に特化した物があります。そちらもあわせて御覧下さい。 NOTE2:これは古いバージョンです。新しいバージョンは こちらになります。
まずはともあれ、自分のカーネルが、ppp をサポートしているか確認しましょう。
[tamp]~% /sbin/ifconfig -a ... ppp0: flags=8010<POINTTOPOINT,MULTICAST> mtu 1500 ppp1: flags=8010<POINTTOPOINT,MULTICAST> mtu 1500 ...
と出てくればサポートしています。(一つあれば十分です。)
出てこないばあいは
カーネルの configuration file に
pseudo-device ppp 2 # PPP
という行を付け加えて(別に 0 でなければいくつでもかまいません)
カーネルを作り直しリブートをかけます。
次は modem の設定確認です。
root になって /etc/remote
に次の行を加えてください。
# test modem entry my_modem|caf56k:\ :dv=/dev/tty01:br#9600:dc:
br は今テストに用いるだけなので 9600 でかまいませんが、dv には 正しく modem のつながっている device 名を指定しましょう。 さて準備が出来たので modem とお話ししてみます。
[tamp]/root# tip my_modem connected at OK
ここまでくれば、modem ときちんとお話しできる環境になっています。 Modem のマニュアルを片手に必要なセットアップを行ってください。 ちなみに私の modem で現在の設定を表示させると次の様になりました。
at&v ACTIVE PROFILE: B0 E1 L3 M1 N1 P Q0 V1 W0 X4 Y0 &C1 &D2 &K3 &Q5 &S0 &T5 &Y0 S00:000 S01:000 S02:043 S03:013 S04:010 S05:008 S06:004 S07:050 S08:002 S09:006 S10:014 S11:070 S12:050 S18:000 S25:005 S26:001 S36:007 S37:000 S38:020 S44:020 S46:138 S48:007 S95:000 STORED PROFILE 0: B0 E1 L3 M1 N1 P Q0 V1 W0 X4 Y0 &C1 &D2 &K3 &Q5 &S0 &T5 S00:000 S02:043 S06:004 S07:050 S08:002 S09:006 S10:014 S11:070 S12:050 S18:000 S36:007 S37:000 S40:104 S41:195 S46:138 S95:000 STORED PROFILE 1: B1 E1 L3 M2 N1 Q0 T V1 W1 X4 Y0 &C1 &D2 &K3 &Q5 &S0 &T5 S00:000 S02:043 S06:004 S07:050 S08:002 S09:006 S10:014 S11:070 S12:050 S18:000 S36:007 S37:000 S40:104 S41:195 S46:138 S95:046 TELEPHONE NUMBERS: 0= 1= 2= 3= OK
現在の設定を記憶することが出来る modem ならば設定した物を記憶させておくと
あとあと便利です。私は STORED PROFILE 1
に記憶させました。
modem と話をするのを止めるのには "~."
を入力します。
補記: いつの頃からか忘れてしまいましたが、
pcmcia のモデムカードを使っているせいか、最初の at に
反応しないときがあります。その際は "~#"
を入力して
break 信号を送ってみてください。
必要な時に自分で pppd
を立ち上げてネットワーク設定を行う
方法です。自動接続と違って一々しないといけない面倒くささはありますが、
思いもかけないときに勝手に電話されないので、まずこちらでつなぐことに
しましょう。
次の様なファイルを作成します。基本的には pppd(8) に書いてあることと
同じですから、よくわからないときには参照してください。
/etc/ppp/options
tty01 57600 crtscts modem lock
/etc/ppp/peers/mygate
defaultroute noipdefault idle 60 connect '/usr/sbin/chat -v -f /etc/ppp/chats/mygate' noauth netmask 255.255.255.0認証手順が CHAP 又は PAP の場合で、ppp のアカウントと pppd を 起動する local user 名が違うならばさらに
user my_ppp_accountという行も必要です。
/etc/ppp/chats/mygate
atz1
は、私の modem では設定 1 を呼出すコマンドで、
atp&p3
は自宅の電話回線にあわせるコマンドです。
適当に直してください。以下の例では (0123)-45-6789 に電話をかけ、
login 名が ppp パスワードが myppp というユーザで login すれば
ppp connection がはられるという設定を仮定しています。
ABORT "NO CARRIER" ABORT "ERROR" ABORT "NO DIALTONE" ABORT "BUSY" ABORT "NO ANSWER" "" "at" OK "atz1" OK "atp&p3" OK "atd(0123)45-6789" CONNECT \r\n ogin:-BREAK-ogin: ppp assword: myppp※CHAP や PAP の場合は最後の二行は必要ありません。
/etc/ppp/chap-secrets
, /etc/ppp/pap-secrets
my_ppp_account myserver mypasswordの様に自分のアカウント名, server 名、 パスワードを書きます。 server 名がわからない場合は
*
でもかまいません。
さて以上のファイルを準備できれば、
[tamp]~% /usr/sbin/pppd call mygate
と入力すれば電話をかけはじめつながります。つながってしまえば、
[tamp]~% telnet <IP_Address>
とすれば外部の計算機につながるでしょう。もちろん、
/etc/resolv.conf
をきちんと設定しておけば名前でもつながります。
複数のプロバイダと契約している場合には同様にして peers と chats
ディレクトリの下に設定ファイルを作ります。peers/mygate 中の connect
行にあるスクリプト名も忘れずに変えてくださいね。
あと、/etc/ppp/ip-up
とか /etc/ppp/ip-down
とかに
つながった時と切れた時に行うコマンドを書くことが出来ますが、必須ではありません。
一応例題を。
#!/bin/sh # /etc/ppp/ip-up /bin/echo `/bin/date` PPP: IP up: $1 on $2 at ${3}b/s from $4 to $5 > /dev/console
#!/bin/sh # /etc/ppp/ip-down /bin/echo `/bin/date` PPP: IP down: $1 on $2 at ${3}b/s from $4 to $5 > /dev/consoleこのようにしておくと PPP の状態が変化したときに console に通知されます。 これらのコマンドはスーパーユーザ権限で起動されるので security には十分 注意する必要があります。また、すべての入出力は
/dev/null
に
つながれていることにも注意しましょう。
必要な時にだけ電話を勝手にかけるようにするためには 上にあげたファイルの内、次のファイルだけをほんの少し 変更する必要があります。
/etc/ppp/peers/mygate
# mygate dial on demand version demand :<ip_of_pppserver> ipcp-accept-local ipcp-accept-remote noipdefault idle 60 connect '/usr/sbin/chat -v -f /etc/ppp/chats/mygate' noauth netmask 255.255.255.0
マニュアルによれば remote 側の IP address が指定されていないばあいには
dial on demand は出来ないようにみえます。しかしながら
ipcp-accept-remote option をつけていると
相手が自分の IP を言ってきたときに動的に変わるので
わからないときは適当に設定してしまえばいいです。
嘘の gateway を指定していても接続後の routing table は書き直されます。
違っていた場合は syslogd にdaemon.warning
で通知されますから、
log file を見れば正しい remote IP がわかります。あるいは接続中に
netstat -rn の出力を見てもわかります。
ちなみに、"<" と ">" は必要ありません。
直接 IP address を書きます。
また、さきほどは必須ではなかった、/etc/ppp/ip-down
が
必須になります。
#!/bin/sh # ip-down for dod /sbin/ifconfig $1 delete $4 /bin/echo `date` PPP: IP down: $1 on $2 at ${3}b/s from $4 to $5 > /dev/console
さらに起動方法が若干 tricky になります。 (なんとなく、NetBSD 付属の pppd の bug くさいのですが、よくわかりません。) 必ずスーパーユーザになってから次のようにして起動します。
[tamp]/root# pppd call mygate && ifconfig ppp0 delete 0.0.0.0起動しても電話かかりませんよね? ではおもむろに
[tamp]~% telnet xxxxxxxxと打ってみましょう。電話がかかりはじめつながることでしょう。 ときどき、つながるのに時間がかかりすぎて、 time out を起すときにも ありますが、最初のコマンドが失敗するだけで別のコマンドはきちんと 動くはずです。
この Dial on Demand 設定を使うと思いがけないときに勝手に
電話をかけはじめるので cron
などで起動されている
scripts をチェックしておかないと、電話代が恐しいことになるかも
知れません。:-)