call-back mini HOWTO Pawel Skonecki (stona@fizyka.umcs.lublin.pl) v1.1a, June 2000 翻訳:中谷千絵 (jeanne@mbox.kyoto-inet.or.jp) 日本語訳:v1.1a-j 2000年 8月 3日 この文書は Linux システムとモデムを使ってコールバック(折り返し電話)を 設定する方法について述べています。 Anna の忍耐に深く感謝します。 ______________________________________________________________________ 目次 1. はじめに 1.1 ご意見 1.2 配付について 2. 手順 2.1 PART I: 自宅でネット? 2.2 PART II: モデムについて 2.3 PART III Linux に電話をかける 2.4 PART IV Linux が電話をかける 3. PART V 要約 4. 日本語訳について ______________________________________________________________________ 1. はじめに 1.1. ご意見 この文書についてのご意見をお待ちしています。私はこの文書を作成するため に、出来るだけ完全に情報を集める努力をしました。何か間違いを見つけられ たときはどうぞお知らせください。提言や訂正意見を歓迎します。そのような 貢献がこの文書をさらによいものにします。質問に答えるのはかまいません が、まずは全部の内容に目を通されてからにしてください。 1.2. 配付について この文書はLDP (Linux Documentation Project)の条件のもとで配付できま す。許諾条項を入手できないなら著者と連絡を取ってください。この文書はフ リーです。 2. 手順 2.1. PART I: 自宅でネット? ほとんどの人は仕事場でインターネットを使っています。しかし、自宅である いは仕事場以外の場所でもたびたびネットを必要とすることがあります。在宅 での作業は、会社からの作業よりもより安上がりになるかもしれません。もっ ともよい解決方法は Linux のサーバにコールバックソフトウェアをインスト ールすることだと思います。コールバックは、費用を会社負担とし、リストし た電話番号に再ダイアルできるようにします。運用方法を紹介しましょう。モ デムがコールバックしてもよいと許可されている人は、まず Linux のサーバ に電話をかけて認証を受けます。ユーザ側では、モデムを "モデムを切断す る" という設定に変更しておくと、同時に Linux はユーザに電話をします。 ユーザは再度認証を受けます。接続が完了するとサーバには課金がかかりま す。ユーザは接続を開始したときだけの料金を払うのです。許可されていない 人たちにコールバックが使えないように、コールバックプログラムには二度の 照合や追加オプションがあります。社内ネットワークやインターネットからの 接続だけにアクセス者を限定できます。コールバックはとても融通がききま す。以下、Linux システムでのコールバックサーバのコンフィグレーションを 公開し、お使いのコンピュータで再電話接続を設定する方法を紹介していま す。 2.2. PART II: モデムについて 管理者はさまざまな種類のモデムを使いたがりますが、モデムを購入するとき は、いくつかの注意事項を忘れてはいけません。 o Linux で動かないので、Win-Modem は買わない。 訳注:Win-Modem は Linux 上で必ずしも動かないわけではないようです が、 Win-Modem でコールバックがうまくいくかどうかは不明です。 The Winmodems-and-Linux HOWTO やModem-HOWTO などを参考にしてください。 Modem HOWTO は JF に和訳がありますので参考にしてください。 Modem- HOWTO (和訳) o 外付けモデムは内蔵モデムよりも速い。 o ISA スロットにさす内蔵モデムはPCI スロットで使うものよりもお勧めで す。 (何か別のもの用に PCI スロットを残しておくことができます) o Plug&Play モデムは使用しない。 もしすでに使用しているなら、 Plug&Play オプションを利用し、空いている com ポート上にモデムを設定 します (Plug&Play-HOWTO を参照してください)。 適切なモデムを入手したら、システムにモデムを設定しなければなりません。 モデムが、どの com ポート上にあるかをチェックします。それからハード ウェアと /dev/modem にシンボリックリンクを作ります。たとえば、2つ目の com ポートにモデムがつながっているなら、次のようにします。 ln -s /dev/cua1 /dev/modem リンクを確認しておきます。 lrwxrwxrwx 1 root uucp 9 Sep 19 19:10 /dev/modem -> /dev/cua1 別の com ポート上にモデムがつながっているなら、モデムデバイスと com ポ ートは次のような関係になっています。 /dev/cua0 is com1 /dev/cua1 is com2 /dev/cua2 is com3 /dev/cua3 is com4 新しいカーネルでは次のようになっています。 /dev/ttyS0 is com1 /dev/ttyS1 is com2 /dev/ttyS2 is com3 /dev/ttyS3 is com4 minicom を使って設定をチェックします。 訳注:kernel-2.2.x の /usr/src/linux/Documentation/Changes の General Information に次のような記述があります。 /dev/ttyS* で設定したほうがよ いでしょう。 Also, please remember that cua* devices are now obsolete. Switch to the corresponding ttyS* device instead (e.g., cua0 -> ttyS0, cua1 -> ttyS1, etc.). cua* デバイスは現在は使われていません。かわりに対応する ttyS* デバイスに変更します。 (たとえば、cua0 は ttyS0 に、cua1 は ttyS1 のようになります。) また mgetty のパッケージの doc のディレクトリに ttyS-cua.txt という ファイルが添付されているので参照してください。 2.3. PART III Linux に電話をかける Linux 上にアクセス可能なコールバックを作る最初の手順は、カーネルに適切 なパラメータを設定することです。カーネルに ppp が組み込まれているかど うかをチェックします。お使いのカーネルに ppp が組み込まれていない、あ るいはモジュールにもなっていないなら、カーネルを再構築し、ppp を組み込 まなければいけません。より詳しい情報は Kernel-HOWTO にあります。できて いますね。適切なカーネルをお使いですね。それではシステムにソフトウェア をインストールしましょう。コールバックプログラムは mgetty-sendfax と ppp の一部です。お使いのディストリビューションにすべてのものが入ってい るでしょう。コールバックシステムは二回認証を行いますから、サーバ側では ppp を走らせるユーザを作っておきます。 訳注 : /etc/passwd に以下の内容を追加します。 pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin 次にパスワードを変更します。/etc/ppp/pap-secret にパスワードについての 情報を追加しなければいけません(詳細は man pppd で確認してください)。 pppuser * password_for_pppuser * 訳注:$ cat /etc/ppp/pap-secret で確認しておきます。 このユーザは通常のシェルを持っていませんが /etc/ppp/ppplogin ファイル に存在します。このファイルは自分で作成します。たとえば vi を使って /etc/ppp/ppplogin を次のように編集します。 #!/bin/sh exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2 アドレス 192.168.1.1 はモデムを持つサーバのアドレスで、アドレス 192.168.1.2 は自分のモデムに割り当てるアドレスです。このファイルに実行 オプションを立てます。 ppp デーモンを使うので、このデーモンにオプショ ンを設定しなくてはいけません。 /etc/ppp/options ファイルを編集します。 netmask 255.255.255.0 proxyarp lock crtscts modem Proxyarp は、サーバにあるモデムを通じてインターネットに出て行くことが できるので、上記オプションで最も重要なものです。その他のオプションはお 使いのモデムの制御に使われます。オプション proxyarp を使わなければ、ユ ーザはローカルネットワークでだけ作業ができます。詳細は PPP-HOWTO やオ ンラインマニュアルで pppd を調べてください。 注:ARP [Address Resolution Protocol] それではサーバ上のモデムを設定しましょう。サーバ起動後に接続を受け入れ る準備をしなければいけません。 /etc/inittab を編集し、2つ目の com ポ ート上にモデムを加えます。 s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100 1つ目の com ポートに対しては次のようになります。 s0:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100 init q を送ります。記録にどんなエラー情報も出ないなら、次に進みましょ う。 /etc/ppp のディレクトリに戻り、 options.ttyS1 というファイルを作 ります(com1 ポートのモデムには options.ttyS0 になります)。 IP_local: IP_remote われわれのネットでは次のようにしています。 192.168.1.1:192.168.1.2 さらにすることがあります。 /etc/mgetty+sendfax/login.config というファ イルをチェックします。一番重要なものは次の行です。 /AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach kdebug 7 debug 他の行は #マークをつけることができます。 pppuser はpppd を稼働させ、インターフェースとして動くようにしなければ なりませんから、次のコマンドで、pppd に suid を設定します。 chmod u+s /usr/sbin/pppd 訳注:$ ls /usr/sbin/pppd そうすればこのようになります。 -rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd 私のサーバでは pppd の再起動を優先させた後に問題があったので、 cron に 加えるのはよい考えだと思います。サーバはルータとして動きます。 IP forwarding を使えるように /etc/rc.d/rc.local に次の行を加えます。 echo "1" > /proc/sys/net/ipv4/ip_forward RedHat のユーザの場合は、 FORWARD_IPV4=false から FORWARD_IPV4=true に /etc/sysconfig/network ファイルで変更できます。 認証のために Linux に電話をかけます。そのためにスクリプトを使います。 MS Windows を使うなら、"接続のあとで端末を呼び出す" のオプションをマー クしておきます。ユーザ名 pppuser 、パスワードは pppuser のパスワードで ログインします。すべてがうまくいきますように。 2.4. PART IV Linux が電話をかける 私たちはすでに Linux サーバ に電話をかけることができます。さて、Linux が私たちに電話をかける番です。難しいことではありません。2つのファイル を編集しなくてはいけません。/etc/mgetty+sendfax/callback.confという ファイルを作り、それを空っぽのファイルにしておきます。 次にユーザの電話番号を登録します。さきほど接続に使った電話番号を書きこ みます。そのために /etc/mgetty+sendfax/login.conf に次のような行を加え ます。 call - - /usr/sbin/callback - S 123456 電話が非ユーザの場合は接続の開始を要求します。 /etc/mgetty+sendfax/login.conf に登録された電話番号 (例では 123456 と しています)に電話をかけるプログラムを動くようにしておきます。その他ユ ーザも同じ方法で登録します。どのように動いているのか説明しましょう。サ ーバに電話をかけると、認証を受けます。電話をかけると非ユーザとしてログ インするのです。自分のコンピュータのスクリプトがモデムをハングアップし ます。そのまま待機すると接続は切られます。すると、コールバックプログラ ムが起動し、折り返し呼び出しを受けます。パスワードを使って pppuser と して再度認証されると、電話がつながり ppp が確立します。これですべてで す。稼働状態はとても単純です。MS Windows をお使いなら、お使いの電話番 号にダイアルアップをインストールしなければなりません。モデムプロパティ の"プロパティ- - ->詳細- - -> 追加オプション" に次のモデムコマンドを書 き込みます。 &c0s0=1 モデムプロパティの窓を閉じ電話をかけます。上に示した方法でログインしま す。Linux を使うならスクリプトを使わなければいけません。Linux ではこれ が一番良いというスクリプトをひとつだけ提示するのは難しいです。システム において、ppp をうまく設定することがまずは重要なことです。(次に示した スクリプトを使って pppuser として電話をすることができます)。下記のスク リプトは、 A. Gozdz によって書かれました。 これらのスクリプトは Slackware で動きます。 ppp デーモンのコンフィグレーションファイル /etc/options (com2 ポートに つながっているモデムの例) lock defaultroute noipdefault modem /dev/cua1 33600 crtscts debug passive asyncmap 0 目的別のスクリプトです。 o /etc/ppp/ppp-call$)B #!/bin/bash teksta="Connection failed" tekstb="Probably, You will be connect" # /sbin/setserial /dev/cua1 spd_vhi killall -INT pppd 2>/dev/null rm -f /var/lock/LCK* /var/run/ppp*.pid (/usr/sbin/pppd -detach /dev/ttyS1 115200 \ connect "/usr/sbin/chat -v -f /etc/ppp/pppcallback" &) || \ (echo $teksta; ls marsss >/dev/null; exit 1) echo $tekstb exit 0 o /etc/ppp/pppcallbacks TIMEOUT 60 ABORT 'ERROR' ABORT 'BUSY' ABORT 'NO ANSWER' ABORT 'NO DIALTONE' ABORT '\nVOICE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' ' TIMEOUT 75 OK ATDT123456 CONNECT '' ogin:-ogin: ppp_pseudouser TIMEOUT 180 CONNECT '' TIMEOUT 20 ogin:-ogin: pppuser sword:-sword password_for_pppuser o さて ppp-call を実行しましょう :) 次のスクリプトはLINUX RED HAT 6.x です。 o /etc/ppp/options lock defaultroute noipdefault modem 33600 crtscts debug passive asyncmap 0 o /etc/ppp/pppcallback TIMEOUT 5 ABORT 'ERROR' ABORT 'BUSY' ABORT 'NO ANSWER' ABORT 'NO DIALTONE' ABORT '\nVOICE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' ' TIMEOUT 40 OK ATDT5376443 CONNECT '' ogin:-ogin: ppp-pseudo-user TIMEOUT 180 CONNECT '' TIMEOUT 20 ogin:-ogin: pppuser sword:-sword password_for_ppuser o /usr/bin/ppp-call #!/bin/bash teksta="Connection failed" tekstb="Probably, You will be connect" # /sbin/setserial /dev/cua1 spd_vhi killall -INT pppd 2>/dev/null rm -f /var/lock/LCK* /var/run/ppp*.pid (/usr/sbin/pppd -detach call ppp_call &) || \ (echo $teksta; ls marsss >/dev/null; exit 1) echo $tekstb exit 0 o さて ppp-call を実行しましょう :) M$ Windows をお使いなら接続のために次のスクリプトを使えます。私はこの スクリプトのテストをしていません(私はターミナルを使っています)が、質問 があれば Adrian Debkowski(adrian@cr-media.pl) に尋ねてください。 proc main delay 1 waitfor "ogin:" transmit "call^M" waitfor "RING" transmit "ATA^M" waitfor "CONNECT" waitfor "ogin:" transmit "pppuser^M" waitfor "word:" transmit "ppp^M" endproc 3. PART V 要約 コールバックのコンフィグレーションは複雑ではありません。一番大事なこと は、Linux 上の ppp サーバの適切な設定です。サーバにアクセスして設定す る方法については私にはわかりません。上記のコンフィグレーションは何回も のテストの結果完成されたものですが、別の方法でもできます。 pppd のマ ニュアルや NET4-HOWTO、 PPP-HOWTO など関連文書に目を通されることをお勧 めします。 4. 日本語訳について 翻訳に関するご意見は JF プロジェクト 宛に連絡してくだ さい。 校正: o 武井伸光 o 山下義之 o 大森保英