2002年2月27日、
「発注した
WEBくん
がまだ来ないし、そういえば Linuxサーバーを構築してルーター設定の実証試験をやるんだったな。Linuxは使ったことがないし、サーバー設定の本でもさがすか。」
ということで Linux本をみていました。
コマンド本を見ても FreeBSDと何にも変わらないし、買うべき本がないなぁ〜と思っていたら
「Linux Controllerで作る簡単Linuxサーバー」秀和システム \2,800
が目に止まりました。
パラパラと見ていると
Linux Controller
というのはLinuxサーバーを簡単設定する仕組みのようです。
Linuxサーバーに「Linux Controller」をかぶせると、これ以降はブラウザからWebやメールやFTPサーバーなどが同じLANにつながった他のパソコンからブラウザを使って設定できるようになります。
それも呪文のようなコマンドは一切不要でただ記述とボタンタッチだけになるようです。
LinuxサーバーをGUIが使えるように設定してしまうと肝心のサーバーの処理性が落ちてしまうのが心配ですが、このようにhttpプロトコル通信だけを使って設定するなら、この心配も不要に思います。
こりゃ〜面白い!!!とこの本を買ってしまいました。
CD-ROMが付いているのですぐに試せます。
ターゲットマシンは秋葉の路上で買った
1,500円のマイクロBook PC
です。
MMXペンティアム166MHz-CPU, メモリ160MB, HDD 8.3GB, 100Base-TX/10Base-TX LAN のスペックです。
まずは RedHat Linux 6.2J が本の付録のCD-ROMに入っていたので、これをインストールしました。
-
CD-ROMからブートさせました。
Linuxが自動的にハード認識をして、全く何にもしないで必要なドライバーを組み込んでくれました。
RedHat Linux 6.2J で立ち上がる様子を観察していると、結構いろんなハードを自動認識してドライバを自動で組み込んでくれます。
IDEやPCIベースのものならほぼ完璧に自動認識してくれます。
メチャメチャ簡単です。
-
RedHat Linux 6.2J ではインストール用X-windowを立ち上げるべきかどうかを、マウスが付いているかどうかで判断しているようです。
ともかくマウスさえ付けてやれば X-windowが立ち上がってGUIでインストールが進みます。
-
しばらくしてインストール画面が出てきました。
インストールタイプを「サーバー」に指定。
だって目的が Linux Controllerを使うことだもん!
-
GUIでのインストール画面に自動パーティション割付機能があります。
何にも考えずに自動パーティションを選択しました。
-
約10分くらいでインストールは完了しました。
再立ち上げすると見事 Linux 6.2Jが立ち上がりました。
rootになってルートディレクトリからファイルを眺めてみましたが、それらしいファイルが入っているので、きっと!?!?うまくいったのでしょう。
テキストモードでのオペレーションは普通のUNIXと全く同じですね。・・・当たり前か。
次に Linux Controller Standard Edition 2.0を組み込みました。
このソフトはシステム管理者向けの各種設定項目を同じLANにつながったパソコンのブラウザから行うものです。
UNIXの知識がなくても使えます。
が、LANやWANやインターネットの知識がないと使えないので、結局こういう人はUNIXが使えるのが当たり前なので、使える人は限定されます。
でも、設定が本当に楽なんです。
ブラウザから設定するだけですから、X-windowという重いGUIのプログラムも不要です。
-
付録のCD-ROMをCDドライブに実装し、マウントします。
# mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom
-
Linux Controller のインストーラを使ってインストールします。
# cd /mnt/cdrom/HDE
# ./lc2-install
-
数分で Linux Controller が立ち上がりました。
Linux Controllerが動作し始めました。
簡単に動作すると思って始めたのになかなか動作しなくて時間がかかってしまいました。
まだ全部解決した訳ではありません。
苦労話を参考にご紹介します。
-
Linux Controllerをインストールして各種設定をやってから再立ち上げするとLinux Controllerが起動しない。
<原因>
Linux Controllerは標準で TCP wrapper と パケットフィルタ(ipchains)を実装しています。
デフォルトでガチガチのフィルタリングがかかっており、内部LANからのアクセスさえも拒否するようになっていた。
ipchainsを一旦ストップさせると Linux Controllerが動作したので、ここでフィルタリングを適切に設定することで解決。
-
ユーザーへのWWW及びFTPでアクセス不能。
<原因>
/homeディレクトリにあるユーザーディレクトリのパーミッション設定が不適当であった。
Linux OSより設定変更してOKとなった。
Linux Contorollerに頼ってしまうとこのような単純なことがなかなかわからない。
-
Linux Controllerの表示が非常に遅い。
ブラウザからアクセスして1画面表示するのに数分かかる。
何かのアクセスがタイムアウトになるまで待っているような感じ。
<原因>
原因不明。使っているうちに速くなった。後日キチンと調べよう・・・。
-
ダイナミックDNSサービスで家サーバープロジェクトから入手したドメイン kitaguchi.or.cf が動作しない。
<原因>
どうも「or.cf」が止まっているようです。
nslookupでIPアドレスの返答がないです。
仕方ないので「dip.jp」で「kitaguchi.dip.jp」を取り直したらnslookupで正常動作が確認できるようになった。
初めてのダイナミックDNS利用なので私の設定が悪いのかさんざん悩みましたが、あっさり家サーバープロジェクト側の問題でした。
皆さん注意しましょう。
WWWサーバーとMailサーバーをWAN側に公開しました。
-
LAN側にあるサーバーをWAN側に公開するので、TE4121C ADSLモデムルーターの設定をする必要があります。
NATアドレス・ポート設定とIPフィルタ設定をしてwwwとsmtpのポートを空けました。
これ以外のポートとicmpは閉じたままです。
NATアドレス・ポート設定は以下としました。
LinuxサーバーはIPアドレス「192.168.1.250」に鎮座しています。
napt_priority:1="2"
napt_wanif:1="WAN1"
napt_lanipaddr:1="192.168.1.250"
napt_wanipaddr:1="0.0.0.0"
napt_protoid:1="TCP"
napt_lanport:1="smtp"
napt_wanport:1="smtp"
napt_priority:2="3"
napt_wanif:2="WAN1"
napt_lanipaddr:2="192.168.1.250"
napt_wanipaddr:2="0.0.0.0"
napt_protoid:2="TCP"
napt_lanport:2="www"
napt_wanport:2="www"
-
メールサーバーが動作するようになりました。
hiroshi@kitaguchi.dip.jp のメールアドレスが動作するようになりました。
やはり「名前@苗字」形式のメールアドレスは覚えやすいと思いませんか。
-
WWWサーバーも動作しているのですが、まだ調査中のことがあります。
それは http://kitaguchi.dip.jp/~hiroshi/ のホームページで「HTTP 500 内部サーバーエラー」というのが出て表示されないのです。
原因がよく判りません。
以下の事象は判っています。
-
/home/hiroshi/public_htmlディレクトリ(ホームページエリア)に index.html だけを入れたら、これはちゃんと表示する。
-
/home/hiroshi/public_htmlディレクトリに本来のデータ(全部で35MB)を入れると「HTTP 500 内部サーバーエラー」となる。
「HTTP 500 内部サーバーエラー」の詳細って(何が起きているのか?)、何を調べると判るのか知っている方いませんか???
DDNS(ダイナッミックDNS)を使うことで、グロバルIPアドレスが変われば、そのIPアドレスをDDNSサーバーに再登録するので、IPアドレスの変動には心配ありません。
が、やはりIPアドレスはあんまり変わらないほうが良いと思われます。
IPアドレスの切り替えには5分程度かかるので、例えばIPアドレス切り替え中に、私以外のDDNSで切り替え前のIPアドレスを他人が掴んでしまった場合、私宛のメールが他人に行ってしまうことが考えられます。
確率的には非常に少ないと思われますが、ないとは言い切れません。
私が契約しているADSLプロバイダはT-comです。
T-comではIPアドレスのリース時間はゼロになっているようで、一旦切断されると必ずIPアドレスが変わります。
切断の要因は回線不安定によるリンク切断と一定時間パケットが流れない時にプロバイダ側からPPP接続を切りに来るの2ケースです。
前者はあきらめるしかありません。
後者は一定間隔でテストパケットを流してやることで解決できると思います。
いろいろ考えたのですが、20分に1回NTPによる時刻修正をすることにしました。
外部のNTPサーバーと情報交換することでパケットを流し、時刻修正もできると一石二鳥を狙った訳です。
XNTPをLinuxにインストールしました。
そして ntpdate コマンドを自動実行するように crontab を設定しました。
# crontab -e
で以下の行を追加する。
5,25,45 * * * * /usr/bin/ntpdate clock.kpix.org > /dev/null
この設定で毎時5分/25分/45分に時刻合わせをします。
実証試験をしてみるとうまく動作しているようです。
IPアドレスが変化しないか監視中です。