KOREDO?com
| ホーム | パソコン関係 | ソフト | ハード | その他 | お問合せ | 

 

■自宅サーバの構築 その2■

RedHat8を使用した
独自ドメインサーバの構築

2003/1/3
o-yam

●前書き

先日よりWindowsXPにて自宅サーバを開始したが(詳細はこちら)、やはりサーバはUNIX系が良い。

サーバは稼働を開始した後は、管理・運用作業のみとなる。

定期的にログをチェックしたり、定時に各種ログを集計したり、エラーを監視して警告、連絡したり・・・

はっきり言って面倒である。そこをいかに簡単にするか。全てを自動にすればよいのである。

Windows系のアプリケーションはビジュアルでインタラクティブ、稼働開始までは重宝するであろう。しかし、当然のごとく、他のアプリの事など全く考えていないし、OSの事すらも知った事ではない。自分自身の世界を作ってクローズしている。従ってログの場所などもバラバラ。とても管理出来た物ではない。
テキスト処理系のコマンドが標準で備わって無いのも致命的。痒いところに全く手が届かない。

 

例えば。
メールが届いたらサーバに「メールが来たよ」と喋らせたいとしよう。


メールサーバにそのような機能は無いので、ファイル監視ソフトをインストールして、メールのログファイルに変化があったら音を鳴らす様に設定。拡張子を元にMediaPlayerで鳴らそう としたが、多重起動するなど動かない。他のソフトを探すも、コマンドラインオプションが指定できないなど状況は同じ。コマンドでWAV再生、と言うのがあったがしばらくするとエラーで止まっている。
そもそもファイル監視ソフトもメールサーバのログが変化したかどうかしか検査できないので、メールを読んでも送っても届いても音が鳴る。サーバーのログはSMTPとPOPに分かれていない。。。。。キレました(笑)

Linuxであればスクリプト数行で済む事(しかも全部最初からに入っていて、標準で出来る事)が出来ない。

メールログファイルの下の方を見て着信した部分を切り出し、指定時間後に再検査し、変化があれば音を鳴らす。これだけですよ、これだけ。トリッキーに書けば1行で書けるのでは?と言うくらい単純。

 

と、言う事でWindowsに見切りを付け、勉強も兼ねてRedHat  Linux8.0で構築する事にした。

※注意:このドキュメントはあくまで個人レベルのサーバ構築の話です。

インフラ整備(サーバ )

サーバは引き続き、余剰部品の組み合わせ

microATXのケース。

CPU PentiumII 350MHz
MEM SDRAM 512MB
HDD IDE 15GB Seaget BarracudaIII
M/B Tyan tomcat810e
LAN Realtek8139
サウンド チップセット内蔵
Video Voodoo Banshee PCI

※5インチベイにはスピーカが入っている。CDD、FDDは無し。
※電源ファンは5V化。

メモリとHDDは多めにしたが、所詮は余剰品。
i810のVideoはXと相性悪いらしいのでBansheeを追加。

この組み合わせでもXがまずまずの速度で動くのにはびっくり。1GHz位いるのでは?と思っていたが、CPUはあまり関係ないようだ。


※WEBのブラウズ等はかなりマッタリとしているので、可能であれば河童PenIIIあたりがよいかも。電気代や騒音が無視出来るのであればなんでもいいのだが。

 

●OSインストール
※注意:このドキュメントはあくまで個人レベルのサーバ構築の話です。

何はともあれCDを入手。

参考書

雑誌の付録でもいいが、始めての方は上記を推奨。CD付き。

インストールでつまづく事はあまり無いが、HDDのパーティションはよく考えておこう。今回は3つに切った。(勝手に切られた)

/boot 100M
SWAP 1000M
/ 残り全部(約13G)

SWAPはメモリ×2。将来増設する分も考えて確保しよう。

伝統的に/home や /var を別パーティションにしたがる傾向があるが、大規模サーバならまだしも、HDDを増設する予定も無い個人ユーザには無縁である。

インストールオプションは「全部」。全部入れたところでたかだか4GB。残りは10GBある。個人サーバであればまず問題ない。入れ忘れがあると後から入れるのが面倒。

ネットワークの設定は

IPアドレスは固定、自分で決定して入力。
DNSは立てないのでプロバイダのネームサーバを調べて入力。
ゲートウェイはルータのアドレスを入力。
ホスト名はFQDNを入力(重要)

何の事か解らない場合、上記参考書を参考に。

 

 

FDDは付いてないのでBOOTディスクの作成はパス。所詮個人用サーバなので壊れたら直すより、また新たに構築したほうが早い。

Xの環境等はめんどくさいのでほとんどデフォルト。解像度だけSXGAにした。とりあえずグラフィカルログインを選択。
 

 

●ハード設定
起動したらRHNがどうのこうの言ってくる。いわゆるWindowsアップデートの様な物。素直に全部アップデートしておく。(メールアドレスの登録が必要。フリーのメールアカウントなどを用意しておこう)

起動したらマウス、キーボード、サウンド等のハードウェアが正しく動くかチェック。

※マウスが動かない場合は<ALT>+<F1>でメニューが出る。

画面の領域もメニューから。変更したら一回ログアウト。

 

次にMozilla(ブラウザ)を起動してインターネットに接続しているか、内部LANと通信しているかチェック。

うまく動かない場合はメニューの「システムのログ」でチェック。設定もメニューの中にあるので適宜。

終わったら画面周りを自分の好みにする。アイコン類は「小さい」に変更。画面上部にパネルを追加し、システムの稼働状況をグラフ表示するようにした。

 

●システム設定
メニューの「ユーザとグループ」でメールのアカウントを作成。

ここでありがちなのは、「管理者(root)ではなくユーザとしてログインする事」と良く言われるが、それも規模が大きい場合の話。使うのは自分だけなので自分が管理者。いつでも「root」(笑)

※telnetやFTPはセキュリティ上rootで入れないので念のため。設定変えれば無理矢理入れるだろうがそこまでrootに拘る必要もなかろう。

 

メニューの「サービス」でこのサーバで使わない物は止めておく。

今回要らない物はDHCPサーバ、プリントサーバ、ネームサーバなど。そのほかPCMCIAやISDNなどもいらないだろう。(多すぎて何がなんだか。依存関係も良く分からない。とりあえず動けばOK)

 

●サーバ構築 Samba(サンバ)
※注意:このドキュメントはあくまで個人レベルのサーバ構築の話です。

WEBのコンテンツをWindowsからアップするのにわざわざFTPを使うのもばかげている。ここはsambaを使って、Windowsのファイルサーバに見せかける事にする。

設定は参考書を参考にすれば問題ない。ワークグループ名、サーバ名、共有場所を変更する程度。

書き込みをする場合はLinux側でパーミッションを書き込み可にしておく。自宅サーバ、しかも自分しか使わないのでユルユルの設定にする。

当然インターネット側からは見えないように、ルータでポートを閉じておく事。

 

日本の総本山は http://www.samba.gr.jp/

ブラウザベースで設定する「SWAT」と言うのもある。(が、SWATが動くようにする前に、/etc/samba/smb.conf を直した方が早い)

 

サーバ構築 Apache(アパッチ)
※注意:このドキュメントはあくまで個人レベルのサーバ構築の話です。

WEBサーバと言えばApache。デファクトスタンダード。

これも普通に公開する分には別段難しくは無い。htmlを置く場所(ドキュメントルート)が/var/www/html/ で問題なければそこにコンテンツをアップして起動するだけ。
サーバ名くらいは設定しておきましょうか。日本語を優先させるには「ja」を先に持ってくればいい(らしい)

その他細かい設定も参考書、インターネットを参照のこと。

 

参考書では設定ファイルhttpd.conf を直接なおしているが、ブラウザベースの管理ツールもある。

http://jp.webmin.com/

※Apacheだけではなく、Linuxの管理全般が行えるのでインストールしておく。

 

WEBは公開するので、内部でテスト完了後にルータでポート80を開けて、内部サーバに届くように設定。

 

アクセスログの解析は標準でwebalizerと言うのが入っている。
他にanalog(定番)、AWStats(画面が綺麗)などが存在するのでお好みで。
AWStatsはgoogle等の検索語が正しく表示されるのでかなり参考になる。

 

 

サーバ構築 sendmail(センドメール) ipop3

※注意:このドキュメントはあくまで個人レベルのサーバ構築の話です。

上記参考書に従って設定を行なう。

ルータのポート25、110を開けてサーバに送るように設定。

読み書きのテストを行う。問題なければSPAMリレー(不正中継)の検査を行う。(インターネット上に色々ある)

以上で一通り完了である。特に問題なければこのまま公開する。

 

 

 

 

 

が。

このままではセキュリティ上、外(出先や会社など)からメールが送れない。外で送りたい場合は別途プロバイダから支給されたアカウントで、そちらのSMTPサーバを使う必要がある。ありがち。使用頻度が少ない場合はそれでもいいだろう。

ここまで来てそれも癪に触るので、外部からも自宅サーバを使って送れるようにしよう。

ここから先は参考書に載ってない。

あれこれググって色々調査。

POP before SMTP 一般的かと思ったが、どうもメールサーバが正しく認証出来るまでの繋ぎの技術らしい。POPを検出して中継許可ファイルに追加、指定時間後に消す。確かにあまりスマートでは無い。

SMTP AUTH(認証) こちらが本命の様だ。sasl と言うのを使うらしい。確かにデフォルトで「 saslauthd 」と言うサービスが入っている。

これがまた日本語ドキュメントが無い。ググっても他のメールサーバ( qmail,postfix )だったり、sendmailのバージョンが違ったり、ディストリビューションが違ったり、BSD系だったり。。。ほとんど手探り。書籍類も見てみたが、同様の状況。(まぁ英語ドキュメントを読めば済むのであろうが。。。)

 

●SMTP認証 saslauthd(読めない。サスル?)
とりあえず試行錯誤した手順。

無保証、間違ってる場合もあるので注意
※RedHat8.0 標準の環境が前提。

◆まず実行前の状態を調べる。telnet でポート25に繋ぎ、コンニチワ。

250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI  ← ここ
250-DELIVERBY
250 HELP
 

◆/etc/mail/sendmail.mc を編集

以下の行のdnl(コメント行の事)を外す

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

その後 m4でコンパイル(参考書参照)
 

◆/usr/lib/sasl/Sendmail.conf を変更
pwcheck_method:sasldb
 

◆ユーザを登録する
#saslpasswd -c -u xxxx.com user1

出来たかどうかは
#sasldblistuser

◆パーミッションの確認
/etc/sasldb が600になっている事を確認

◆メニュー「サービス」saslauthd を有効にする

◆再起動後、telnet でポート25に繋ぎ、コンニチワ

250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
 

青字が追加されていればsendmail側はOK。

メールソフトで設定(「このサーバは認証が必要」など)を適切に設定し、送受信、不正中継テスト、外部からの接続テスト。。。。なんとかクリア。

未だに良く分からない所が多いが、とりあえずSPAMの踏み台にはなってないようなのでヨシとする。

うまく動かない場合は maillog を始め、ログをチェックの事。

 

●管理

最初にも書いたように

・メール着信
・WEBアクセス
・WEB不正アクセス

が発生したら音を鳴らすようにした。方法はいくらでもあるが、シェルスクリプトで

・ファイルサイズ比較(ls -l |awk )、
・ファイルの最後を切り出してして文字列で絞ってバイト数を得る(tail | grep | wc -b  )

などを定期的に実行、比較判定するようにした。

Windows用のWAVEは

#play [オプション] ファイル名

で再生可能。

つたないサンプル:WEBのエラー判定
#!/bin/bash
while(:)
do
WWW1=`tail /var/log/httpd/error_log |grep err |wc -c `
sleep 30
WWW2=`tail /var/log/httpd/error_log |grep err |wc -c `
if [ $WWW1 -ne $WWW2 ]; then
play /フルパス/wavefile.wav > /dev/null 2>&1
fi
done


無限ループなので & でバックグラウンドに放り込んでおく。待ち時間はsleepで調整。
cron で1分おきなどでもいいが、毎回起動するのも何なので。。。

ちなみにこのスクリプトはかなり適当で精度が低い。本来は error_log 全体をスキャンしなけれならない。しかし実行に時間がかかるので、その辺は処理時間と精度のトレードオフにした。

このへんは如何様にでも出来るのでお好みで。

 

●結論

DDNSで独自ドメイン完成。なんとかLinuxでリベンジ出来た。信頼性は様子見。

いざと言う時のために、別のマシン(さらに非力)で同じ環境を作ってスタンバイさせてある。

 

●後書き

参考書の題名は「はじめてのRedHat Linux 8.0」であるが、始めての人間が出来るかどうかは疑問である。

以下のUNIXの基礎知識は必須

・ファイル操作系コマンド
・管理系コマンド
・vi エディタ
・リダイレクト、パイプ
・正規表現
・文字列操作系コマンド
・ネットワーク系コマンド

これにさらにRedHat Linuxローカルの設定や作法が加わる。初心者レベルの人間には長く険しい道になるだろう。

 

それでも基礎知識は是非覚えておきたい。何故なら、10年後、20年後でも全く変わらないから。

また、「勉強」などと構える必要もなく、RPGゲームでもやってると思えばいい。
「管理者はawkの呪文を憶えた。ひとつレベルが上がった!」とか(笑)