  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 (和訳) <http://www.linux.or.jp/JF/JFdocs/Modem-HOWTO.html>

  o  外付けモデムは内蔵モデムよりも速い。

  o  ISA スロットにさす内蔵モデムはPCI スロットで使うものよりもお勧めで
     す。 (何か別のもの用に PCI スロットを残しておくことができます)

  o  Plug&Play モデムは使用しない。 もしすでに使用しているなら、
     Plug&Play オプションを利用し、空いている com ポート上にモデムを設定
     します (Plug&Play-HOWTO を参照してください)。

  適切なモデムを入手したら、システムにモデムを設定しなければなりません。
  モデムが、どの com ポート上にあるかをチェックします。それからハード
  ウェアと /dev/modem にシンボリックリンクを作ります。たとえば、２つ目の
  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 を編集し、２つ目の com ポ
  ート上にモデムを加えます。

    s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100

  １つ目の 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
  が私たちに電話をかける番です。難しいことではありません。２つのファイル
  を編集しなくてはいけません。/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 プロジェクト <JF@linux.or.jp> 宛に連絡してくだ
  さい。

  校正:

  o  武井伸光 <takei@webmasters.gr.jp>

  o  山下義之 <dica@eurus.dti.ne.jp>

  o  大森保英 <dasen@typhoon.co.jp>

