実践で学ぶ、一歩進んだサーバ構築・運用術

第 4 回 UUCP の活用


Taylor UUCP の設定例

ozenji という名前のノード(ホスト)から, ノード名が gcd である GCD*8 のゲートウエイへ UUCP 接続する場合を例に, Taylor UUCP の設定方法を説明します。 設定ファイルを 表 2 に示します。 設定ファイルを置くディレクトリは, コンパイル時の設定で変更可能ですが, 通常は /etc/uucp か /usr/conf/uucp であることが多いようです。 config ファイル(メイン設定ファイル)以外の設定ファイルは, config ファイルでパスを設定可能です。 また, config ファイルは実行時オプションで変更することもできます。

表 2 Taylor UUCP の設定ファイル
設定ファイル内容
configメイン設定ファイル
sys接続相手設定ファイル
portポート設定ファイル(発呼用)
dialダイアル設定ファイル(発呼用)
callアカウント・ファイル(発呼用)
passwdアカウント・ファイル(着呼用)

発呼側(ozenji)の設定

UUCP で発信するマシンに必要な設定を, 各設定ファイルごとに解説します。

● config

メイン設定ファイルです。 自ノード名, 作業用ディレクトリ, 他の設定ファイルのパス名, ログ・ファイル名など, UUCP システム全体に関係する設定を行います。 ほとんどはデフォルトの設定をそのまま使えばよいので, ここでは, 自分のノード名だけを設定しています(図 13)。


nodename   ozenji
図 13 config ファイルの設定例

自分のノード名以外は,ほとんどデフォルトのままで構いません。

● sys

接続する相手ノードごとの設定を行うファイルです(図 14)。 「system」で始まっている行から次の「system」行までが, それぞれの相手ノードごとの設定で, 最初の「system」行までは, すべてのノードに共通するデフォルト設定です。


call-login      *
call-password   *
time            Any
port            ACU
chat            "" \r\c ogin:-\r\c-ogin:-\r\r\c-ogin: \L word: \P
commands        rnews rmail

system          gcd
alias           gcd.org
phone           044-XXX-XXXX

system          ttyS0
port            ttyS0

図14 sys ファイルの設定例

この例では, 相手ノードとして「gcd」を定義しています。 接続用のポート(「port」行)として 「ACU*9」(後述する port ファイルで定義)を用い, 電話番号は「044-XXX-XXXX」(一部伏せ字)としています。

ダイヤルアップしたときのログイン方法を「chat」行で指定しています。 この指定では, まず改行(\r)を送信し, 「login:」プロンプトが返ってくるのを待って, アカウントID(\L)を送信します。 さらに「Password:」プロンプトが返ってくるのを待って, パスワード(\P)を送信します。

ここで「\L」,「\P」で送信する実際の文字列は, それぞれ「call-login」行,「call-password」行で指定します。 ですが, アカウント ID はともかくパスワードを sys ファイルに直に書いてしまうと, この設定ファイルを一般ユーザーから読めない設定にしなければならないので, 通常はここで示した例のように「*」を指定しておいて, アカウント ID とパスワードは call ファイル(発呼用アカウント・ファイル)に書くようにした方がよいでしょう。

call ファイルは 図 15 に示すように, 接続する相手ノードごとに, ノード名, アカウント ID, パスワード*10 を空白で区切った行を列挙します (この例では接続先が1 つだけなので 1 行だけです)。


gcd   Uozenji   h=7kjiZe
図 15 call ファイルの設定例

接続する相手ノードごとに,ノード名,
アカウント ID ,パスワードを設定します。

● port

接続するためのポートを定義するファイルです(図 16)。 「port」行から次の「port」行までが, それぞれのポートごとの設定です。


speed       115200

port        ACU
type        modem
device      /dev/ttyS0
dialer      hayes

port        ttyS0
type        direct
device      /dev/ttyS0

図 16 port ファイルの設定例

ポート「ACU」はモデム型の装置で, データの入出力には「/dev/ttyS0」を使用し, 転送速度は 115200 ビット/秒, ダイアル方法は「hayes*11」(後述する dial ファイルで定義) であるという意味です。

ポート「ttyS0」の「type direct」とは, ダイアル装置が不要な直接接続という意味ですが, 実際には /dev/ttyS0 は前述したようにモデムに接続されているわけで, ここではデバッグ等の目的でモデムを直接操作するために定義しています。

例えば, cu コマンドは sys ファイルで設定した相手ノードへ接続するためのコマンドですが,


% cu ttyS0

と実行することによりモデムにつながり, AT コマンドを入力してモデムを直接操作することができます。

● dial

モデム型の装置においてダイアルする方法を定義するファイルです(図 17)。 「dialer」行から次の「dialer」行までが, それぞれのダイアル方法の設定です。


chat-fail       BUSY
chat-fail       NO\sCARRIER
dialer          hayes
chat            "" AT OK ATD\T CONNECT

図 17 dial ファイルの設定例

ダイアル方法「hayes」は, まず「AT」を送信し, モデムから「OK」が返ってきたら, 次に「ATD」に続けて電話番号(\T)を送信する, モデムから「CONNECT」が返ってきたら成功, 「BUSY」または「NO CARRIER」が返ってきたら失敗, という意味です。

発呼側(ozenji)の動作確認

以上で, 発呼側のノード ozenji で必要な設定ファイルがすべてそろいました。 まず cu コマンドで相手ノード gcd へ接続してみます。 gcd の「login:」プロンプトが出れば成功です。 続いてアカウント ID とパスワードを手で入力してみます。 「Shere=相手ノード名」が出るか確認します(図 18)。


% cu gcd
login: Uozenji
Password:h=7kjiZe
Shere=gcd

図 18 発呼側の動作確認

接続後,アカウントID とパスワードを手で入力して
「Shere=相手ノード名」が出るか確認します。

次に uucico を実行してみます。 ログ・ファイル(通常は /var/spool/uucp/Log)で, UUCP 接続が正常に行われたか確認します。


% uucico -s gcd

もしエラーが生じている場合は, --debug オプションを使ってデバッグ・レベルを上げ, 詳細なログを出力させるとよいでしょう。

着呼側(gcd)の設定

着呼側は, かかってくる電話を受けるだけですから, ダイアル方法などを細かく指定する必要がある発呼側に比べれば Taylor UUCP 自体の設定は簡単です。 半面, 電話を受けてから uucico へ制御を渡すまでが少々複雑です。

電話を受けるのが UUCP 接続の場合だけであれば単純ですが, UUCP だけのために電話番号を 1 つ割り当てるのはもったいないので, 通常は複数のサービスに対応させる必要があるからです。 例えば GCD のゲートウエイの場合, 1 つの電話番号で

を受付けています。 接続のタイプによって適切なコマンドを起動するために mgetty+sendfax*12 を使っています。

mgetty+sendfax に含まれる mgetty プログラムは, login.config 設定ファイルで, アカウントID ごとに起動するプログラムを設定できます。 GCD のゲートウエイの場合, 図 19 のように設定しています。


U*              uucp    @       /usr/libexec/uucp/uucico -l -u @
/AutoPPP/       uucp    ppp     /usr/local/etc/paplogin
*               -       -       /bin/login @

図 19 login.config の設定例

mgetty の設定ファイル「login.config」で, アカウント ID ごとに起動するプログラムを設定することができます。

つまり,FAX モデムからの信号を mgetty プログラムが監視していて, データ着信があると login: プロンプトを出します。 1 文字目が「U」であるアカウントID (「U*」の行で指定)を受信すれば uucico を実行し, PPP フレーム(「/AutoPPP/」の行で指定)を受信すれば PPP の PAP 認証を行います。 それ以外のアカウント ID(「*」の行で指定)を受信した場合は, login プログラムを実行します。 FAX 着信の場合は, mgetty は FAX データを受信します。

したがって, アカウント ID「Uozenji」を受信した場合は, 「uucico -l -u Uozenji」が実行されます。 -l オプションは, uucico に「login:」および「Password:」プロンプトを表示させるためのものです。 ただし, 「-u アカウントID」オプションを付けると「login:」プロンプトをスキップします。

ID とパスワードは, passwd ファイル(着呼用アカウント・ファイル)に, 「Uozenji h=7kjiZe」のように書いておきます。

config ファイルと sys ファイルは, 発呼側とほぼ同様です。 例えば, config ファイルは「nodename gcd 」のように自分のノード名を設定し, sys ファイルは, 相手ノードである ozenji を定義します(図 20)。 ozenji が gcd に接続するときのアカウント ID を Uozenji に限定するために, 「called-login」行を指定します。


commands	rnews rmail

system		ozenji
alias		ozenji.gcd.org
called-login	Uozenji

図 20 着呼側の sys ファイルの設定例

着呼側(gcd)の動作確認

適当な端末エミュレータ (cu コマンド,kermit コマンド, あるいは Windows95 標準の「ハイパーターミナル」など) で gcd へ電話をかけてみます。 「login:」プロンプトが返ってきたら, 「Uozenji」を入力し, 「Password:」プロンプトが返ってきたらパスワードを入力してみます。 「Shere=gcd」が返ってくれば成功です。 後は, 発呼側で uucico を実行して UUCP 接続を確立するだけです。

*8
筆者が運営する任意団体です。 個人で引いた OCN エコノミーの費用の一部を賄うために, さまざまなサービスを提供しています。 本連載では, この GCD でのサーバー構築, 運用法を例に挙げています。
*9
Automatic Call Unit(自動発呼装置)の略。 モデム(変調器復調器)とは独立してダイアル用の装置があった (つまりモデムにはダイアルの機能がなかった)時代の名残。 ここでは「モデム」と同義。
*10
もちろん, このパスワードは説明用にランダムに生成した文字列で, 実際のパスワードとは異なります。 念のため。
*11
米 Hayes 社が作成したモデム操作のための AT コマンド体系を指します。 最近のモデム(に限らず ISDN の TA やディジタル式携帯電話など) のほとんどすべてが, この AT コマンド体系を採用しています。
*12
FAX を受信することができる getty (UNIX 等でユーザーからのログインを受け付けるためのプログラム。 ユーザーからのアカウント ID の入力を受け付けた後, login プログラムを実行する)です。 詳しくは http://alpha.greenie.net/mgetty/ を参照してください。

(UUCP over TCP/IP)


本稿は日経Linux 2000 年 7 月号に掲載された、 実践で学ぶ、一歩進んだサーバ構築・運用術, 第 4 回「UUCP の活用」を日経BP 社の許可を得て転載したものです。

Copyright(C)2000 by 仙石浩明 <sengoku@gcd.org>
無断転載を禁じます

| home | up |

sengoku@gcd.org