Leased line Mini HOWTO Rob van der Putten, rob@sput.signature.nl v1.7, 29 October 1999 高橋 聡 hisai@din.or.jp 17 Jan 2000 ____________________________________________________________ 目次 1. 専用線とは 2. 前提条件 3. モデム 3.1 モデムの設定 3.2 テスト 3.3 設定例集 4. PPPD 4.1 設定 4.2 スクリプト 4.3 pppd を起動して、pppd を落ちないようにする 4.4 ルーティング情報の設定 4.5 テスト 5. 参考文献 ______________________________________________________________________ 最新版(ベータ版)のドキュメントは、 にあ ります。 1. 専用線とは 専用線とは、決まった相手と常時データ通信を行う回線です。回線は通信会社 や同等のサービスを提供する会社から借り受けます。専用線は、ツイスト・ペ ア、同軸、光などのケーブルを指し、(誘導負荷)コイル、トランス、アンプ、 再生器などのハードウエアを含む場合もあります。 このドキュメントでは、 2 線式のツイスト・ペア ケーブルを使った専用線 で、モデムと pppd を使用する場合の設定方法を扱います。 しかし、 SLIP や pppd の取得方法、インストールのしかた、同期通信、ベー スバンド方式のモデムについては扱いません。 2. 前提条件 すでに pppd がマシンで動いていることが前提になります。 Minicom のよう なモデムを設定できるプログラムも必要になります。 3. モデム 専用線は電話交換機に接続されていませんし、電力(直流)も供給されておら ず、ダイヤル・トーン、ビジー・トーン、着信信号もありません。つまりモデ ム自体がこれらの状態に対応していなければなりません。 同じ種類(ファームウエアのバージョンも)の外付けモデムを 2 つ用意してく ださい。専用線を利用することでき、ダム・モードを持ったモデムである必要 があります。用意したモデムが本当にそうなのか、確かめてください! あな たの持っているモデムがこのドキュメントに載っているかもしれません。 また下記も必要になります。 o 全てのピンに線が接続されているシールドされた RS232 ケーブルを 2 本。シールドは、両端(片方だけではなく)のコネクタ・シェル(1 ピンにで はなく) に接続してあること o RS232 のテスト用プラグは、テストの時に役に立つ o RJ11 コードを 2 本。専用線の両端に使用する o AT コマンドをある程度理解していること 3.1. モデムの設定 このセクションでは、モデムの設定と一般的なモデムの初期化コマンドについ て解説します。モデムは minicom のようなソフトウエアを使って設定しま す。また (m)getty を使って、最高速で通信ができるように設定します。モデ ム間の通信速度が 14400 bps ならば モデムと端末間 は 57600 bps、28800 bps ならば 115200 bps というようにです。初期化コマンドは往々にして長た らしく、複雑なものになりがちです。AT&F からはじまって、それにメーカー 固有のコマンドが続き、さらに機種固有のコマンドが続きます。これが初期化 を必要以上に複雑にしている原因です。 モデムの設定が同じならば、たいていのプログラムは動作します。ですからそ れらのコマンドをモデムの不揮発メモリに書き込んでしまいましょう。そうす れば、プログラムからはただ「ATZ」とするだけで初期化できるようになりま す。こうしておけば、モデムを交換したりアップグレードしたとしても、ソフ トウエアの設定をいじらなくて済みます。 下記の設定をすることで、たいていのプログラムは動作します。 o ボー・レートを固定する(自動設定は不可) o ハードウエアによる双方向の RTS-CTS フロー・コントロール (X-ON/X-OFF は不可)を行う o 8 ビット、ノン・パリティ、ストップ・ビットが 1 にする o 相手側モデムのキャリアが検出されると CD 信号を有効にする(&C1) o DTR(&D2 or &D3)の状態を監視するようにする AT&V か AT&Ix として確かめてみてください(モデム付属のドキュメントを 調べてください)。 上記の設定は必ずしも工場出荷時のプロファイルの設定(&F)と同じものである とは限りません。したがって最初に初期化を行う時に &F を使うことはあまり おすすめできません。賢い &F の使い方は、不揮発メモリにあるモデムの設定 を台なしにしてしまった場合だけです。モデムの正しい設定がわかった ら、AT&W を使って不揮発メモリに書き込んでから、十分にテストしてくださ い。Z-modem を使ってテキスト・ファイルやバイナリ・ファイルを転送してみ てください。テストの結果が完璧ならば、専用線でモデムを使うための設定は おしまいです。 次にモデムをダム・モードにする方法を調べましょう。大切なことはダム・モ ードを解除する方法です。モデムの再設定はダム・モードでは行えないからで す。 モデムが、本当に最高速度で通信できる設定になっていますか?一度ダム・モ ードになってしまうと、「AT」コマンドはまったく効かなくなります。つまり COM ポートの速度との調整ができなくなり、モデムに設定済みの速度を使って 接続することになります(AT&W で S レジスタに書き込まれた速度です)。 それでは次の手順で、モデムの設定をしていきましょう。 o DTR の状態が変化するとリセットを行う(&D3 。S レジスタに設定される場 合がある)。ISP(インターネット・サービス・プロバイダ)によっては必要 になる o 専用線モードにする(&L1 か &L2。モデム付属のドキュメントを参照のこ と) o 相手側のモデムは自動着信(S0=1)し、こちら側のモデムは自動着信しない (S0=0) o リザルト・コードを表示しない(Q1。ダム・モードにするとこの設定になる 場合あり) o ダム・モードにする(\D1 か %1。ジャンパーで設定する場合あり)。 ダム・モードでは AT コマンドがまったく利用できない(ESC キャラクタも 無効にする必要があるかもしれない) 上記の設定を不揮発メモリに書き込んでください(&W)。 3.2. テスト それでは RS232 ケーブルを使って 2 つのコンピュータにモデムを接続して、 モデム間を RJ11 で接続してみましょう。Minicom(Linux)や procom、telix(DOS) などのモデムを制御できるプログラムを両方のコンピュ ータで使用して、モデムをテストします。片方のコンピュータから相手側にテ キストを入力したり、相手側からも同じようにやってみてください。文字化け が起こるようであれば、COM ポートの速度やその他の設定を確認してくださ い。以上が終ったら、一度 RJ11 を抜いて、再び挿してみてください。自動的 に再接続するまで待ちましょう。RS232 ケーブルも同じようにしてください。 モデムの電源の ON OFF や Minicom を終了させてからまた動かすといったこ とも試してください。モデムは上記のいずれの場合にも、自動的に最高速度で 再接続するはずです(速度表示用 LED が付いているモデムもあります)。モデ ムが本当に ESC キャラクタ(+++)を無視するかを確かめてください。もしそう でなかったら、ESC キャラクタを無効にしてください。 完璧に動作したら、モデムを再設定してもかまいません。相手側のモデムの音 を切って(M0)、こちら側は最小の音(L1)にしましょう。 3.3. 設定例集 Hi-Tech これは「ノーブランドの互換モデム」と言ってもいいものです。下記は 典型的な設定で、たいていのモデムはこれで動作するはずです 手動着信(こちら側) ATL1&C1&D3&L2%D1&W&W1 自動着信(相手側) ATM0L1&C1&D3&L2%D1S0=1&W&W1 Tornado FM 228 E これでうごくはずです 手動着信(こちら側) ATB15L1Q1&C1&D3&L2&W&W1 自動着信(相手側) ATM0B15M0Q1&C1&D3&L2S0=1&W&W1 ダム・モードを設定するジャンパを 2-3 から 1-2 に変更 ファームウエアのバグで DTR が ON になっても、ハードウエア・リ セット(電源の ON/OFF)をしないと接続できません。私はある回路 を設 計して、DTR が OFF から ON に移った時に、モデムをハードウエア・ リセットするようにしました。しかしこの回路では FreeBSD の pppd はうまく動作しません。この問題を回避するには、この回路 を 使って ON から OFF に状態を移行させて &D0 してください。 Tron DF ESC キャラクタを無効にするには、S2 レジスタを 128 以上に設定する こと 手動着信 ATL1&L1Q1&C1&D3S2=171\D1&W 自動着信 ATM0&L2Q1&C1&D3S0=1S2=171\D1&W US Robotics Courier V-Everything この情報は Rolf Raar 氏から寄せられた情報に基づいています。 US Robotics の Sportster と Courier-I は専用線をサポートしていませ ん。専用線を使うなら、Courier V-everything を使用すること。 US Robotics の Web サイトのあるページで Courier V-everything を 専用線で利用する方法を「解説」しています。しかしこの解説通りに やっても、モデムが機能不全になるだけで pppd からモデムを制御する ことも、監視することもできません。 US Robotics の Courier はディップ・スイッチで設定ができます。し かしまず初期化コマンドで設定する必要があります。まず最初に工場で 設定済みのプロファイルの中から、適切なプロファイルを選択したかを 確認すること。他のおおかたのモデムとは異なり、Courier は 3 つの プロファイル &F0、&F1、&F2 を持っています。&F1 が選択すべきプロ ファイルになるが、AT&F した時にロードされてしまうのは &F0 に入っ ているプロファイルです!こうしてしまうと、DTR の切替えをリセット する S レジスタ 13 を 0 に設定してしまいます。本当は 1 に設定し なければいけません。しかも専用線モードにするため、 &L1 も設定し なければいけません。 ATS13=1&L1&W ディップ・スイッチでデフォルト値から変更する必要のあるものは下記 の通りです。 3 「リザルト・コードを表示しない」は OFF になっている 4 「オフライン・コマンドを使用不可」は ON になっている 5 「手動着信 が ON で 自動着信」は OFF になっている 8 「ダム・モード」は OFF になっている 4. PPPD pppd(Point to Point Protocol Daemon) を用意して、pppd を動かすのに必要 な知識を身につけて動作させてください。関連する RFC のドキュメントや Linux PPP HOWTO を 調べてください。相手側のマシンにログインする予定がなければ、(m)getty は必要ありません。また ppp 接続の制御に必要な(ダミーの)ユーザ・アカウ ントもいりません。相手にダイヤルする必要がないので、chat スクリプトも 不必要です。 実際のところモデムの回路やここまで行なってきた設定はヌル・モデムケーブ ルを使った接続の仕方とほとんど変わりありません。つまり pppd の設定はヌ ル・モデムケーブルを使用した場合と同じやり方で行なう必要があるというこ とです。 接続を安定させるために、下記の基準にしたがって設定を行ってください。 o pppd が、システムのブート直後に RS232 ポートで DTR を ON にし、相手 の DCD を検出するまで待機状態になります。DCD が検出された後、接続の ためのネゴーシエイションを行うこと o 相手側のシステムが落ちた場合に、pppd は相手側が復旧するまで待つこと o 一度確立された接続が切断されてしまった場合、pppd はモデムをリセット します(リセットすると、DTR が OFF になってから ON になります)。その 後再接続を行うこと o 回線状態があまりにも悪化した場合、pppd はモデムをリセットした後、再 接続を行うこと o 接続を制御している pppd 自体が落ちてしまった場合、なんらかの監視シ ステムを使って 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 の 設定をした時に、モデムとは別の速度で設定をしてしまうというものです。た ぶんこのミスではないでしょうか。これでは動作しません。速度の設定は同じ にしてください! 5. 参考文献 1. 2. 3. 4. 5. 6. 7. 8. 訳注:PPP-HOWTO の日本語訳 と NET-3-HOWTO の日本語訳 も参考になさって ください。