次のページ 前のページ 目次へ

4. PPPD

pppd(Point to Point Protocol Daemon) を用意して、pppd を動かすのに必要な知識 を身につけて動作させてください。関連する RFC のドキュメントや Linux PPP HOWTOを調べてください。 相手側のマシンにログインする予定がなければ、(m)getty は必要ありません。 また ppp 接続の制御に必要な(ダミーの)ユーザ・アカウントもいりません。相手 にダイヤルする必要がないので、chat スクリプトも不必要です。
実際のところモデムの回路やここまで行なってきた設定はヌル・モデムケーブル を使った接続の仕方とほとんど変わりありません。つまり pppd の設定はヌル・ モデムケーブルを使用した場合と同じやり方で行なう必要があるということです。

接続を安定させるために、下記の基準にしたがって設定を行ってください。

4.1 設定

COM2 にモデムが接続されていて、こちらのアドレスが「Loc_Ip」、相手のアド レスが「Rem_Ip」、MTU は 576 とすると、/etc/ppp/options.ttyS1 は下記のよう になります。


crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
#noauth
-pap
persist

こちら側が 192.168.1.1 で 相手側が 10.1.1.1 なら /etc/options.ttyS1 は下記のようになります。


crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
#noauth
-pap
persist

相手側のシステムの options.ttyS1 は下記のようになります。


crtscts
mru 576
mtu 576
passive
10.1.1.1:192.168.1.1
-chap
modem
#noauth
-pap
persist

passive オプションは(再)接続数に制限をかけます(???)。persist オプション は、接続が切れた場合や最初の接続が失敗した場合に、pppd を接続待ちの状態に します。 ファイル転送(FTP や Web ブラウジング)をしながら、telnet をよくつかう場合は、 MTU や MRU を 296 ぐらいの小さい値にしたほがいいかもしれません。こうすると 相手側からの telnet のレスポンスが良くなるはずです。
telnet のレスポンスを気にしないなら、MTU と MRU は 1500 にした方がいいで しょう。 noauth オプションは新しいディストリビューションを使った時に必要になる場合 があります。

4.2 スクリプト

4.3 pppd を起動して、pppd を落ちないようにする

下記の /usr/local/sbin/PRem_Host.sh は pppd を起動します。このスクリプト を起動する前に COM ポートを設定しておかなければいけません(Rem_Host は 相手側のホスト名を表します)


#!/bin/bash
# Optional sleep
#/usr/bin/sleep 30
( /usr/sbin/pppd /dev/ttyS1 115200 ) &

このスクリプトはネットワーク・カードを設定するスクリプト(Debian なら /etc/init.d/network)から起動するようにしてください。念のため sleep の行は コメントアウトしてください。そうしたら、まず COM ポートを設定していること を確認してください。setserial を使っていればそこから呼び出すようにして ください。rc.local から呼び出してもかまいません。 Debian では /etc/rc.boot/ というディレクトリがあります。 Rolf Raar 氏によると 、 このディレクトリにあるスクリプトは、ファイル名のアルファベット順に実行 されます。setserial のスクリプトは、0setserial として起動されます。 2leased-lines という名前のスクリプトから呼び出した場合、そのスクリプトは 0setserial の後に実行されます。

古いシステムでは、速度を 115200 に設定できないことがあります。その場合は、 setserial で「spd_vhi」と設定してあるところを 38400 で接続するように設定 しなければいけません。

persist オプションがオーバーなら、ip-down を使って pppd を再起動する こともできます。


#!/bin/bash
case $2 in
     /dev/ttyS1)
          /usr/bin/sleep 30
          /usr/local/sbin/PRem_Host.sh &
          ;;
esac

pppd が落ちると、persist オプションか ip-up スクリプト(どちらにするか選択) が pppd の再起動をかけます。もしこれでも再起動しないなら /usr/local/sbin/test-Rem_Host-ppp スクリプトを使って、再起動をかけられます。 このスクリプトは相手側に接続されているインタフェースが存在するかどうかを チェックし、もしなければ pppd を起動させます。


#!/bin/bash
if ! ( /sbin/ifconfig | grep Rem_Ip > /dev/null )
then
     if [ ! -f /var/lock/LCK..ttyS1 ]
     then
          # PPP gone
          logger "Rem_Host PPP gone ; restarted"
          /usr/local/sbin/PRem_Host.sh &
     fi
fi

下記の行を crontab に設定して 5 分おきにこのスクリプトを走らせます。 もっと短い間隔で動かしてもかまいませんが、私は 2 分以下には設定しない方が いいと思います。


*/5 * * * *     /usr/local/sbin/test-Rem_Host-ppp

crontab を編集するには、「crontab -e」としてください。こうすれば編集が 終わると、cron が再起動します。crontab は「EDITOR」環境変数に設定されている エディタを起動します。この環境変数は、/etc/profile か  /.profile に記述 されています(export EDITOR=お好みのエディタ)。

/etc/inittab から pppd を起動する場合もありますが、テストしていません。

4.4 ルーティング情報の設定

デフォルト・ルートは、defaultroute オプションで設定するか、/etc/ppp/ip-up スクリプトで下記のようにします。


#!/bin/bash
case $2 in
     /dev/ttyS1)
          /sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
          ;;
esac

Ip-up は netdate を使ってシステム時計を同期させる場合にも使われます。

ip-up で必ずデフォルト・ルートの設定をする必要はありません。 ip-set で相手側へのルーティングを設定し、相手側でもこちら側へのルーティング を設定すれば OK です。ネットワーク・アドレスが 192.168.1.0 で、ppp の インターフェース・アドレスが 192.168.1.1 とすると、相手側の ip-up スクリプト は下記の様になります。


#!/bin/bash
case $2 in
   /dev/ttyS1)
      /sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0
      ;;
esac

「case $2」と「/dev/ttyS1)」の部分は、複数の ppp 接続を利用している場合に 利用されます。Ip-up は接続する度に起動し、「/dev/ttySx)」 と 「;;」に 囲まれたコマンドを実行するだけではなく、ttyS に合ったルーティング情報を 設定します。 ルーティングについての詳しい内容は、 NET-3-HOWTOのルーティングを解説しているセクションに載っています。

4.5 テスト

モデムをテストした時と同様に、思いつくすべてのテストをしてください。

うまくいったら、自転車で相手側に設置するモデムを持っていきましょう。
うまくいかなかったら、まず COM ポートの速度設定のチェックからはじめてみて ください。
よくやるミスは、Minicom でモデムに通信速度を設定して、それから pppd の 設定をした時に、モデムとは別の速度で設定をしてしまうというものです。たぶん このミスではないでしょうか。これでは動作しません。速度の設定は 同じにしてください!


次のページ 前のページ 目次へ