問題:

某Linux環境にて、PPxP でのダイヤルアップ接続が不調。
特定のファイルをダウンロードする際に接続が切断されてしまう。
ERROR: frame(IP): bad FCS(0xabcd) のようなログが残されるが、対処方法不明。

接続環境:

フレッツISDN と インターネット・アクセス・サービス・プロバイダ による接続環境。

解決方法: PPxP 以外の ppp 実装 である ppp を利用する。

ppp と pppconfig のソースコードを入手してインストールする。
ppp は PPP (Point to Point Protocol) を実装したプログラム。
pppconfig は ppp にて使用する設定ファイルを作成するウィザードプログラム。

ppp のソースコード入手方法:

  1. 某Linux環境のソースコードリポジトリやSRPMパッケージ置場を漁って、1次配布元の場所を入手。
  2. 1次配布元から比較的新しいソースコードを入手。

1次配布元: ftp://ftp.samba.org/pub/ppp/

または、Debian のサイトから辿ってもソースコードが見つかったりする。

Debian -- ppp -> Overview of ppp source package

pppconfig のソースコード入手方法:

Debian のサイトから辿ってソースコードを入手。

Debian -- pppconfig -> Overview of pppconfig source package

1次配布元は不明。pppconfig は Debian GNU/Linux 用のソフトウェアかもしれない。もしかしたら PPPconfig Home Page かもしれないが、別のソフトウェアのような気がする。

ppp のインストール:

普通に解凍して、configure して、make して、make install する。


$ wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.4b1.tar.gz
$ tar zxvf ./ppp-2.4.4b1.tar.gz
$ cd ppp-2.4.4b1
$ ./cofigure
$ make
# make install

ppp による接続時には pon, 切断時には poff というスクリプトを使う。
この pon と poff はインストールされないのか、見つからない。
しかし、アーカイブ内の scripts ディレクトリに存在しているので、この pon と poff を任意の場所へコピーする。


# cp ./scripts/pon /usr/sbin
# cp ./scripts/poff /usr/sbin

pon と poff から pppd と chat というプログラムを利用するらしい。
pppd と chat は /usr/local/sbin にインストールされたが、pon と off が参照するのは /usr/sbin 以下。
そのため、シンボリックリンクを張って対処した。


# ln -s /usr/local/sbin/pppd /usr/sbin/pppd
# ln -s /usr/local/sbin/chat /usr/sbin/chat

pppconfig のインストール:

インストールの方法がわからなかったが、アーカイブを解凍してみると Perl スクリプトらしく、任意の場所へコピーするだけで動いた。本来は /usr/sbin あたりに置くと思う。


$ wget http://ftp.debian.org/debian/pool/main
       /p/pppconfig/pppconfig_2.3.11.tar.gz
$ tar zxvf ./pppconfig_2.3.11.tar.gz

この状態で pppconfig を実行して、設定ファイルを作ろうとすると、いろいろとファイルが無いことで責められる。
事前に、以下のように必要なディレクトリとファイルを作っておくと、何度もやりなおさずに済むので楽。


# mkdir /etc/chatscripts
# mkdir /etc/ppp/peers
# touch /etc/ppp/pap-secrets
# mkdir /etc/ppp/resolv/
# touch /etc/ppp/resolv/provider

pppconfig にて接続用設定ファイルを作る:

pppconfig を実行して、ウィザードの質問に答えていくだけで、ppp 用の設定ファイルが作成される。

設定項目:

  • Provider Name : provider を指定しておく。ppp 実行時には provider という名前が標準らしいので、接続先がひとつしかなければ provider を指定しておくのが無難。
  • DNS : Static を指定して、自分でプロバイダ提供のネームサーバのIPアドレスを指定。
  • Authentication Method : プロバイダの資料に従う。
  • Username : プロバイダの資料に従う。
  • Password : プロバイダの資料に従う。
  • Modem Speed : 115200
  • Pulse or Tone : プッシュ回線なので Tone を選択。
  • Phone Number : NTT ISDN の資料に従う。
  • Modem Port : 自動検出させてから /dev/ttyS0 (COM1ポート) を選択。

この辺の設定内容については、武藤 健志 著 / Debian GNU/Linux 徹底入門 第3版 ~ Sarge 対応 ~フレッツ日記 - 2000/11/20 サーバのPPPの設定 がすごく参考になった。

ppp にてプロバイダに接続する:

pon を実行することで、接続する。

# ./pon

切断には poff を使用する。

# ./poff

その他の試み:

以下に、某Linux環境 + ppp + pppconfig 以外の方法を記す。

失敗した試み1: Debian sarge の PPxP で接続してみる。

Debian -- ppxp

やはり、特定のファイルをダウンロードする際に接続が切断されてしまう。
この時点で、PPxP を使うのをあきらめる。

ちなみに、Linuxよろず相談 990802 によると、

[Q]
ログにフレームエラーが記録されています。
ERROR: frame(IP): bad FCS(0xabcd)

[A]
"bad FCS"エラーはPPxPが受け取ったデータのチェックサムが壊れていたことを意味します。フレームエラーは多くの場合、通信回線(電話線やモデム、シリアル線等)の異常によるものです。しかしながら、必ずしもそれだけとは限りません。ISDNなどで設定や結線上の問題も見られない場合は、PPxPのバグである可能性もあります。

とある。

失敗した試み2: ppp と pppconfig を RPM でインストールする。

某Linux環境 に pppconfig の PRM パッケージが見つからない。
ちなみに、ppp の PRM パッケージは存在していた。

試していない試み1: Debian sarge の ppp で接続してみる。

Debian なら ppp と pppconfig のパッケージがあるので、apt-get install でお気楽インストールできる。


apt-get install ppp
apt-get install pppconfig

試していない試み2: IIJ-PPP という ppp 実装を利用する。

試していないだけ…… iij-ppp の入手先はどこだろう……

関連:


コメント

すごく内容とディレクトリとか、新しいファイルと、必要とか、無いことでアドレスとかお気楽インストールとインストールとか、方法不明を実行しなかったの?


ちなみに、某Linux環境は、Kondara MNU/Linux 2.1 (Asumi).

tags: zlashdot Linux

Posted by NI-Lab. (@nilab)