2006年3月27日月曜日

サーバトラブル

自宅のlinux サーバのトラブル.

昨日朝,なんだかメールが止まっているのに気づく.
メールチェックはできるが,外からメールを送っても着信しない.演奏会から帰ったらチェックすることにした.

とりあえず,メールサーバかな?
でも,メーラーで問題なくメールチェックができる.サーバが死んでいるなら,アクセスができないはず.
で,メールを送ってみると,サーバのアドレスには送受信ともできるが,外には出ないし,外から着信しない.

ということでルータを疑う.
でもたいした設定をしていないルータ.一応再起動するものの解決しない.
まぁ最悪,システムの再インストールするという手もあるが,それは最終手段として,もう少し食い下がってみる.

外から見えないと言うことは,DNS?
DNS サーバはメールサーバと同じマシンに立てている.
名前の参照をそのDNS サーバにしている web サーバのアクセスログを見ると,いつもならサーバ名で記録されるところが,名前解決されず IP アドレスだけしか残っていない.

ためしに named を再起動するが,まったく関係ない.
よく考えてみれば,DNSサーバを立てる前から,ルータのアドレス変換機能で着信していた.今回のメールの問題は,DNS とは無関係.
そもそも,普通に windows から外へつなぐと,ちゃんと名前解決してくれる.これはルータが外のDNSを参照する設定にしているからなのだ.内部のDNSは非武装地帯(DMZ)の3台のサーバを区別するだけに利用しているだけなので,外につなぐには関係ない.
とうことで,さっぱり原因がつかめない.

nslookup すると,windows からはIPが返ってくる.それは外のDNSを参照して.
ところが,webサーバやDNS サーバマシンは内部のIPしか返さない.外部を参照すると「DNSタイムアウト」になってしまう.
webサーバは内部DNSを参照するようにしているからしかたがない.当然,アクセスログはIPアドレスだけになってしまう.

外部の名前を参照しないのなら,
 /etc/resolv.conf
の設定が違っているのだろうと,確認するが問題なし.ためしにいろんなプロバイダの DNS に切り替えてみるがダメ.
そもそも ping を返しててくれる DNS なら生きているわけで.

ping で気づいた.webサーバからは外部の DNS の IP へ ping が通るが,問題のDNSサーバからは外部へは通らない.

しょうがなから,3台のマシンから,あちこち ping を飛ばしてみる.
webサーバマシンからは内部へも,外部へもすべてに ping が飛ぶ.しかし外部の名前指定すると「DNSタイムアウト」だが,IPアドレスを指定すると通る.まぁ名前が参照できないのだから当然だ.IPアドレスを指定すれば,ルータを経由して外へ出られる.

問題のメール&DNSマシンからは内部へは飛ぶが,外部へはIPを指定しても通らない.
それもエラーが
 connect: Network is unreachable
である.
つまり,「見えるけどタイムアウト」とかいうことではなく.はじめから「問題外」という状況.
同じネットワーク内のwebサーバマシンからは見えると言うのに・・・

ネットワークの設定ファイル
 /etc/sysconfig/network-scripts/ifcfg-eth0
を確認してみる.
あ゛~~~ DHCPを使う設定になっているぅ
なぜ,勝手に設定が変わったのだろう.それがなぞだが,トラブルの原因はこれだ.
DMZは static で利用しているから,DHCPで IP を振っていない.
マシンは「IP振ってよ」と待っているが,振ってくれない.ところがなぜか古いIPだけは残っていたからネットワークでは見える.IPを振ってくれる大元が gateway になってそこから外に出られるわけだが,振ってくれないので,gateway が存在しない状態.
これなら外に出られず,
 connect: Network is unreachable
となるはずである.
そ れにしても,よくIPを失わなかったなぁ.実はこれらすべての作業はマシンに触ってはいない.ssh経由で windows から操作している.IPを見失ったら,windows から見えなくなるので,マシンを直接操作しなければならなくなる.ところが メール&DNSサーバのキーボードは壊れているし,液晶の半分は映らないので,操作できないのだ.
要するに,ぶっ壊れてて日常の用途にならないからサーバに転用しただけ.最初のインストールだけは外部ディスプレイとUSBのキーボードをつないだ.それが面倒なので,再インストールは避けたかった.

ということで,設定を static にして,外へ出る gateway を設定する.
 /etc/sysconfig/network-scripts/ifcfg-eth0
を BOOTPROTO='static',IPADDR='192.168.xxx.xxx' にして GATEWAY='192.168.xxx.xxx' も設定して
 /etc/rc.d/init.d/network restart
でネットワークカードを再起動したけど,まだだめ.
 netstat -nr
で確認しても,たしかに gateway がセットされていない.
「RedHatLinux9から、/etc/sysconfig/networking/profiles/default/ifcfg-eth0 も変更する必要があるみたい」
という文をネットで発見して,設定してカードを再起動したら解決.いままで行方不明になっていたであろうメールがばんばん着信し始めた.
webサーバのログもちゃんとサーバ名で記録され始めた.めでたしめでたし.

0 件のコメント:

コメントを投稿

スパム対策のため,コメントは,承認するまで表示されません。
「コメントの記入者:」は「匿名」ではなく,「名前/URL」を選んで,なにかニックネームを入れてください.URL は空欄で構いません.