2010/10/15(金) [n年前の日記]
#1 [linux] 自宅サーバの調子が悪い
電源LEDがついたままでOS(Vine Linux)が落ちてた。電源を再度入れてみるも、OSは起動するのだけど、そのうちプキュンと落ちてしまう。むむむ。M/Bか、電源のコンデンサがダメになってしまったのだろうか。
足元から引っ張り出してみたらファン吸入口が埃だらけ。まさか、コレか…? 熱暴走? とりあえず掃除。ネットワークから切り離した状態で起動。memtest86+をかけたが、1回はパスした。ということは、ハードウェアは動いてるはず。
足元に戻して、いつものように自宅サーバとして起動。
また落ちた。というかOSが勝手に再起動した。何が起きているんだ。どうもネットワークに接続すると落ちるような気がする。LAN関係の周りの何かが壊れてるのだろうか。それとも外部から…。
足元から引っ張り出してみたらファン吸入口が埃だらけ。まさか、コレか…? 熱暴走? とりあえず掃除。ネットワークから切り離した状態で起動。memtest86+をかけたが、1回はパスした。ということは、ハードウェアは動いてるはず。
足元に戻して、いつものように自宅サーバとして起動。
また落ちた。というかOSが勝手に再起動した。何が起きているんだ。どうもネットワークに接続すると落ちるような気がする。LAN関係の周りの何かが壊れてるのだろうか。それとも外部から…。
◎ なんとなくntpが不安。 :
検索しているうちに、DoS攻撃される脆弱性がある云々の話を見かけて不安に。ntpの最新版なら修正されているみたいなのだけど、ウチのソレは Vine Linux 4.x なので修正されてないはず。とりあえず、/etc/ntp.conf に、restrict 云々を書いてみることに。こんな感じになった。
restrict でサーバのソレを指定する際には、IPアドレスしか書けないのだろうか…? どの記事を見てもそういう書き方しか見つからない。しかし ntpq -p をした時のIPアドレスは、 _インターネットマルチフィード時刻情報サービス for Public のページに記載されたソレと異なるIPアドレスが表示されるようでもあり。…待てよ。mask を指定することで一番最後のソレが別の値でも問題ない状態になるのかな。
# server -4 ntp.jst.mfeed.ad.jp server -4 ntp1.jst.mfeed.ad.jp server -4 ntp2.jst.mfeed.ad.jp server -4 ntp3.jst.mfeed.ad.jp server -4 ntp1.plala.or.jp server -4 ntp2.plala.or.jp driftfile /etc/ntp/drift # driftfile /etc/ntp.drift logfile /var/log/ntp.log #keys /etc/ntp/keys restrict default ignore restrict 127.0.0.1 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # restrict ntp1.jst.mfeed.ad.jp mask 255.255.255.0 noquery nomodify notrap # restrict ntp2.jst.mfeed.ad.jp mask 255.255.255.0 noquery nomodify notrap # restrict ntp3.jst.mfeed.ad.jp mask 255.255.255.0 noquery nomodify notrap restrict 210.173.160.27 mask 255.255.255.0 noquery nomodify notrap restrict 210.173.160.57 mask 255.255.255.0 noquery nomodify notrap restrict 210.173.160.87 mask 255.255.255.0 noquery nomodify notrap restrict ntp1.plala.or.jp mask 255.255.255.0 noquery nomodify notrap restrict ntp2.plala.or.jp mask 255.255.255.0 noquery nomodify notrap server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 #fudge 127.127.1.0 stratum 3 #multicastclient # listen on default 224.0.1.1 #broadcastdelay 0.008最初、restrict 192.168.1.0 mask 255.255.255.0 の後ろに色々書いたら、WinXP機上の TClock Light からアクセスできない・タイムアウトになってしまって悩んだり。何も指定しないとアクセスできるのだけど…。 _EndRun FAQ NTPサーバ タイムサーバ よくある質問と回答集 を眺めて、どうにか指定を。
restrict でサーバのソレを指定する際には、IPアドレスしか書けないのだろうか…? どの記事を見てもそういう書き方しか見つからない。しかし ntpq -p をした時のIPアドレスは、 _インターネットマルチフィード時刻情報サービス for Public のページに記載されたソレと異なるIPアドレスが表示されるようでもあり。…待てよ。mask を指定することで一番最後のソレが別の値でも問題ない状態になるのかな。
◎ 5.xにアップグレードしないといかんのだけど。 :
ファイル管理の文字コードがutf8になったことや、標準で入るサーバが一部変更になったとか、4.xからアップグレードしたら起動しなくなった等の話を見かけて、怖くてアップグレードできなかったり。考えてみたら今までずっと、新規インストール → 旧サーバの /home 以下をコピー、みたいなことをしてきたわけで。
どうせ新規インストールしてドタバタするなら、この際、CentOS、Debian、Ubuntu 等のメジャーなディストリビューションに移行したい。メンテナンスも頻繁に行われているし、パッケージも色々用意されているし。でも面倒。
どうせ新規インストールしてドタバタするなら、この際、CentOS、Debian、Ubuntu 等のメジャーなディストリビューションに移行したい。メンテナンスも頻繁に行われているし、パッケージも色々用意されているし。でも面倒。
◎ 勝手に再起動したときにメールを送るようにしてみた。 :
参考記事。
_ITmedia エンタープライズ : Linux Tips「自動再起動時にはメール通知をさせたい」
_Linuxマシン突然再起動に関する備忘録 - OpenGroove
_Linux で、サーバの電源が突然きれたかどうかを判定できるログのとり方はあるでしょうか? - 人力検索はてな
_青空Linux : Linuxのカーネルパニック
_Linuxにて意図的にkernel panicを発生させる方法 - Knowlege Database
_Technical Tips - Miracle Linux (Redhat も同じだと思われる)で kernel panic を起こす方法
_Oops発生で自動再起動 - kiyoeri Nucleus
以下、コピペ。
100行では起動中のログしか送られてこなかったので、試しに500行にしてみたり。
/etc/sysctl.conf に以下を追加・修正。
_ITmedia エンタープライズ : Linux Tips「自動再起動時にはメール通知をさせたい」
_Linuxマシン突然再起動に関する備忘録 - OpenGroove
_Linux で、サーバの電源が突然きれたかどうかを判定できるログのとり方はあるでしょうか? - 人力検索はてな
_青空Linux : Linuxのカーネルパニック
_Linuxにて意図的にkernel panicを発生させる方法 - Knowlege Database
_Technical Tips - Miracle Linux (Redhat も同じだと思われる)で kernel panic を起こす方法
_Oops発生で自動再起動 - kiyoeri Nucleus
以下、コピペ。
Linuxは、サーバーとして使用されることを想定して作成されているので、第1の設定として、カーネルパニック発生時に自動的に再起動させる、という設定がある。この設定は、以下カーネルラメータで定義されている。
/proc/sys/kernel/panic
※このファイルに記載されている数字の分だけ待ち自動的に再起動する。1となっている場合、1秒後に再起動され、60秒まで指定可能。
また、多くのディストリビューションで、デフォルトでは0となっており、無効となっている。
Redhat系では、以下のように設定する。
例)パニック発生から1秒後に再起動するよう設定する場合
# sysctl kernel.panic=1
kernel.panic = 1
上記では、現在起動中のみ有効となる。再起動後も有効とする場合には、以下のように設定する。
(1) /etc/sysctl.confファイルを編集
# vi /etc/sysctl.conf
==
kernel.panic = 1 <=末尾に追記
==
(2) 設定を反映
# sysctl -p
(3) 設定の確認
# sysctl kernel.panic
kernel.panic = 1
「カーネルパニック時には自動的に再起動するようにしたい」Tipsで紹介した方法を利用すると、サーバを自動再起動させることが可能だ。しかし、どのような症状で再起動されたのかはぜひ把握しておきたい。このような要望を満たしてくれる方法の1つとして、次のようにcronへスケジュール設定しておくのがおすすめだ。ここでの設定は、再起動されたタイミングで「dmesg」コマンドの出力結果と「/var/log/messages」(直近のシステムログファイル100行)のログをroot宛に通知する指定だ。もちろんrootでなく「xxxx@zdnet.co.jp」などと記述しておけば、外部のEメール宛に送ることもできる。
# crontab -e
@reboot (dmesg ; tail -100 /var/log/messages)| Mail -s "`hostname` rebooted" root
100行では起動中のログしか送られてこなかったので、試しに500行にしてみたり。
/etc/sysctl.conf に以下を追加・修正。
kernel.sysrq = 1 kernel.panic_on_oops = 1 kernel.panic = 5SysRq + コマンド押しを有効に。kernel panic 時に oops(?)を出すのを有効に。kernel panic 時には指定した秒数後に再起動。これで、いざとなれば SysRq + 何かのキー押しが使える、ようになっているといいなと。SysRq は、Alt + PrintScreen、らしい。と思ったが、よくよく見てみたらサーバに繋いでるキーボードにはそのようなキーが無いようにも見える。ダメじゃん。
[ ツッコむ ]
以上です。