ここで使う mgetty は、とても面白いソフトウェアで、modem への着信をずうっと監視して いて、通常の Login:, ppp 接続, fax などを判別して着信を切換えてくれます。このうち ppp で使う時には -DAUTO_PPP の設定で組立てられていることが必要ですが、pkgsrc で make すると、それは既に組込済となっています。まず、/usr/pkgsrc/comms/mgetty-sendfax/ で make と make install をしておきます。
1. /dev/tty00 または /dev/tty01 モデムの接続を確認します。 2. /etc/ttys 上記 tty00 等を mgetty に監視させます 3. /usr/pkg/etc/mgetty+sendfax/mgetty.config mgetty の速度など /usr/pkg/etc/mgetty+sendfax/login.config mgetty 切換の設定 4. /etc/ppp/options pppd の設定 /etc/ppp/pap-secrets pppd のパスワードこれらについて順を追って説明します。以下で cu という字が出て来ますが、他の機械 を呼ぶための道具で cu(1) に説明があります。Call Up の略です。
モデム口 (電話の印の書いてある口)、または内蔵モデム は /dev/tty00 で見えます。またプリ ンタ口につないだ場合は /dev/tty01 で見えます。tty00 の場合、所有者が root.wheel になっ ているので cu した時に Permission Denied になってしまいます。その時は (root で)
利用する口 | tty 名 | 注 |
内蔵モデム | /etc/tty00 | 使うにはカーネルの変更(入替)が必要 |
モデム口 | /etc/tty00 | |
プリンタ口 | /etc/tty01 |
mgetty に モデムのつながった口を監視させるために /etc/ttys を変更します。上記の表 のうち、自分の使おうとしている口に対応して tty00 または tty01 の行を次のように変更し ます。 tty00 "/usr/libexec/getty std.38400" vt100 off secure ↓ tty00 "/usr/pkg/sbin/mgetty" unknown on あるいは debug が必要な時は、例えば tty00 "/usr/pkg/sbin/mgetty -x 4" unknown on などのように debug 水準を設定しておきます。 /etc/ttys を変更した時には init に、それをもう一度読むように kill -1 1 をして signal を送ります。-x 4 を追加した時などには更に mgetty の方を kill します。
+-------- /usr/pkg/etc/mgetty+sendfax/mgetty.config -------- | speed 38400 | ↓ | speed 115200 +------------------------------------------------------------login.config は ppp に使うだけなら、次のように実質一行だけを加えておきます。
+-------- /usr/pkg/etc/mgetty+sendfax/login.config ---------------- | # Automatic PPP startup on receipt of LCP configure request (AutoPPP). | /AutoPPP/ - a_ppp /usr/sbin/pppd +-------------------------------------------------------------------これを少し説明しますと、
/AutoPPP/ の文字列自体は一種のおまじないです。「ppp で接続要求があった時には」の意味です。 - には通常は userid を指定しますが、ppp の時は不要ですので - と書いておきます。 a_ppp は utmp_entry と言って who や last で見た時に表示される名前で、何でもいいので すが、こう書いておきます。そうして最後に /usr/sbin/pppd を起動する、と指定します。実際には、この後に pppd に渡す引数も書くことが出来るのですが、/etc/ppp/options にも同じ 内容が指定出来るので、ここの例では空にしています。
08:49:32 y00 mgetty: experimental test release 1.1.26-Apr16 08:49:32 y00 check for lockfiles 08:49:32 y00 locking the line 08:49:32 y00 WARNING: DSR is off - modem turned off or bad cable? 08:49:32 y00 lowering DTR to reset Modem 08:49:33 y00 clean_line: only 500 of 907 bytes logged 08:49:33 y00 send: \dATQ0V1H0[0d] 08:49:33 y00 waiting for ``OK'' ** found ** 08:49:33 y00 send: ATS0=0Q0&D3&C1[0d] 08:49:33 y00 waiting for ``OK'' ** found ** 08:49:33 y00 mdm_send: 'ATI' 08:49:33 y00 Generic Rockwell modem (56000) 08:49:33 y00 mdm_send: 'ATI3' 08:49:34 y00 mdm_send: 'ATI4' 08:49:34 y00 additional info: 'Apple Internal Modem' 08:49:34 y00 modem quirks: 0004 08:49:34 y00 mdm_send: 'AT+FCLASS=2' -> OK 08:49:34 y00 mdm_send: 'AT+FCLASS=0' -> OK 08:49:34 y00 mdm_send: 'AT+FAA=1;+FCR=1' -> OK 08:49:34 y00 mdm_send: 'AT+FBOR=0' -> OK 08:49:34 y00 mdm_send: 'AT+FLID="49 115 xxxxxxxx"' -> OK 08:49:34 y00 mdm_send: 'AT+FDCC=1,5,0,2,0,0,0,0' -> OK 08:49:34 y00 waiting...のような表示から
11:55:15 y00 wfr: waiting for ``RING'' 11:55:15 y00 send: ATA[0d] 11:55:15 y00 waiting for ``CONNECT'' ** found ** 11:55:35 y00 send: 11:55:35 y00 waiting for ``_'' ** found ** 11:55:47 ##### data dev=tty00, pid=436, caller='none', conn='115200', name='', cmd='/usr/bin/login', user='hogehoge'のようになって接続元に foo!login: が表示されるはずです。この login: は mgetty 途中で 横取りした上で、表示しているのですが、普通に login 出来ます。では更に ppp 着信の設定 をします。
mkdir /etc/ppp しておきます。その上で、次のような内容を用意します。 +---------/etc/ppp/options -------------------- | +pap | auth | debug | proxyarp +---------------------------------------------- proxyarp は、「代理 ARP をする」という意味で 「Address Resolution Protocol が来た時 には代理で行なう。そうすると、Ethernet 側につながっているのと同じように見える」とい う設定です。これは必要に応じて有無があります。 IPv6 対応には ipv6cp-use-persistent というのが使えませんでしたので次のようにすれば いいかなと思いますが、あまりうまく行っていません。 +---------/etc/ppp/options -------------------- | +ipv6 | ipv6cp-use-ipaddr | +pap | auth | debug | proxyarp +----------------------------------------------
+---------/etc/ppp/pap-secrets ---------------- | my_login * oYdufIp0r1Kd6 * +----------------------------------------------crypt() を使った暗号化については【ppp 接続について -- 手動】の節から始まる 【/etc/ppp/pap-secrets】認証の項目を参照して下さい。
tail -f /var/log/mgetty.tty00のようにして見張っています。その中で、次のような文字があれば、pppd を起動する ところまでは行っています。
##### data dev=tty00, pid=434, caller='none', conn='115200', name='', cmd='/usr/sbin/pppd', user='/AutoPPP/'cmd=' の後が /usr/bin/login では pppd に渡っていません。その時はまず、上に書いた /usr/pkg/etc/mgetty+sendfax/login.config の設定を確認します。 僕の場合は
+------- | * - - /usr/bin/login @ | /AutoPPP/ - a_ppp /usr/sbin/pppd +-------と書いてあって、/AutoPPP/ の前に * に一致しているのに気付くのに時間がかかったこと があります。(表示の字が小さくて * を # と見ていました。それを /usr/pkg/etc/mgetty+sendfax/mgetty.config の中で、
debug 8として、やっと見付けたという経験をしてしまいました。)
+------- | /AutoPPP/ - a_ppp /usr/sbin/pppd | * - - /usr/bin/login @ +-------