AirH" on Linux


はじめに
PCMCIA_CS導入時の注意
AirH"導入方法(pppd)


更新履歴:
 2005/4/24
    HTMLベースの更新が面倒くさくなってきたので、Wikiへ移行しました。 こちら
 2004/2/8
    最近のRedHatでのSource RPMからのビルドコマンドが変わっていたのに、記事では更新してませんでしたね。きちんと訂正しておきました。どうも申し訳ありません。
 
 2003/8/15 
    ZEROの認証はCHAPではなくPAPでした。申し訳ない_(_ _)_ /usr/sbin/pppdのオプションを減らした。/etc/ppp/optionsに書いてあるものは基本的にコマンドラインオプションには書かな くて良いんだけど、noauthだけはコマンドラインに書かないといけない模様です。




はじめに
私の用い ているAirH"カードは、本多エレクトロニクス製 AH-H401Cです。
また、ISPはZEROです。

その他のカードを用いたとき、またはことなるISPを利用している場合には、この設定では接続出来なくなることもあります。
あしからず。

その場合は chat-??? の変更と AirH"カードの認識さえ行なえればこの設定が使用できるようになるはずです。
その辺りは自分の力で頑張ってください;-)

また、Gentoo Linuxに依存した設定もありますが、この辺は適宜読み変えてください。
手抜きですみません…。

ちなみに、ppp接続を行なうプログラムとしては pppdとppxpの二つが有名です が、私はpppdの方が好きなんですよね。理由は……特にありませんが、pppdの 方がカーネルに近いような感覚があって好きだなぁ、ってくらいでしょうか。


PCMCIA_CS導入時の注意

sourceからインストールの方は, pcmcia-csのパッケージを持ってきて
#tar xvzf pcmcia-cs-???.tar.gz
#cd pcmcia-cs-???/
#./configure
#make
#make install

で終了。
カーネルコンフィグでpcmciaサポートにしてる場合はモジュールがインストールされません。
pcmcia-csパッケージの方が更新が早いので、kernel configでpcmciaサポートをはずしたほうが
良いかもしれませんね。

また、RPM baseの人はpcmcia-csのRPMパッケージがありますが、これはカーネル依存なので自分のカーネルに合わせて作成してくれる src.rpmからのインストールをお勧めします。
rpm --rebuild pcmcia-cs-???.src.rpm
でRPMパッケージを自分の環境に合わせて作成してくださ い。
Redhat 8.0以上をお使いの方は
rpmbuild --rebuild pcmcia-cs-???.src.rpm
でしょうか。もしくは
rpm -ivh pcmcia-cs-???.src.rpm
rpmbuild -bb /usr/src/redhat/SPEC/pcmcia-cs.spec
かな。specファイルの名前とか場所はちょっと違うか も。でも多分すぐ分かるとおもいます。
そして作成された pcmcia-cs-???.i386.rpm をインストールしてください。


Gentoo Linuxの場合は、
#emerge pcmcia-cs
を行なうだけでinstallが完了します。
ここでちょっとした注意として、
pcmcia-csを、以前のkernelで動いていたときにinstallしていた場合、
/lib/modules/(以前のkernel)/  以下のpcmcia-cs関係のFileは削除されます。
なにか問題があって以前のkernelに戻す場 合は、
再びpcmcia-cs package をinstallしなおすことを忘れないでください。


pcmciaをインストールしたあとは、 /sbin/cardmgrでpcmciaのサービスを起動させるんですが、このデーモンの起動方法はディストリビューションごとに変わると思います。

Gentoo Linuxでは、
/etc/init.d/pcmcia start
として起動します。
もしカードマネージャが起動しなかったら、設定を確かめてください。
---/etc/conf.d/pcmcia--------------
CARDMGR_OPT="-f"
SCHEME="home"  ← ここはご自由に。
PCIC="i82365" ←ここにi82365を付け足した(私のR31では)
PCIC_OPTS=""
CORE_OPTS=""
---------------------------------
Gentoo Linuxではこの設定でAH-H401Cは認識するはずです。

その他のディストリビューションでは試してないので、各自デーモンの起動方法を調べてください ;-)


さて、cardmgrによるデーモンの起動が行なえたら、AirH"カードを挿します。
ピピッという認識音のあとに、dmesgコマンドの一番下あたりにシリアルポートの認識のメッセージが出てきたらカードの認識は成功しています。デバイス の名前はあとで設定で用いるので控えておいてください。
(ex. "ttyS01 at port 0x02f8 (irq = 3) is a 16550A" の表記があれば、/dev/ttyS1がモデムデバイスになるはず)



AirH"導入方法(pppd)
さて、次 にpppdをインストールしましょう。

source からインストールはいつも通り./configure; make ; make install です。
RPM からも ppp-???.i386.rpmで行けるはず。
Gentoo Linux では emerge pppd で終わり。

さて、pppの導入を行なったら設定です。

Gentoo Linuxでは、
通常は /etc/conf.d/net.ppp0 を編集し、
#/etc/init.d/net.ppp0 start
を実行することでppp接続が開始されるはずですが
ほとんどの場合うまくいかないはず。
/etc/ppp/以下の設定ファイルが適切に作成されないことがほとんどです。
ということで、自分でpppの設定ファイルを作成したほうが良いわけです。


さて、ここからは実際に設定ファイルの作成作業に入ります。
Gentoo Linux以外のディストリビューションでも、/etc/init.d/net.ppp での起動以外は同様の設定で接続できるはずです。

(Gentoo Linux 固有の設定)
/etc/conf.d/net.ppp0 の設定をきちんと編集したあと、 (超重要)
最後の方で
AUTOCFGFILES="no"
の設定をする。
これで独自のpppd接続用ファイルを作成し、使用することができます。



(共通の設定)

ここから先は共通の設定です。ここでは接続の名前を airh として設定ファイルを作成します。
私のISPは ZERO なので、PAP認証を行なっています。

PAP認証の場合、pap-secret ファイルを作成する必要があります。
---- /etc/ppp/pap-secret --------------------------------------
#(username of ISP) (connection name) "password"
#for example ,
#ISP username = takeposo , connection name = airh , password = takeposo
takeposo airh "takeposo"
--------------------------------------------------------------

もしCHAP認証であるなら、
まったく同様のファイルを/etc/ppp/chap-secret として保存します。


次に必要なのが、/etc/ppp/peers/airh
----- /etc/ppp/peers/airh --------------------
115200
connect '/usr/sbin/chat -v -f /etc/ppp/chat-airh'
--------------------------------------------
115200はシリアルポートとの接続速度。
これを書かないと/etc/init.d/net.ppp0スクリプトは動きません。

そして実際のISPのダイヤルアップサーバとのやりとりを指定する
/etc/ppp/chat-airh を作成します。

------ /etc/ppp/chat-airh ---------------------
ABORT "\nNO CARRIER\r"
ABORT "\nNO DIALTONE\r"
ABORT "\nERROR\r"
ABORT "\nNO ANSWER\r"
ABORT "\nBUSY\r"
ABORT "Username/Password Incorrect"
"" "ATZ"
TIMEOUT 30
OK "atdt0570570739##64"   ←ここはそれぞれのISPの番号を書く。これはZEROの番号。
"CONNECT" ""
---------------------------------------------

このファイルは、ISPによってさまざまに変わるはずです。
ただのパスワード認証の場合などは、
"name:" "(username)"
"word:" "(password)"
のように、"name:" と "word:"が返ってくるので、
この行を追加します。
その他は個々に対処してください。
uucpをインストールすれば、cuコマンドを使って実際に上記やりとりを
行なうことで、ISPからの返答が確認できます。

そして最後に /etc/ppp/options を設定します。
(この中には必要な必要ないものもあるかもしれません。)
------ /etc/ppp/options ---------------------
lock
+pap   ←CHAPの場合は +chap (必要ないかも)
modem crtscts /dev/modem 115200
noipdefault
netmask 255.255.255.0
defaultroute
usepeerdns
mru 768
mtu 1500
ipparam ppp0
linkname ppp0
name username     ←CHAP/PAP認証の際は必須
-------------------------------------------

ここまで書けば、あとはpppdを実行するだけ。
#/usr/sbin/pppd call airh noauth

"\"は改行をさけるためのエスケープ文字です。
上記オプションの説明は

defaultroute : このppp接続をdefault route に指定する。
modem crtscts : モデムのハードウェアフロー制御を用いる
/dev/ttyS1 : モデムデバイスファイル
115200 : シリアルとの接続速度 (airHなら115200のはず。)
usepeerdns : ISPのダイヤルアップサーバから送られてくるDNS情報を利用する
mru 768 : mru の設定
mtu 1500 : mtu の設定    ISPのホームページで推奨設定が載っているはず。
netmask 255.255.255.0 : NETMASKの設定
name username : ISP のダイヤルアップ接続ユーザ名。ここでも必要。
ipparam ppp0:
linkname ppp0:  接続をppp0とするってことですね。

で、コマンドラインのときの
call airh : これが、/etc/ppp/peers/airhを呼び出すのです。
noauth: これはCHAP/PAP認証のときに必須です。パスワード認証のときは必要ない。

さて、ここまで行なえば、
#ifconfig
を実行することで、
ppp0      Link encap:Point-to-Point Protocol 
          inet addr:***.***.***.*** P-t-P:***.***.***.***  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:1730 errors:2 dropped:0 overruns:0 frame:0
          TX packets:2055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:1053780 (1.0 Mb)  TX bytes:367738 (359.1 Kb)
という表示が得られれば、PPP接続が完了しています。peerdnsオプションを指定したときは、dnsの設定ファイルresolv.confが /etc/ppp/以下などに現れているはずです。それを/etc/resolv.confにコピーする等してください。この時、 /etc/resolv.conf のバックアップをしておくのを忘れずに。

resolv.confの設定を行なえたら、
#ping hogehoge
と実行して接続を確認してください(www.google.co.jp などがよろしいのでは)。


接続を切る場合は、killall pppdで行なえます。
できれば、PIDを調べて
#kill ($PID)
した方がいいでしょう。
/etc/resolv.confも元に戻してください。


接続が確認できれば、Gentoo 以外のディストリビューションでは、あとは自動で接続が行なえるようなスクリプトを /etc/rc.local (あるかな?) か何かにpppdの起動コマンドを付け加えれば良いでしょう。ただ、いつも起動してしまうのは困りものだと思いますので、pppd起動用スクリプト (resolv.confの保存と、pppd起動、 終了時にはpppd のkill, resolv.conf の復元を行なう)を用意してしまうのが良いでしょう。


また、ここまで設定すればGentoo Linuxでは net.ppp0スクリプトで
pppの接続、切断が行なえます。
#/etc/init.d/net.ppp0 start
then, if you would like to disconnect this ppp connection,
#/etc/init.d/net.ppp0 stop
これならば、/etc/resolv.confの変更や復元も自動的に行なってくれます。



戻る
Top Pageへ