最新更新日 2000.03.07.


コールバックな PPP。
 PPP ネタもずいぶんと書いていますね。FreeBSD 付属の IIJ-PPP もどんどんバージョンが上がって行っていろいろ使いやすく、裏を返せば複雑になっていますね。jman ppp は本当にもう手放せない・・。日本語訳をしてくださっているプロジェクトの皆さんには本当に頭が上がりません。

 さて、IIJ-PPP で NAT の機能がインクルードされて今まで利用していた じゅんいちさん のパッチは必要なくなりました。じゅんいちさん ももう、「NAT パッチは書かない」と公言しています。NAT に付いての設定は、インストールに付いてを読んでください。ふみふみ。

 では、今回、どー言った PPP ネタを書くのか?と言われれれば、コールバックネタに付いて書いて見たいと思います。ふふふ。ちょっちいじれば、自宅の FreeeBSD は RAS サーバになります。あぁらよっと。

 と、言う事でまずはお約束の接続環境に付いてです。

            +---------+
       -----|  RT50i  |--------------------- RAS to InterNet
            +---------+
                ↑| 
                || 10.0.0.10
                ||
            ppp ||
                |↓
            +---+----+ 
            | FreeBSD | 
            +---------+ 
           192.168.1.5(MN128-mini)
           HostName:koro		
 ・RAS 側は YAMAHA の RT50i が用意されています。
  -.Microsoft コールバック制御プロトコルを利用しています。
  -.僕の電話からかけると 10.0.0.10 を割り当ててくれます。
  -.UserID:takachan、passwd:herohero で接続できます。

 ・FreeBSD 側は 3.4-RELEASE で自分の環境です。
  -.TA を利用して ISDN の環境で接続します。TA は MN128-mini です。

  -.OS 標準の IIJ-PPP を利用します。

 こんな感じでしょうか。では、自分の FreeBSD の IIJ-PPP の設定をしてみます。その前にまずはコールバックの手順をみて行きましょう。

1. IIJ-PPP で RAS サーバ (RT50i) に電話をかけて、すかさず切れるようにします。
2. RAS サーバは切れた後、電話のかけて来た電話番号に電話をかけます。
3. 自分の PC に接続された TA は電話を受信してます。
4. IIJ-PPP がIP アドレスを取得しパケットが流れる様になります。

 この手順を見ると、ppp.conf は少なくとも二つの設定が必要になります。まずば、RAS サーバに電話をかけるための設定。続いて、RAS サーバからの電話を受信して接続するための設定ですね。この二つの接続が IIJ-PPP の ppp.conf に必要になります。

・PAS サーバにかけるための設定。
 今回は FreeBSD3.4-RELEASE に接続されているのは、ISDN 接続で、NTT-ME の MN128-mini になりまます。ルータ機能等は全然持ってないただの DSU+TA の機器です。今までも NAT 機能、ルータ機能等は全部 FreeBSD 側で、そして今回はコールバック機能も FreeBSD 側で実装します。

 では、一番最初に電話をかける時の IIJ-PPP の設定を見て行きましょう。MN128-mini での PPP 接続に付いては、MN128-mini の設定 を御覧ください。

----------------
default:
 set log Phase Chat Connect LCP IPCP CCP tun command
 set device     /dev/cuaa1
 set speed      115200
 allow users    takachan
 nat enable     yes
#
call:
 set ifaddr     0.0.0.0/24 10.0.0.10
 set callback cbcp
 set cbcp *
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT&Q5$S12!H1 OK ATDT\\T TIMEOUT 10 CONNECT"
 disable        lqr
 accept         lqr
 deny           chap
 accept         pap
 set phone      0312349876
 set authname   takachan
 set authkey    herohero
 dial
----------------
 default: 部分はまぁ、いつものパターンですね。nat enable yes は NAT を 有効にする設定です。

 call: の方は電話をかける設定です。コールバックの設定のために、set callback cbcp の行を書いています。cbcp は、「Microsoft コールバック制御プロトコル」を使うための設定です。そして PAP 認証しています。この設定で電話をかけると、すぐに切れ、RAS サーバから折り返し電話がかかって来るようになります。

 RAS サーバ側の認証方式とプロトコルは管理者に聞きましょう。今回はたまたま、PAP 認証と「Microsoft コールバック制御プロトコル」だったので、cbcp を付加しました。

 電話が切れずに RAS サーバにつながったままの状態が続く。と、言う事はどうも RAS サーバ間でのプロトコルがあっていない様です。 jma nppp しつつ、もう一度、設定を見直してみましょう。

・PAS サーバから電話がかかって来た時の準備。
 RAS サーバ側から電話がかかってきました。これで第一段階のクリアです。ppp call で電話をかけてばちっと切れて RAS サーバ側からの電話をモデムで受信しましたが IIJ-PPP の設定が無いですし、その前にシリアルポートの設定が整っていないので、正常に動作しません。では、次にシリアルポートの設定をする事にしましょう。

 まずは、/etc/rc.serial の設定です。はっきり言って、いろいろウダウダと書いてありますが、

----------------
#modem    d a    1
modem    d a    1 2
----------------
 117 行目辺りに上の行がコメントアウトされていると思いますが、それを有効にしてあげます。そして、一応、二つ分のモデムを使う様に "1" の他に "2" も付けてあげましょう。詳細に付いては後で分かります:-)。

 続いて、/etc/ttys の設定です。

----------------
# CallBack Set UP
ttyd0   "/usr/libexec/getty du0"        dialup  on secure
ttyd1   "/usr/libexec/getty du1"        dialup  on
----------------
 この二行を追加します。/usr/libexec/getty に du0 と、du1 と言う名の設定をして、dialup を on してあげます。secure は root での login を許す設定で、セキュリティが落ちます。ポリシに従って設定してあげてください。今回は、du0 にかかって来た時は、root での login を許す事にしました。

 そして、/etc/gettytab に以下の行を追加します。

----------------
# CallBack Set UP
du0|115200-baud:\
        :np:sp#115200:pp=/etc/callback.ppp:
du1|115200-baud:\
        :np:sp#115200:pp=/etc/callback.ppp:
----------------
 du0 は ttys で指定した値を、その後は速度を指定します。pp= の後には、電話を受信した後に動くべきスクリプトを指定してあげます。du0 と du1 の二つを設定しました。

 では実際に動くスクリプトを見てみましょう。当然実行権を付けてあげてください。

--- cat /etc/callback.ppp ---
#!/bin/sh
/usr/sbin/ppp -direct du-server
----------------
 ppp コマンドにオプション、-direct を付けます。そして、du-server と言う ppp.conf 内の設定が動く様にします。うぅぅみゅ。設定はいろいろな所で結構結構連鎖していますね(^^;;。

 これで、シリアルポートの設定は完了です。ふぅぅ。ここで一旦 init プロセスに HUP シグナルを送ってあげましょう。kill -HUP 1 ですね。ふふふ。間違っても kill 1 等とはしない様に・・。

・受信側 ppp.conf の設定だ・・。
 ここまで来れば後は、らくちんですね。以下の設定を ppp.conf に書きます。

----------------
du-server:
 set ifaddr     0.0.0.0/24 10.0.0.10
 enable         passwdauth
 enable         proxy
 allow user     takachan
 set authname   takachan
 set authkey    herohero
----------------
 上から設定を見てみると、上から順に

o. 割り当てられる IP アドレスを指定します。
o. 認証の passwd を有効にします。
o. プロキシ arp を有効にします。
o. 電話をかけてくるユーザは takachan だけにして、自分のマシンを守ります。
o. UserID そして、Passwd を指定します。

 enable passwdauth は、認証用の ID と passwd を利用します。デェフォルトでは、/etc/ppp/ppp.secret を見にいきます。一応、authname と、authkey をセットしていますが、ppp.secret を以下の様に用意してあげましょう。

----------------
#UserID       Passwd
takachan      herohero
----------------
 これで設定は完了しました。では早速、IIJ-PPP でコールバックサーバに電話をかけてみましょう。ことの時、別の kterm で、tail -f /var/log/ppp.log 等として、しっかりと log をみていましょう。

 無事に電話を RAS サーバにかけて、切れて、RAS サーバから電話がかかって来て・・。あれれ?だめだぁぁ・・。しくしく。

 ppp.log を見ていると、自分が RAS サーバに電話をかけた時は、tun0 でかけているのに、RAS サーバから電話がかかって来ると、tun1 で受けているみたいです。あれれ・・。通常 kernel では、トンネルデバイスである tun は一個しか持っていないです。つまりは tun0 しか無いのですね。で、今回、電話がかかって来た時には tun1 で受けるので、kernel レベルでデバイスを追加してあげる必要があります。ふみふみ。

 と、言う事で kernel のコンフィグファイルを以下の様に修正して、作り直してあげましょう。/etc/rc.serial にどうして二個分の指定をしたかの謎が融けたと思います。ふっふっふっ(^^)V。

----------------
pseudo-device   tun     2       # Packet tunnel 2 KO-Bun
----------------
 これで make install して、再起動します。そしてもう一度試してみましょう。後は、ppp.log を見ていろいろ研究したり、電話がかかったあと、netstat -nr したりして、実際に IP が割り当てられた事を確認しましょう。log を見ていて、 du-server の設定の所で実は、PAP 認証だったぁぁ・・。なんて時は enable pap 等を追加してみるとか、ppp.log はずいぶん有用な情報を教えてれたりします。

 後は、なんと言っても jman ppp ですね。英語だと難しかったりしますが、日本語だとずいぶんと分かりやすいです。 jman プロジェクトの皆さんに感謝しつつ、とことん読み耽ってみましょう。最初はテストなどで電話代が気になるかもしれませんが、コールバックの設定が終れば後はむひひです。頑張ってトライしてみましょう。

 って・・。本当に動きましたか?私はずいぶんと悩んで、ppp.log とにらめっこ。そして、jman ppp で解決しました。なんとかなりますよ。私が陥った現象をちょっと羅列してみましょうか。全て、jman ppp と、ppp.log で解決出来ました。

o. RAS サーバに電話したけど、電話がつながりっぱなしになり自動的に切れなかった。set callback cbcp と書いたら切れる様になった。ふぅぅ。
o. RAS サーバから電話が掛かって来たけど、tun1 が無いのでつながらなかった。カーネルを再構築して直った。
o. RAS サーバからの電話で認証がうまく行えなかった。allow user と set authkey を書いて直った。
o. RAS サーバからの電話で IP アドレスが割り当てられなかった。set ifaddr を書いたら直った。

皆さんも頑張ってみてください。ふふふふ;-)。

 そして、ここまで出来ると、自分の FreeBSD を RAS サーバにする事も可能です。ISDN だと、一回線でプロバイダに接続して、もう一回線は誰か他の人に開放する事も可能です。自分でプロバイダでも開きますか?、RADIUS サーバなんかがあっても嬉しいですね。むひひひ(^^)V。

#今回はなんか久々にボリュームあったなぁ・・ふぅぅ(^^;;。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.