+------------------+ Internet | server +----Ethernet--->[koshi-4] <----Ethernet---+ (heppoko) | | +----Serial----->[MobileGear] +------------------+
下宿内LANを構築するには常時起動させておくserverが必要となり、消費電力と騒音からノートPCがそのようなサーバーとして最適と判断しました。
ノートPCだと値段の割にスペックがヘボいという欠点があるのですが、 それはOSの軽さでカバーすることにしましょう。IP-masquerade を動かすだけのサーバーで しかも回線が128kbps(÷使用人数 X-| )ですので、GUI不要と割り切れば 486ベースのマシンで十分です。但しPCMCIAスロットが二つ以上あるものを選択する必要がありますが。
秋葉原や日本橋で中古の専門店を丹念に回れば、486dx2,dx4あたりのノートPCであれば15,000円以内で入手できます。
ちなみに私はCompaqの Contura 410cx にメモリ8MBを増設たものを13,000円程度で購入しました。HDDが壊れたため500MBに乗せ換えたとかネットワークカードを 3枚買ったとかしましたが、それでも23,000円程度です。
名前の由来?スペックと自分がヘボヘボだからだけど。
ディストリビューションは Plamo Linux を選択しました。流行のRedHat系ではありませんが、
という利点があります。
こうして購入した安ノートPCには当然CD-ROMドライブが付いてきません。 このときの対処策は
あたりが考えられます。私の場合は (2)を選択したところ ノートのHDDが死亡し、結局(3)にしました。 結構手間取りましたが、NFSサーバー(晒す側,Koshi4)の /etc/hosts.allow の設定をしていなかったのが原因でした(あ〜恥ずかし)。コツさえつかんでしまえば簡単なものです
CHSモードで13GB使っていたIDEポートにノートのHDDを繋げたら死亡。なむ〜
フロッピードライブがない(または潰れている)PCもあるかもしれませんが、 plamoはそういうPCにも対処するようなブートイメージを提供しています。 Rdisk 等を駆使してがんばってください。
ネットワークに関する設定は、とりあえず内部LANの方を先に決めてしまいます。
最後に「設定はノート用に保存しますか?」と聞かれますのではいと答えます。
プライベートアドレスは以下の通り。これらのIPはglobalなInternetでは使用されないため、 LAN内で自由に使用できます。
- 10.0.0.0/8 (10.0.0.1〜10.255.255.255)
- 172.16.0.0/12 (172.16.0.1 〜172.31.255.255)
- 192.168.0.0/16 (192.168.0.1〜192.168.255.255)
設定が終了したらリブート(ctrl-alt-deleteで再起動)します。bootの途中で「ピッ、ピッ」と高い音が二回鳴り、なおかつクライアント・サーバー双方の設定を正しくしていれば、問題なく動作するはずです。pingコマンドで確認してみましょう。
%ping 192.168.100.2 (自分のIPアドレス) または駄目な場合は、以下の対策を練ってください。
%ping 192.168.100.3 (相手のIPアドレス)
CentreCOMのLA-PCMは動作リストに載っていますが、Linuxでは癖があるので止めた方がよさそうです(ブランドに騙された、むきぃ〜)。ジャンク屋で適当なものを見繕ってくるほうがマシかも。
pingコマンドで返答が帰ってくるようでしたら、サーバー側の/etc/hosts.allowを次のように編集します。これでIPアドレスが 192.168.100.* であるPCからアクセスが可能となります。
ALL: 192.168.100.0/24 (クライアントのIPアドレス)
クライアントが数台しかない場合は
ALL: 192.168.100.3のように決め打ち設定することも可能です。
ALL: 192.168.100.4
make menuconfigと打つと、kernel設定画面になります。
さて、IP-masqueradeに必要な設定は以下の通り。
あとの注意事項として、
#cd /lib/modulesしばらくお待ちください。Pentium3の500MHzくらいなら5-10分ですが、ここで用いたマシンだと50分くらい掛かります(苦笑)。そのあとで PCMCIA-CS のソースがあるディレクトリに移動し、
#tar cvfz modules_org.tgz ./$VERSION (モジュールのバックアップ)
#rm -rf ./$VERSION/ (モジュール類を消去)
#cd /usr/src/linux-$VERSION
#make dep; make clean ; make zImage ; make modules; make modules_install
#make config設定をどこから読むか?と聞かれるので、「2:現在のカーネルソースから読む」と 答えておけばおっけー。。一通り設定が終わったら、
#make all ; make installで上手く行くはずです。
#cd /lib/modules/2.0.36/
#depmod -a
まず、起動時のオプションを
eth=0,0,eth0 eth=0,0,eth1のように設定します。
PCMCIA ネットワークカードのIP等の設定は /etc/network.optsで行います。 インストール時の設定が既にこの中に書かれていると思いますので、二枚目の 設定も書くことにします。
カードのスロット番号によって設定するには、以下のように書けば大丈夫です。 ethernetアドレスによる設定を行うようにすることも可能です(4番目の * を書き換える)。case "$ADDRESS" in *,0,*,*) #内部LANに関する設定が書かれているはずです。 ;; *,1,*,*) #Internet接続サービスプロバイダから貰った設定を書いてください。 ;; esac
再起動し、 ifconfig コマンドで設定を確認してください。eth0, eth1が設定されていればオーケーです。起動する度に eth0とeth1のIP設定 が反対になることもありますが、物理的接続とIP設定の整合性に問題はありません。
外向けネットワークがまだ開通していないなら 二枚差しする必要がありません。むしろトラブルの元になりますので、開通まで外部向けネットワークカードは外しておくのが良策です。
なお、PCMCIAに関してはJFにHowToがありますので、迷ったら即読んでみてください。
この時点で 入門本に書かれている ifconfig の設定とか route の設定は終了していますので、あとは実際に IP-masquerade を動かすだけです。
但し、いくつかの通信プロトコルに対応するにはmodprobeによるモジュールの導入が必要です。 kernel設定時に IP-masquerade 機能をONにしていれば/lib/modules/$VERSION/ipv4あたりにip_masq_*.oがありますので、適当にmodprobeで導入してください。kerneldは使えません。
あ、おまけに言うけど $VERSIONはLinuxのバージョンです。Plamo Linux1.4.4 なら $VERSIONは2.0.36になります。
#modprobe ip_masq_irc.o
#modprobe ip_masq_ftp.o
#modprobe ip_masq_cuseeme.o
forwardingの亜種として動かす、つまり素通しの設定で良いなら、
だけで十分に思えますが、これだと成りすましに対してあまりにも無防備なので#ipfwadm -F -p masq
くらいはやりませう。台数が少ないなら一台ずつ つらつらと並べるのも可でしょう。#ipfwadm -F -p deny #ipfwadm -F -a masquerade -S 192.168.100.0/24 -D 0.0.0.0/0
#ipfwadm -F -p deny #ipfwadm -F -a masquerade -S 192.168.97.2/32 -D 0.0.0.0/0 #ipfwadm -F -a masquerade -S 192.168.97.3/32 -D 0.0.0.0/0 #ipfwadm -F -a masquerade -S 192.168.97.4/32 -D 0.0.0.0/0 #ipfwadm -F -a masquerade -S 192.168.97.5/32 -D 0.0.0.0/0
これが出来たら、さらにポートスキャンを防ぐためにいろいろと制限を加えてみてください。私は失敗したため詳細を書きませんが、やはりJFに文章があります。
動作を確認したら、これらをまとめて/etc/rc.d/rc.masqというスクリプトファイルにしておき、実行属性(chmod 775くらいか)を付けた上で /etc/rc.d/rc.localから呼び出させるようにすればおっけーです。
おまけに、kernelの2.2.xではipchainというソフトを使うそうで、複雑な設定を行うときはこっちの方が便利だそうです。
クライアントの設定は以下の通りです。
「HAM and MobileGear page」と銘打っているからには、モバとの接続は必要不可欠です。
というのは冗談としても、棚に置きっぱなしにしているserverをメンテナンスしたいときなどに Windowsマシンを起動するのは面倒です、よね?
server側
/etc/inittabに以下の行を入れ、rootになってinit qとコマンドを打つ。
s1:12345:respawn:/sbin/agetty -Lh 19200 ttyS0 vt100
もば側
htermを導入する。設定は面倒ですが、communicationのところを適当にいじったら動くでしょう。ログインしたら stty rows 19のように行数を指定すればよろし(専用の termcap を書いて 上記の vt100 と取り替えるのも手です)。
これで、モバイルギアをserverの端末として使うことが出来るようになりました。
gettyによる接続は(慣れると)非常に簡単で、事実モバイルギアをネットワーク機器設定端末として持ち歩いている本職SEの方もいるそうです。
ですが、やはりgettyによる接続には幾つかの限界(?)があります
というわけで、pppd の出番です。LinuxをPPPのクライアントとして用いる事例は多くありますが、今回はサーバーとして用います。JFにある PPP-HOWTO の 29章、およびポケットBSDに関するページを参考にしています。
Server側
asyncmap 0 netmask 255.255.255.0 19200 proxyarp crtscts local
192.168.100.2:192.168.100.4
alias ppp 'exec /usr/sbin/pppd -detach'
Clilent側
com1 irq 4 local pktvec 0x61 19200 asyncmap 0 crtscts
TIMEOUT 10 '' '' ogin: yuzo ssword: MyPaSSword heppoko ppp
特にmasqueradeの設定は必要なさそうです。
server側のppp起動方法にはもう少しスマートな方法もありそうですが、「あんさんのカーネルはPPPをサポートしてまへんで」みたいな文句を言われて尽く突っぱねられました。
速度を上げるためには、
マシンが非力である以上、軽量化は必須項目です。Plamo Linuxの場合、インストールしたパッケージは /var/log/package/ にリストアップされますので、これを見ながら
としませう。
また、不要なデーモンを起動しないようにするのも重要です。
やはりJFに良いHowToがありますので、これを参考にして sendmail, nfsd, mountdあたりの不要daemonが起動しないように/etc/rc.d/rc.*を編集し、端末の数も3つ位に減らすようinittabを編集すれば(c1:...とある行)多少はマシになるのではないでしょうか。Perlは文字列の扱いが簡単と言われていますが、モジュールによって提供される 豊富な機能もまた大きな特徴です。
たとえば libwww-perl (LWP)というモジュールを入れると、
use LWP::Simple; $doc = get 'http://www.sn.no/libwww-perl/';
たったこれだけのスクリプトで Webpageの取得が可能となります(このスクリプトはLWPの説明書ファイル(lwpcock.pod)からの抜粋です)。
これ使えば 目的に合った Webpage tracer/getter が簡単に出来そうでそ?
おまけとして 私が使用しているPerlスクリプトを掲載しておきます。これは一URL一行で書かれたURLリストファイルを読み込んで そこに書かれたWebpageを順に取得するスクリプトです。決め打ちが非常に多いので再配布禁止というかこんなん配る阿呆いーへんって。
メインマシン(腰5)の静音化がほぼ完成の域に達すると、20cm前にあるメインマシンより1.5m後ろにあるノートのHDD音が耳に付くようになりました。ノートPCは手を入れる余地が少ない分だけ静音化に向かないかもしれません。
HDDをSCSI接続の外付けにして密封するという方法も有りそうですが、面倒なのでノートごと箱に入れてしまいました。A4サイズのノートPCにはマザーボードの箱が適しています(笑)。
Perlに関してはこんな感じです。