PPxP を使おう

Linux活用日記

Last modified: Wed Jan 16 2002





PPP 接続において, 大変使いやすくて便利なツールにPPxPがあります. 設定も簡単で使い勝手も良く定番ですね. ここでは, そんな PPxP のインストールと使用方法をご紹介します. ただし, 最近の Linux ディストリビューションにははじめから PPxP がインストールされています. その場合の利用法も合わせてご紹介します. 尚, Kernel をアップグレードすると放っておくと動きません(Userlinkの場合). そこで再度, Userlinkを有効にする方法とethertapを使う方法もご説明しておきます.






PPxPのインストール


カーネル 2.2 系 を採用している Linux ディストリビューションで, PPxP を使うためにはモジュール (Userlink) が必要です. 一部のディストリビューションには PPxP がはじめからインストールされていますので気にしなくて良いのですが自分で PPxP をインストールする場合にはモジュールの作成を事前に行います. ここでは Userlink を使う場合をご説明します. 変わりに ethertap を使う方法もありますがそれについてはこちらをご覧下さい. また, カーネル 2.4 系で利用する場合の手順についても後述しています.

まずPPxP本家から PPxP と userlink の tar 玉を頂いてきます. そして userlink モジュールを作成します.

$ tar zxvf userlink-0.98a.tar.gz
$ cd userlink-0.98a
$ ./configure
$ make
$ su
# make install
# /sbin/depmod -a

userlink モジュールを組み込みます.

# modprobe userlink

確認します.

# lsmod

これで問題なく組み込まれていたらOKです.

次にPPxPをインストールします.

$ tar zxvf ppxp-0.9903108.tar.gz

または$gzip -dc ppxp-0.9903108.tar.gz | tar xvf -

$ cd ppxp/
$ ./configure
$ make
$ su
# make install

これでインストール完了です.

尚, このままではroot以外で接続できなければユーザー名で/dev/tty*にパーミッションの設定をします.

# usermod -G tty hogehoge

または

# chmod 660 /dev/ttyS*
# chgrp uucp /dev/ttyS*
# chmod 775 /var/lock/

また, PPxP を使うユーザー名を /etc/group に追加します. 以下のように書き込みます.

uucp:x:14:uucp,hogejirou




○PPxPでダイヤルアップ


では接続してみます.

$ppxp

とコマンドを打つと以下のようにプロンプトが返りますので

>qdial

と打ちます.

すると以下の画面が出てきますので, 設定項目を入力します.

ppxp

矢印キーで移動できます.


詳細設定は以下の画面になります.

クイックダイヤルアップ


この画面はほとんどそのままでもいけますが, 必要があれば入力します. 例えば単にダイヤルアップ接続なら「 resolv.conf の作成」にチェックを付けておきます. <戻る>を押すと最初の画面に戻りますので<保存>を選択します. 保存ファイル名を仮に「isp-biglobe1」とします. これで<ダイヤル>を選択すると接続が始まります. 切断するときはプロンプトからdisconnectと打ちます. この初期設定時の「クイックダイヤルアップ」は以下のコマンドで

$ qdial

qdial[

このように GUI でも設定できます.


初期設定が終わったら接続してみましょう.

もし, 接続できないときは上記の各設定内容が間違ってるか, NICなどがあればルーティングテーブルを確認する必要があります.

$netstat -rn

で見れます. エラーログは~/.ppxp/log/以下のログファイルで見れます. その中で"permission denied"というメッセージがあれば(例えば/dev/modemに対して発生していれば上記の

#chmod 660 /dev/ttyS* または
#chmod 660 /dev/modem

を実行してみて下さい.


次回接続時からは

$ tkppxp

と叩き, tkppxp を起動し, 「File」メニューからさきほど作成した ISP の情報ファイル(ここでは isp-biglobe1 )を選択してから矢印ボタンを押すと接続できます.

tkppxp





○ダイヤル・オン・デマンドによる接続と切断


ここまでの操作で PPxP によるダイヤルアップ接続ができるのですが接続するたびにこの操作を繰り返すのは面倒なものです. 普通, ルーターを使っていますとブラウザのブックマークから選択するなどして外部へ出て行くパケットが検出されると自動的に接続し, 数分間パケットの検出がなければ自動切断されるのですが PPxP ではそういったことが出来ます. それがダイヤル・オン・デマンドという機能です. この機能の利用方法は簡単でして, コマンドラインからなら,

$ ppxp
ppxp> auto on

とします. tkppxp の場合は, 「 Operation 」メニューから「 Auto On 」を選択します. すると "Auto" の文字が光ります. これだけの操作でダイヤル・オン・デマンド機能を利用することが出来ます. 自動切断は, 「 Operation 」メニューから「 Quick Dialup 」を選択し「詳細設定」から「アイドル時間」を設定します. これにより, 設定した時間, パケットが検出されなければ自動切断されるようになります.




○フィルタ機能


PPxP にはフィルタ機能もあります. 例えばクライアントが Windows の場合などに上述のダイヤル・オン・デマンドで接続するように設定していると NetBIOS のパケットが検出されて接続が始まってしまう, ということがあります. これを回避するにはフィルタ機能を使うのがいいでしょう. これは conf ディレクトリ以下の filter01 というファイルで設定します. 設定が完了すれば ISP 用の設定ファイルの一番始めに

source filter01

と書きたしておけば良いだけです. このファイルでは, 以下のようにアイドル時間の設定もされています. デフォルトでは180秒のアイドル時間が経過すると自動切断されるようになっています.

filter tcp +kI -S 0.0.0.0 www nntp irc 8080 -K 180






Tkppxp 起動時のエラーメッセージ


tkppxpを起動すると以下のようなエラーが出力されることがあります.

error reading package index file /usr/lib/tclX8.0.4/pkgIndex.tcl: syntax error
in expression "[info tclversion] < 8.0jp"
error reading package index file /usr/lib/tkX8.0.4/pkgIndex.tcl: syntax error
in expression "[info tclversion] < 8.0jp"

この場合はメッセージのとおり,
/usr/lib/tclX8.0.4/pkgIndex.tclと
/usr/lib/tkX8.0.4/pkgIndex.tclのふたつのファイルに書かれている, "8.0jp"を
"8.0"にすることでエラーがでなくなります.

・以下の部分です.
if {[info tclversion] < 8.0jp} return






userlink の代わりに ethertap を使う


Kernel2.2.xではuserlinkの代わりにetertapを使うことが出来ます. そのためにはカーネルの再構築が必要です. ここではKernel-2.2.12の場合をご説明します. 以下の手順を行って下さい.

# rm /lib/modules/2.2.12/net/userlink.o
# cd /usr/src/linux/
# make xconfig

ここで[Linux Kernel Configuration]が開きます. このメニューの中からまず「Network options」を開き, 「Kernel/User netlink socket」と「Netlink device emulation」を以下のように有効にします.

次に, 「Network device support」を開いて「Ethertap network tap」を有効にします.

次に「Code maturity options」を開いて「Prompt for development and/or inconplete code/drivers」を有効にします.

このあと, 「save and exit」で終了し, 以下の手順を行います.

# make dep
# make zlilo
# make modules
# make modules_install
# depmod -a
# /sbin/lilo
# reboot


デバイスファイルを作成します.

# mknod /dev/tap0 c 36 16

これでethertapを使ってPPxPを利用することが出来るようになります. コマンドラインから"ppxp"と打つと以下のようになります.

/etc/conf.modules に

alias tap0 ethertap

を書く必要があるかも知れません.



参考ホームページ:PPxPクイックガイド





PPxPが動かない(kernel2.2.5以降)


Kernel2.2.5 にバージョンアップしたところ, PPxP が動かない, というか #ppxp とコマンドを打つと固まってしまうという話を聞きました. 試してみたところ確かに固まります(^。^;). この件は既にweb上でも公開されており, 以下の内容が原因のようです.

PPxP 本家によると・・

”ppxp/src/console.cのXcSetup()関数で呼び出されるlisten()システム
コールの第2引数を0より大きな値にする”
ことにより回避されるようです.
以下にパッチを作ってみましたのでご参考に・・・

---------------ここから--------------------
--- console.c.org Tue May 25 10:58:26 1999
+++ console.c Tue May 25 10:59:05 1999
@@ -757,7 +757,7 @@
bindFd = -1;
return;
}
- listen(bindFd, 0);
+ listen(bindFd, 1);
/*
chown(udsPath, getuid(), getgid());
chmod(udsPath, 0700);
---------------ここまで--------------------

あと, userlinkはカーネルに依存している関係上, こちらもそのままにしておいてはいけません. 一旦, 消して再インストールは以下の手順で行います.

$cd /hogehoge/userlink-0.98a
$make clean
$ ./configure
$make
$su
#make install
#cd /hogehoge/userlink-0.98a
# /sbin/insmod userlink
以上でppxpが使えるようになります.
(kernel2.2.9で動作確認しました. )





TurboLinux 6.0 と Vine での利用法


TurboLinux 6.0 と Vine では PPxP は, はじめからインストールされていますので上述のような設定は必要ありません. ただし, root ではなく一般ユーザーで利用するには以下の手順が必要です.

まず, root になって以下のコマンドを実行します.

# ppxpadduser ユーザー名

これだけで一般ユーザーが利用できる環境設定は完了します. 次にこの手順か, tkppxp を起動して「Operation」メニューから「Quick Dialup」を選択して ISP の設定をします.

あとは,

$ tkppxp ISPの設定ファイル名

として Tkppxp を起動してインターネットに接続して下さい.






Kernel-2.4 での利用法


Turbolinux 7 のようにカーネル 2.4 を採用しているディストリビューションでは, そのままでは PPxP が利用できません. しかし次の手順によって PPxP が利用できるようになります. この事例は Turbolinux 7 で行ったものです. Redhat Linux 7.1 以降の場合はカーネルの再構築が必要になります.

まず, カーネルの設定で次の項目が有効になっているかどうかを確認します. Turbolinux 7 では有効になっています.

カーネルの設定項目

上図のように [Network options] で,

Kernel/User netlink socket ---> Y
Routing messages ----------> Y
Netlink device emulation -----> M

このようになっていればそのままで結構です.

また, [Network device support] で,

Ethertap network tap (OBSOLETE) --> M

このようになっている必要があります. なっていない場合はカーネルの再構築を行う必要があります.

以上の確認が出来たら PPxP を入手してインストールします. PPxP は PPxP 本家にあります.

この事例では, ppxp-2001080415.tar.gz を入手したものとしてすすめていきます. まず, 入手した ppxp を任意のディレクトリに置きます. そして展開します.

# gunzip -c ppxp-2001080415.tar.gz | tar xvf -

このあと, 次の手順でインストールしていきます.

# cd ppxp
# ./configure
# make

ここまででエラーが出ていなければインストールします.

# make install

以上でインストールは完了です. 次に設定ファイル /etc/modules.conf に次の1行を書き足します.

alias tap0 ethertap

次にデバイスファイルの作成とモジュールの読込みを行います.

# mknod /dev/tap0 c 36 16
# modprobe netlink_dev
# modprobe ethertap

以上の作業が完了すれば, PPxP が利用できるようになります. モデムが正常に認識されていることを確認した上で PPxP を使ってダイヤルアップ接続の設定を行ってください. 設定は qdial を使うのが便利でしょう(下図参照).

qdial

ここからの詳しい設定は, 上記を参照してください.




HOME