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

Linuxシステムにおけるppp接続

10/2/95
12/10/95(翻訳)
10/25/97(翻訳修正)

著者:Jerry Hall 
      jhall@adobe.com

翻訳:衛藤 誠司
      seto@slip.net

このドキュメントでは、自宅のLinuxマシンとpppサーバーをモデムを使って
接続する方法について説明します。なおこのドキュメントは、pppサーバーが
IP アドレスを動的に割り当てることを前提に書かれています。

ハードウェア
------------
Gateway 2000
        486/33ISA
        8MBメモリー 
        200MBハードドライブ
        TMC-850 SCSIコントローラー
Sony CD-ROM CDU-541
SupraFAXModem 288

(このセッティングは、必ずしも最高とは言えませんが、Linuxは非常によく
走ります。ただ一回だけクラッシュしたと言えば、粗悪品のSCSIディスクド
ライブを取り付けたときでした。)

ソフトウェア
------------
Slackwareリリース2.2 
Linuxカーネル1.2

役に立つドキュメント類
----------------------
/usr/doc/faq/howto/PPP-HOWTO.gz
/usr/doc/faq/howto/NET-2-HOWTO.gz
/usr/doc/faq/howto/Kernel-HOWTO.gz
/usr/doc/faq/howto/Serial-HOWTO.gz
/usr/src/ppp-2.1.2b/README.linux
% man pppd
% man chat
% man netstat
% man ifconfig

[ヒント:howtoドキュメントは、"zless"コマンドを使って見ることができます。]

pppのカーネルへの追加
---------------------
最初に筆者が走らせたカーネルには、pppが入っていなかったので、pppサ
ポートを指定してコンパイルし直す必要がありました。カーネルにpppが入
っているかどうか調べるには、次のコマンドを使います:

    % dmesg|grep -i ppp

カーネルがpppをサポートしている場合、次のようなメッセージを表示します:

    PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
    PPP line discipline registered.


カーネルがpppをサポートしていない場合には、以下のコマンドでカーネル
をコンパイルして下さい:

    # cd /usr/src/linux
    # make config       # configの設定をします。以下を参照のこと。
    # make dep
    # make clean
    # make zImage
    # cp ./arch/i386/boot/zImage /vmlinuz
    # cd /etc
    # lilo

すべてがうまくいったらリブートした際に上記のようなメッセージが見える
はずです。

"make config"コマンドを実行するとたくさんの質問に答えなければなりま
せんが、以下の項目には必ずyesと答えてください:

    CONFIG_NET
    CONFIG_INET
    CONFIG_NETDEVICES
    CONFIG_PPP

[注意:カーネルのコンフィギュアとコンパイルは、数多くのハードウェアの
組合せがあるため、非常に込み入った作業となります。上記の項目は、その中
のほんの一部です。] 

ネットワーク・ツールとデーモンのインストール
--------------------------------------------
実際に接続する前に筆者は、次のようなネットワークのパッケージをインス
トールする必要がありました:

    net-tools
    ppp-2.1.2b

筆者は、ソースをインストールしてコンパイルし、コンパイルしてできたバイ
ナリーとコンフィギュレーション・ファイルをインストールしましたが、最初
からバイナリーとコンフィギュレーション・ファイルをインストールしてもか
まいません。

コンフィギュレーション・ファイル
--------------------------------
筆者は、 /etc/pppというディレクトリーを作り、optionsとchatという2つの
ファイルをその中に置きました。optionsは、pppdが実行されたときに自動的に
読み込まれ、chatは、ppp接続のためにLanRoverというサーバーにログインする
際に使われるBシェルで書かれたスクリプトです。 以下は、それらのファイル
です:

/etc/ppp/options:

    /dev/cua2 38400 crtscts modem 
    noipdefault 
    defaultroute 
    kdebug 2 
    connect /etc/ppp/chat

これらのオプションの説明については、manページを参照してください。

/etc/ppp/chat:

    #!/bin/sh
    #
    # サーバーXXXXXに接続
    #
    
    /usr/etc/chat \
    ""         ATDT1234567890 \
    CONNECT    "" \
    115200     "" \
    "ogin: "   jhall \
    "ssword: " XXXX \
    "XXXXX>"   ppp
    
このchatスクリプトは、2行目以降の引数を付けて/usr/etc/chatというプロ
グラムを実行させるように書かれています。筆者は、このスクリプトを見やす
くするために本来コマンドラインで1行にするところをあえて引数を\を使って
複数行にしました。各行の最初の引数は、サーバーもしくはモデムから帰っ
て来ると思われるストリングで、2番目は、Linux側から送るストリングです。

1. 引数の最初の行は、受け取るストリングは何もなく、次のストリングでモデ
ムにUnix LanRover(ホスト名XXXXX)の電話番号である1234567890をダイ
アルしろということを表しています。

2. 2行目は、モデムからのCONNECTという応答信号を期待し、こちらからCR
(キャリッジリターン、ここではヌル引数「""」がそれ。)を送るということ
を表しています。

3. 3行目は、接続スピード(これについては、後程詳しく説明。)を期待し、
こちらからCRを送るということを表しています。

4. 4行目は、ユーザーIDプロンプトの最後の部分と筆者のユーザーIDです。

5. 5行目は、パスワードプロンプトの最後の部分とパスワードです。

6. 6行目は、シェルプロンプトとppp接続を初期化するコマンドです。

[ヒント:chatに-vスイッチを付けるとchatをデバグモードで走らせることができ
ます。そうすることによってデバグ時にサーバーもしくはモデムから帰って来る
と思われるストリングやLinux側から送るストリングを見ることができます。]

システム管理者にユーザーIDとパスワードをもらった後、telnetを使って接続し
ようとするサーバーにログインして、どのようにchatスクリプトを書けばいいか
確かめるのもいいでしょう。 以下は、その例です:

    % telnet xxxxx
    Trying xxx.xxx.xxx.xxx...
    Connected to xxxxx
    Escape character is '^]'.
    @ Userid: jhall
    Password? 
    Shiva LanRover/E PLUS, Version 3.5 95/03/07
    xxxxx>         

筆者は、デバグのために以下のステートメントを/etc/syslog.confに追加しまし
た:

    local2.*    /dev/console
    local2.*    /usr/adm/ppplog

[注意:最初と2番目のエントリーの間には、少なくてもタブを1個入れる必要が
あります。]

また/etc/resolv.confにネームサーバーの登録を忘れずに行ってください。

接続
----
次のコマンドを実行して接続します:

    /usr/etc/pppd

するとプロセスがフォークしてバックグランドで走ります。さらに/etc/syslog.conf
に上記のようなセッティングをしておくとコンソールに次のようなメッセージが表
示されます:

    Oct  1 11:59:08 almaden pppd[406]: pppd 2.1.2 started by jhall, uid 0
    Oct  1 11:59:33 almaden pppd[407]: Connected...
    Oct  1 11:59:34 almaden pppd[407]: Using interface ppp0
    Oct  1 11:59:35 almaden pppd[407]: Connect: ppp0 <--> /dev/cua2
    Oct  1 11:59:36 almaden pppd[407]: local  IP address xxx.xxx.xxx.xxx
    Oct  1 11:59:36 almaden pppd[407]: remote IP address xxx.xxx.xxx.xxx

接続されたかどうか次のコマンドで調べます:

    /sbin/ifconfig

このコマンドを実行すると次のようなメッセージが表示されます:

    <ループバックデバイスに対するアウトプットは、削除しました。>
    
    ppp0      Link encap:Point-Point Protocol  
              inet addr:xxx.xxx.xxx.xx  P-t-P:xxx.xxx.xxx.xx  Mask:255.255.0.0
              UP POINTOPOINT RUNNING  MTU:1522  Metric:1
              RX packets:5 errors:0 dropped:0 overruns:0
              TX packets:6 errors:0 dropped:0 overruns:0

これを見るとデバイスが設定されたことが分かります。

次に筆者がしたことは、ログイン可能なワークステーションにrlogin でログイン
してみましたが、pingを使って特定のワークステーションに応答を確かめるのも
よいでしょう。

接続を切るには、次のコマンドを実行しますが、このコマンドを含めたスクリプ
トを用意しておくと便利です:

    kill -TERM `cat /var/run/ppp0.pid`

このコマンドを実行すると次のようなメッセージを表示して回線を切断します:

    Oct  1 12:03:50 almaden pppd[407]: Terminating link.
    Oct  1 12:03:50 almaden pppd[407]: Connection terminated.
    Oct  1 12:03:51 almaden pppd[407]: Exit.

回線の接続や切断は、rootで実行しなければなりません。筆者は、これをroot
以外でできるようにしようと思い、setuidを色々といじってみましたが、今のと
ころ成功していません。

シリアルライン接続
------------------
筆者は、最初マザーボードに初めから付いていたシリアルライン(COM1)を使
ってppp接続をしていました。そのマザーボードは、16450 UARTチップを使用
しており、送受信のためのバッファがないため、スピードが38400 bpsに限られ
ていました。(このスピードで接続していると、いくつかのエラーが出ました。)
このスピードは、データの圧縮によりモデムとシリアルラインとの接続に
115200bpsまで最良の状態で通信できるため、 28800 bpsのスピードで通信
するモデムにとっては遅すぎます。

それで筆者は、この問題を解決するために16550A UARTチップの乗った速い
シリアル・カードを購入し、インストールしました。ところが、 Linuxは115200 bps
の転送速度をサポートしていないため、ブート時に「setserial」コマンドを使い、
シリアルラインを設定しなければなりませんでした。以下の1行を
/etc/rc.d/rc.serialに追加しました:

/bin/setserial -b /dev/cua2 irq 9 spd_vhi       # 16550A

ここで大切なことは、引数に「spd_vhi」をセットして、モデムのボーレートを
115200 bpsに設定するということです。詳しくは、「setserial」のmanページを
ご覧ください。

このように設定すると、/etc/ppp/optionsファイルで38400と記述していても、
実際は115200 bps のスピードでLanRoverと通信することになります。
/etc/ppp/chatファイルで115200と記述したのは、こういうことだったのです。
シリアルラインの設定を変えることによって2倍以上のスループットを得ること
が出来ました。

接続スピード
-----------
通常筆者のモデムは、送受信とも26400 bpsのスピードで接続します。28800 
bpsで接続したこともありましたが、このときにはエラーが若干出ました。26400 
bpsでの接続では、エラーも出ず、安定しているようです。

最後に(訳者注)
---------------
訳者が、これらのことを踏まえて、ppp接続を自動的に設定、起動するXベース
のユーティリティー・プログラムを作りました。次のサイト及び各ミラー・サイ
トからダウンロード出来ます。御利用下さい。

ftp://sunsite.unc.edu/pub/Linux/system/network/serial/Motif-PPP-1.03-Beta.tar.gz



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