1997/12/12: BSD/OS 3.0でpppコールバックしよう!

$Id: index.html,v 1.19 1998/01/25 08:44:14 itojun Exp $

What the page is about?

The following part is in Japanese, but I believe you can get some configuration examples.

なんのページ?


pppの設定

callbackは、
  1. bsdi -> RT80iの方向にpppセッションを張りに行く。 認証ができたあと、callback要求をして回線を切る。
  2. RT80i -> bsdiの方向にpppセッションを張りにいく。 つながっておめでとう。
という手順で動作する。 このとき両方の呼は別の/usr/bin/pppで取り扱われることに注意。 ということで、まずは、普通のpppを両方向完璧に 設定する必要がある。

callbackに興味がないひとはここだけ読んでも参考になるかもしれないので、 先にppp設定のはなしをしよう。

1. 勉強する

bsdi BSD/OS 3.0のgettyまわりは普通じゃないので、 まずはUNIX magazine97年12月号をもってきて勉強しよう。

2. PIAFSカードのための設定

wildboarは当然きちんと動作しているよね? まだだったらちゃんと設定する。

そしたら、PIAFSカードのために/etc/ttys.conf.localを書く。 このへんはtipでいちいち確認しながら書けばよい。
NTTパーソナル/パナソニックのDC-1Pの場合こんなかんじ。 ただし、あまり自信がないがとりあえず動く、という程度の設定である。 おとしあなの説明をしておこう:

# NTTPersonal/Panasonic DC-1P
PIAFS:\
	:modemtype=NNTP PIAFS:\
	:hcondition=ATE0S0=1:\
	:hdial=AT#SB1DT$1:\
	:hhangup=ATH:\
	:hinit=ATZ0\\\W1#M=0&Q6&K3&D3&C1U0S0=0:\
	:hquiet=ATQ1:\
	:hreset=AT&F:\
	:tc=Generic336:

3-a. pppのための設定(bsdi側)

つぎ。 /etc/ppp.sysの設定をする。
この例題では、/dev/tty02をpppに使う。
それから、認証は受身(RT80iがbsdi箱に「おまえのユーザ名とパスワードは なんじゃい」と聞いてくる)の設定になっている。 bsdi箱はRT80i側に向かって「おまえのユーザ名とパスワードはなんじゃい」 とは聞きにいっていない。 ほんとは双方向に認証したかったのだが、結局成功しなかったのでやめてしまった。 :pap:と書いてbsdi箱からの問い合わせをonにすると、 RT80i側のPAPの状態遷移図で期待していない タイミングでbsdi側からpap要求が出て、RT80i側がいやんと言うように 見えたのだが、勘違いだろうか。もうすこし検証必要 (あとでログ貼っときます > hirose)。 ただ、この設定だと/etc/passwdはいじくらなくていいので、 そこは美味しいかもしれない。 まあ、いつもPHSを繋いでいるわけじゃないし、noteだから移動するし、 というわけで双方向認証にはそんなにこだわらないくていいだろう。
# bsdi -> RT80i
Ppap:\
	:immediate:\
	:idle-timeout=0:\
	:phone-number=0312345678:\
	:pap-peerid=itojun:\
	:pap-passwd=naisho:\
	:speed=115200:\
	:device=/dev/tty02:\
	:tc=Dialout:

# RT80i -> bsdi
ppp_direct:\
	:dialin:\
	:pap-peerid=itojun:\
	:pap-passwd=naisho:\
	:debug-all:
	:auth-retries=3:\
	:echo-freq=60:\

3-b. pppのための設定(RT80i側)

RT80i側の設定もしよう。 余計な設定もいろいろ書いてあるが、まあとりあえず動く。 mscbcpと書いてあるところはcallback関係の設定だけど、 どうせそのまんまのbsdi箱はcallbackができないので、 問題なーし。
isdn local address 0312345678
ip lan address 10.1.1.109/28
ip lan broadcast 3
ip lan route add net default 10.1.1.110 1
ip lan proxyarp on
pp select anonymous
isdn auto connect off
isdn callback permit on
isdn callback permit type mscbcp
isdn disconnect time 600
isdn disconnect input time 600
isdn disconnect output time 600
ip pp local address 10.1.1.109
ip pp netmask 32
ip pp remote address pool 10.1.1.108 10.1.1.107
ip pp hide static route on
ip pp secure filter out 20 21 22 23 24 25 10
pp auth request chap-pap
pp auth accept pap chap
pp auth username itojun naisho 0609999999 mscbcp	<- PHSのでんわ番号
ppp ipcp vjc on
ppp ipcp ipaddress on
ppp ipcp msext on
pp enable anonymous

4. 仕上げに

最後に/etc/ttysの設定をする。
ppp-onlyは、tty02にはlogin:プロンプトださずにいきなり pppにご挨拶させろ、という設定である。 これをやらないとRT80iと仲良くできなかった。
モデム設定の問題だと思うのだが、この状態でtipするとcarrier lostと言って 遊ばせてくれない。 まあ、そのうち直そう。
tty02   com     PIAFS ppp-only bidir

5. テストの前に

以下を忘れないこと。

6-a. テストその1: bsdi -> RT80i

/usr/bin/ppp -X debug-all Ppapとかやるとダイヤルするはずである。 /usr/bin/pppのdebug出力(標準エラー出力)と、 RT80iのログ(show logで見える)をよーく睨んで直しましょう。

6-b. テストその2: RT80i -> bsdi

connect 1とかやるとダイヤルするはずである。 /usr/bin/pppのdebug出力(/var/log/ppp.debug)と、RT80iのログ(show logで見える)をよーく睨んで 直しましょう。

ちなみに、RT80i -> bsdiの呼び出しのときには、 こんなエラーメッセージが何度かでます。 どちらも人間さま用メッセージが邪魔なのだと思うのだけれど。

Dec 12 10:22:42 dialup Async to Sync: CRC unmatch
Dec 12 10:22:42 dialup PP[ANONYMOUS01] Non LCP packet in not LCP OPENED state

7. 実運用のための調整

適宜、ppp接続が完了したときの経路の設定をどうするべとか、 そういう細かなことを直しましょう。

callbackの場合、bsdi箱からみるとdialinなのに、経路設定などの面からみると dialout(dialup)なので、そのへんは適宜対処するべし。

8. 完璧

両方向完璧になりましたね? よかったよかった。 まずはお茶でものんでひとやすみしてください。

callbackに興味のないひとはここまででおしまい。 これできみも街角netsurfer!(おいおい)


callbackのための改造

さて、bsdi BSD/OS 3.0の/usr/bin/pppはcallbackのためのプロトコル、 ms-cbcp(microsoft callback control protocol)を喋ることができない。 ms-cbcpの「まともな」仕様書はこの世のどこにもないと言っていいだろう。 というわけで、他の実装と繋いで動かしながら様子を見るしかできないのだ。

まずはこのパッチをあてる: ppp.diff (97/12/12 18:00にパッチ更新しました。ppp.sys.5も直した)

注意。 このパッチは、ms-cbcpの「callbackされる側」の動作しか実装していない。 「callbackする側」、すなわちbsdi箱のモデムサーバみたいなのには 使えないぞ (改造したら送ってくれ)。 で、makeしてmake install、/usr/bin/pppを入れ換える (上書きされたくなければちゃんとコピーを残しておきましょう)。

/etc/ppp.sysの呼び側の設定に、:cbcp:を加える。

# bsdi -> RT80i
Ppap:\
	:immediate:\
	:idle-timeout=0:\
	:phone-number=0312345678:\
	:pap-peerid=itojun:\
	:pap-passwd=naisho:\
	:speed=115200:\
	:device=/dev/tty02:\
	:cbcp:\
	:tc=Dialout:
これで/usr/bin/ppp -X debug-all Ppapとかやると、 おもむろにppp接続にいって、認証が終ったとたんに回線が切れるはずだ。 で、5秒くらいするとRT80iくんからでんわがかかってきて、 回線が繋ぎ直されるはずである。

これできみも街角call-backer!(おいおい) good luck!


PHSの電話料金に関する考察

なぜcallbackしたいのか? それは、PHS(NTT personal)の電話料金体系からみて、 のが結構得であり、 月にどんだけ使うかわかんない場合にはよい方策だからだ。
以下の考察では、1998年2月以降の課金体系で計算しているので、 とりあえずそこんとこよろしく。 1998年2月以前の料金体系でも多分これが得だけど。

まず、PHSの電話料金プラン(月額料金)は以下のようになっている:

  1. プラン270: 月額固定料金2700円
  2. プラン270+32Kデータ通信プランF5: 月額固定料金4600円(= 2700+1900)
  3. プラン198: 月額固定料金1980円
でもって、実際の呼ごとの課金は以下のとおりである。
  1. プラン270:
  2. プラン270+32Kデータ通信プランF5:
  3. プラン198:
地上網(ISDN/アナログ問わず)は、必ず課金単位が10円、というのがミソ。

さて、ここで以下のシナリオを考える。

「A/Bさんのコールバック版」がないのは、「A/Bさん」よりも 高くて意味がないからだ(もちろん、課金を地上網側に追いやるだけ ---たとえば、地上網の電話代は会社もちとか---なら意味がある)。

まず、月額基本料のことを忘れて、1通話あたりのコストを計算する。

呼あたりの料金を考えたら、AさんとBさんが安い。 CさんとDさんは勝負にならない。 CさんとDさんの呼ごとの金額のグラフを描いてみると、 CさんとDさんのどっちが得になるかの分岐点は、「8分」だ。

つぎに、月額基本料のことも考えて、月あたりのコストを計算する。

PHSの料金計算で嫌らしいのは、「月あたりの呼の数」を考えないと 料金計算ができないことである。 とりあえずDさんを除いて考えると、 ということがわかる。
Dさんが月に1回しか通話しなかった場合、15回通話した場合、 30回通話した場合のグラフを描いてみる。

呼の数が少ない(= 1回あたりの通話時間が長い)場合にはDさんが 一番得であることがわかるだろう。

ここで重要なのは、「CさんとDさんは契約を変えずにどっちにでも移れる」 ということである。 ようは、コールバック設定つかえばDさんに、コールバックしない設定を 使えばCさんになれる。 また、「一度も通話がなかった場合」の料金は、当然C/Dさんが安い。 Bさんはなにも使わないのに4600円もとられてシャレにならない。

というわけで、月150分程度しか使わないのであれば、

のがおトク、というおはなしでした。

御協力


itojun hack ESD Saturday meeting Wednesday meeting Yobichosa bookshelf comics
1995: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1996: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1997: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1998: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1999: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2000: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2001: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2002: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2003: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2004: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2005: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2006: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

diary update scanner 1 2 3 4
places I frequently visit: Altavista PCWatch comics LPF bookmarks Free Mr.Kaneko! / voice your concern on manga regulation! Amazon.co.jp associate PSE法反対! [六ヶ所村問題] [software patent] [共謀法反対]
Unauthorized reproduction is strictly prohibited unless specially noted. If you have problem reading the text (KSC5601 with ctext/iso-2022-jp-2 encoding) use w3m-m17n or mozilla.
Google