pppd(Point to Point Protocol Daemon) を用意して、pppd を動かすのに必要な知識
を身につけて動作させてください。関連する RFC のドキュメントや
Linux PPP HOWTOを調べてください。
相手側のマシンにログインする予定がなければ、(m)getty は必要ありません。
また ppp 接続の制御に必要な(ダミーの)ユーザ・アカウントもいりません。相手
にダイヤルする必要がないので、chat スクリプトも不必要です。
実際のところモデムの回路やここまで行なってきた設定はヌル・モデムケーブル
を使った接続の仕方とほとんど変わりありません。つまり pppd の設定はヌル・
モデムケーブルを使用した場合と同じやり方で行なう必要があるということです。
接続を安定させるために、下記の基準にしたがって設定を行ってください。
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 オプションは新しいディストリビューションを使った時に必要になる場合
があります。
下記の /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 を起動する場合もありますが、テストしていません。
デフォルト・ルートは、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のルーティングを解説しているセクションに載っています。
モデムをテストした時と同様に、思いつくすべてのテストをしてください。
うまくいったら、自転車で相手側に設置するモデムを持っていきましょう。
うまくいかなかったら、まず COM ポートの速度設定のチェックからはじめてみて
ください。
よくやるミスは、Minicom でモデムに通信速度を設定して、それから pppd の
設定をした時に、モデムとは別の速度で設定をしてしまうというものです。たぶん
このミスではないでしょうか。これでは動作しません。速度の設定は
同じにしてください!