http://centossrv.com/ を参考に自分が使いやすそうなCentOSベースのサーバを作ってみる.
#contents
+CentOS5インストール
--CentOSダウンロード用ページ→http://ftp.riken.jp/Linux/centos/
--2008年9月18日現在最新版は5.2
+初期設定
--これ以降はSSHで接続して利用する
--一般ユーザ追加
--rootへはWheelグループが必要
--yumパッケージの停止
--SELinuxの停止
+Clam Anti Virusのインストール
+DNS機能のインストール
*RAID系の機能 [#u0bf9400]
-3ware Escalade 7506-8をインストール
-CentOSはデフォルトでサポートされてるので,特にハードウェア面でインストールは不必要
-監視のために3dmを入れようとした.
-入るには入ったが,文句を言われる.¬e{install-driver:ドライバ入れろー的な};調べると3dm2があってそっちをいれろとの事.
--http://www.ask-sss.com/support/faq-3ware/3dm-3dm2-cli.html
-3dm2はhttp://www.3ware.com/support/download.aspから入手
$ tar -xvzf 3DM2_CLI-Linux-x86-9.5.1.1.tgz
$ su
# chmod u+x setupLinux_x86.bin
# ./setupLinux_x86.bin -console
-質問は基本デフォルトで答えたが,メール機能だけoffにしておいた.
-それから自ホスト以外からのアクセスも受け入れた.
-https://server-name:888/ で管理画面にアクセスできる.
--http''s''を忘れてずいぶん嵌った.
--嵌った挙句,CLI(コマンドラインインタフェース)版をダウンロードしてしまった.
--参照ページ
---[[CentOS 5に8006-2LPと3dm2とCLIをインストール (Nov.22.2007)>http://plaza.rakuten.co.jp/kazu2y/diary/200711220000/]]
---[[CentOS 5に9650SE-2LPをインストール(Nov.5.2008)>http://ore.saizensen.net/archives/106/trackback]]
---[[CentOS 5に8006-2LPと3dm2とCLIをインストール(Jan.22.2008)>http://blog.perl.tv/2008/01/centos51raid1.html]]
---[[9500S-4LPと3dm2とtw_cliをインストール(Jul.11.2008)>http://www.oceanwave.jp/index.php?3ware%209500S-4LP%A4%CE%C0%DF%C4%EA]]
---[[Fedora Core 6に9590SE-8MLと3DM2をインストール(Dec.14.2006)>http://www.takajun.net/pc/storyp061214.htm]]
---[[Fedoraに3dm2をインストール>http://www.linuxmania.jp/3dm2.html]]
---[[FreeBSD 6.0に8006-2LPと3dm2とCLIをインストール(Mar.8.2006)>http://blog.teachat.org/archives/2006-03.html]]
---[[3ware Escalade 7506のページ>http://japan.3ware.com/products/parallel_ata.asp]]
---[[3ware Escalade 7506のデータシート>http://japan.3ware.com/products/pdf/Escalade7506JP.pdf]]
---[[ASK-SSSの3wareのページ>http://www.ask-sss.com/3ware/]]
-RAIDのS.M.A.R.T.
$ sudo /usr/sbin/smartctl -a /dev/twe0 -d 3ware,4 > smart04
$ sudo /usr/sbin/smartctl -a /dev/twe0 -d 3ware,N > file
-こんな感じでSMARTを吐き出せる.
-3wareのカード前提で,N番目のポートのディスクに直接アクセスできる!すごいなー
-http://www.crimson-snow.net/tips/unix/smart.html 参照
-3dm2再起動
sudo /etc/rc.d/init.d/tdm2 restart
*clamdのアップデート [#yfea6c9b]
-説明ページはyumを使ってるのに,いつまでもyumパッケージが出ない.
-rpmのパッケージで更新
yum remove clamav-db clamav clamd
--clamdがデーモン,clamavが本体,clam-dbがウィルスデータベース?かな?
-/etc/以下のconfファイルが更新されてしまうので,それはバックアップを取っておいた方が吉
-rpm を取得
wget http://packages.sw.be/clamav/clamav-db-0.94.2-1.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamav-0.94.2-1.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamd-0.94.2-1.el5.rf.i386.rpm
rpm -ivH clamav-db-0.94.2-1.el5.rf.i386.rpm
rpm -ivH clamav-0.94.2-1.el5.rf.i386.rpm
rpm -ivH clamd-0.94.2-1.el5.rf.i386.rpm
*samba [#bb9cfc41]
-設定を参考通りにやっていたが,いくつか問題が
-最初はうまく行っていたのだが,しばらくして失敗.
-どうもドメインコントローラとの連携がうまく行ってないように見える.
-ちなみにその時のログ
[2009/01/18 08:37:43, 0] libsmb/nmblib.c:send_udp(793)
Packet send failed to ***.***.**.255(137) ERRNO=Operation not permitted
[2009/01/18 08:37:43, 0] nmbd/nmbd_packets.c:send_netbios_packet(163)
send_netbios_packet: send_packet() to IP ***.***.**.255 port 137 failed
[2009/01/18 08:37:43, 0] nmbd/nmbd_namequery.c:query_name(245)
query_name: Failed to send packet trying to query name DOMAIN_NAME<1d>
-現ネットワークではWindowsドメインコントローラがあるので,それと連携したい
-その連携のための設定がおかしかった.
--旧 smb.conf
security = user
--新 smb.conf
security = server
password server = サーバ名
-これでドメインコントローラの情報で認証ができた
-しかし,これでもまだログにメッセージが出てる.
[2009/01/24 11:26:08, 0] nmbd/nmbd_packets.c:send_netbios_packet(163)
send_netbios_packet: send_packet() to IP ***.***.**.255 port 137 failed
[2009/01/24 11:26:08, 0] nmbd/nmbd_nameregister.c:register_name(512)
register_name: Failed to send packet trying to register name DOMAIN_NAME<1e>
-調べてみると,インタフェースの設定が悪かったっぽい.
interfaces = eth0 lo
-設定を追加したらエラーログがぴたりと止んだ.
-これでOKっぽい
*yumが壊れた! [#sc283551]
-yumによるアップデートが壊れた。
-まず、下記の様なエラーを言われる。
/etc/cron.daily/yum.cron:
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base-source. Please verify its path and try again
-yum-cronを有効にしてたが、何故かリポジトリデータが無いと言われる。
-テンポラリだろ、と思って放っておいたら、事態が悪化した。
/etc/cron.daily/yum.cron:
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File "/usr/share/yum-cli/yummain.py", line 229, in user_main
errcode = main(args)
File "/usr/share/yum-cli/yummain.py", line 104, in main
result, resultmsgs = base.doCommands()
File "/usr/share/yum-cli/cli.py", line 343, in doCommands
return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds)
File "/usr/share/yum-cli/yumcommands.py", line 645, in doCommand
return base.doShell()
File "/usr/share/yum-cli/cli.py", line 284, in doShell
yumshell.script()
File "/usr/share/yum-cli/shell.py", line 78, in script
self.onecmd(line)
File "/usr/lib/python*.*/cmd.py", line 218, in onecmd
return self.default(line)
File "/usr/share/yum-cli/shell.py", line 101, in default
self.base.doCommands()
File "/usr/share/yum-cli/cli.py", line 339, in doCommands
self._getTs(needTsRemove)
File "/usr/lib/python*.*/site-packages/yum/depsolve.py", line 101, in _getTs
self._getTsInfo(remove_only)
File "/usr/lib/python*.*/site-packages/yum/depsolve.py", line 112, in _getTsInfo
pkgSack = self.pkgSack
File "/usr/lib/python*.*/site-packages/yum/__init__.py", line 591, in <lambda>
pkgSack = property(fget=lambda self: self._getSacks(),
File "/usr/lib/python*.*/site-packages/yum/__init__.py", line 446, in _getSacks
self.plugins.run('exclude')
File "/usr/lib/python*.*/site-packages/yum/plugins.py", line 176, in run
func(conduitcls(self, self.base, conf, **kwargs))
File "/usr/lib/yum-plugins/versionlock.py", line 52, in exclude_hook
(n,a,e,v,r) = pkg._pkgtup()
File "/usr/lib/python*.*/site-packages/yum/sqlitesack.py", line 149, in __getattr__
raise KeyError, str(e)
KeyError: 'no such column: _pkgtup'
-原因を調べてたら、どうもCentOSの5.3リリースが元みたい。
-何らかの原因でyumのデータが壊れることはあるみたいで、[[猫ぐらし>http://makisuke.seesaa.net/article/9535977.html]]¬e{nekogurashi-yum-crash:[[猫ぐらし: yumでエラーが出る場合の対処>http://makisuke.seesaa.net/article/9535977.html]], 2005-11-19発表, 2009-04-30閲覧};¬e{nekogurashi-yum-crash-FC4:[[猫ぐらし: [FC4]Yumでエラーが出た場合の対応>http://makisuke.seesaa.net/article/17991716.html]], 2006-05-18発表, 2013-03-27閲覧};さんの情報によればyumのキャッシュやrpmのデータベースが壊れることが原因でもおきるみたいだ。
-んが、それを試すも何してもダメ。
-yum info yum とかしても同じエラーが出る。
-ほとんど、pythonからのエラーだから、何とも言えないが、どうも前回のyum-updateの時に何か悪さをするファイルが残ってしまい、結果としてyum-updateできなくなってるっぽい。
-/var/logのyum.logを見てみると、エラーが変わった日にyumがアップグレードされていた!!
-どうも、yumのアップグレードと、CentOS5.3のリリースが重なったことが原因?みたい
-#厳密には違うかもしれんが
-という訳で、一大決心をしてyumを再インストールすることに!!
$ rpm -e --allmatches yum --test ←試しにyumをrpmで削除してみる
↓依存性の問題を言われたので、全部削除してみた
$ rpm -e --allmatches --test yum yum-cron yum-fastestmirror yum-downloadonly yum-priorities yum-versionlock yum-utils
$ wget ****.rpm ←削除するrpmパッケージたちをあらかじめダウンロード(このとき、念のため5.2からダウンロードした。元の木阿弥?)
↓-testを外して削除
# rpm -e --allmatches yum yum-cron yum-fastestmirror yum-downloadonly yum-priorities yum-versionlock yum-utils
# rpm --rebuilddb ←何となくデータベースを再構築
↓ダウンロードしておいたrpmパッケージをすべてrpmにインストール!
# rpm -i yum-cron-***.rpm yum-downloadonly-***.rpm yum-fastestmirror-***.rpm yum-priorities-***.rpm yum-utils-***.rpm yum-versionlock-***.rpm
# /etc/rc.d/init.d/yum-cron start
# chkconfig yum-cron on
$ chkconfig --list yum-cron
-%%これで一段落%%
-%%問題はこれで明日の晩、本当にアップデートが行われるか、だ。(執筆時、アップデート待ち)%%
-結局同じエラーメールが表示されて何もアップデートされなかった.
-仕方ないので,同じ作業を繰り返し,今度は
sudo yum update
-を実行して無事アップデートされた.
-どうも,yumが最初にupdateされ,そのとき何やら問題が起きて,何かロック的なものが発生し,以降全てのアップデートがキャンセルされるっぽい.
-なぞだ.しかしyumの再インストールで何とかなってよかった.それだけは良かった.
*Logwatch系の問題 (something related to logwatch) [#ma39975c]
-必死に色々scriptsを修正してきたんだが,殆どの問題はlogwatchがアップデートされてないことに起因するものだった.
-もう馬鹿らしくなった.読むのやめやめ.
**CentOSで"named[****]: network unreachable resolving 'hogehoge': *::*:*:*:53"なログが出つづける [#g44cf132]
-[[ブログpoohSec参照>http://pooh.gr.jp/?p=6396]]¬e{bind-poohsec:[[CentOS 5.4 named network unreachable resolving - poohSec>http://pooh.gr.jp/?p=6396]], 2009-11-01発表, 2013-03-27閲覧};
-CentOS 5.3 から 5.4へのアップデートで発生した模様
-IPV6を無効にする方法がbind内で変わったための模様
# vi /etc/sysconfig/named
+OPTIONS="-4"
-上記1行を/etc/sysconfig/namedに追記してbindを再起動すればよい
**LogwatchのNamed Beginに**Unmatched Entries**が大量に出る [#a24a3b66]
-/usr/share/logwatch/scripts/services/named の 各箇所
-DNSをDHCPによる更新を有効にした状態で発生
--------------------- Named Begin ------------------------
**Unmatched Entries**
client ***.***.***.*** view hogehoge: update '***.***.***.***.in-addr.arpa/IN' denied: 24 Time(s)
client ***.***.***.*** view hogehoge: update '***.***.***.ac.jp/IN' denied: 75 Time(s)
connection refused resolving '****.****.com/A/IN': ***.***.***.***#53: 1 Time(s)
connection refused resolving '****.****.com/A/IN': ***.***.***.***#53: 1 Time(s)
---------------------- Named End -------------------------
-どうも,named.confでview を使ってたのが原因のようで,ログに吐かれるフォーマットが違ったっぽい.
-以下のように置き換えた
#geshi(perl,number,start=157){{
# } elsif ( ($Host, $Zone) = ( $ThisLine =~ /client ([^\#]+)#[^\:]+: zone transfer '(.+)' denied/ ) ) {
+ } elsif ( ($Host, $Zone) = ( $ThisLine =~ /client ([^\#]+)#[^\:]+: [^\:]+: zone transfer '(.+)' denied/ ) ) {
}}
#geshi(perl,number,start=188){{
# } elsif ( ($Zone,$Message) = ( $ThisLine =~ /client [^:]+: [^:]+: updating zone '([^']+)': (.*)$/ ) ) {
+ } elsif ( ($Zone,$Message) = ( $ThisLine =~ /client [^\#]+#[^\:]+: [^\:]+: updating zone '([^\:]+)': (.*)$/ ) ) {
}}
#geshi(perl,number,start=199){{
# } elsif ( ($Rhost, $Ldom) = ($ThisLine =~ /client ([\d\.]+)#\d+: update '(.*)' denied/)) {
+ } elsif ( ($Rhost, $Ldom) = ($ThisLine =~ /client ([\d\.]+)#\d+: [^\:]+: update '(.*)' denied/)) {
}}
-Logwatch側では''C''onnection refusedだったのが,namedのmessagesでは''c''onnection refusedと,違いがあった
#geshi(perl,number,start=118){{
# ($ThisLine =~ /Connection refused/) or
+ ($ThisLine =~ /connection refused/) or
}}
**postfix に大量のUnmatched Entries [#k3c0813b]
-logwatchをamavisに対応させた.
-postfixにamavisを噛ませると,postfixのログが変化するので,大量のUnmatched Entriesがlogwatchに現れる.
-%%http://www.mikecappella.com/logwatch/ から新しいlogwatchをダウンロード%%
-アドレスがhttp://logreporters.sourceforge.net/ ¬e{logreport-sourceforge:[[Logreporters: Postfix and Amavis Log Reporters>http://logreporters.sourceforge.net/]], 2013-03-27閲覧};に変わった.
-下記は古いアドレスのものなので,適当に読み替えるべし
-postfix用とamavisd用の2つ
***postfix-logwatch [#rb3a2c59]
-まずはmake
cd /tmp/
wget http://www.mikecappella.com/logwatch/release/postfix-logwatch-1.37.08.tgz
tar zxvf postfix-logwatch-1.37.08.tgz
cd postfix-logwatch-1.37.08
sudo make install-standalone // install とか makeとかあったんだけれど,とりあえずinstall-standaloneを実行
-設定ファイルと実行ファイルが以下のようにできる
--/usr/local/etc/postfix-logwatch.conf に新設定ファイル
--/usr/local/bin/postfix-logwatch に新実行ファイル
-現logwatchの退避
cd /usr/share/logwatch/default.conf/services/
mv postfix.conf postfix.conf.20090309
cd /usr/share/logwatch/scripts/services/
sudo mv postfix postfix.20090309
-新logwatchと置き換え
cd /usr/local/etc/
sudo mv postfix-logwatch.conf /usr/share/logwatch/default.conf/services/postfix.conf
sudo chown root:root /usr/share/logwatch/default.conf/services/postfix.conf
sudo chmod 644 /usr/share/logwatch/default.conf/services/postfix.conf
cd /usr/local/bin/
sudo mv postfix-logwatch /usr/share/logwatch/scripts/services/postfix
sudo chown root:root /usr/share/logwatch/scripts/services/postfix
sudo chmod 755 /usr/share/logwatch/scripts/services/postfix
***amavis-logwatch [#r75dd903]
-まずはmake
wget http://www.mikecappella.com/logwatch/release/amavis-logwatch-1.49.09.tgz
tar zxvf amavis-logwatch-1.49.09.tgz
cd amavis-logwatch-1.49.09
make install-standalone
-設定ファイルと実行ファイルが以下のようにできる
--/usr/local/etc/amavis-logwatch.conf に新設定ファイル
--/usr/local/bin/amavis-logwatch に新実行ファイル
-現logwatchの退避
cd /usr/share/logwatch/default.conf/services/
sudo mv amavis.conf amavis.conf.20090309
cd /usr/share/logwatch/scripts/services
mv amavis amavis.20090309
-新logwatchと置き換え
cd /usr/local/etc/
sudo mv amavis-logwatch.conf /usr/share/logwatch/default.conf/services/amavis.conf
sudo chown root:root /usr/share/logwatch/default.conf/services/amavis.conf
sudo chmod 644 /usr/share/logwatch/default.conf/services/amavis.conf
cd /usr/local/bin/
sudo mv amavis-logwatch /usr/share/logwatch/scripts/services/amavis
sudo chown root:root /usr/share/logwatch/scripts/services/amavis
sudo chmod 755 /usr/share/logwatch/scripts/services/amavis
***編集 [#p54fcc18]
-実行したら
--------------------- Amavisd-new Begin ------------------------
"-T" is on the #! line, it must also be used on the command line at /usr/share/logwatch/scripts/services/amavis line 1.
---------------------- Amavisd-new End -------------------------
-なるメッセージが現れた。
-postfixも同じく
-調べると、/usr/share/logwatch/scripts/services/以下のスクリプトの1行目に
#! /bin/perl -T
-って1行があったのでそれぞれ削除
-logwatchが縮小された.
**LogwatchのSambaに日本語のエラーメッセージ [#qaca6182]
-「通信端点が接続されていません」というエラーメッセージがUnmatched Entriesに出力される
--本来は"Transport endpoint is not connected"なのだが,日本語環境下では上記のように日本語で出力される.
--そのため,Logwatchのスクリプトに引っかからず,Unmatched Entriesになる
--解決策:以下のメッセージをscripts/services/sambaの68行目に追加
#geshi(perl,number,start=66){{
($ThisLine =~ /smbd\/server.c:open_sockets_smbd\(\d+\) Reloading services after SIGHUP/) or
($ThisLine =~ /lib\/util_sock.c:get_peer_addr\(\d+\) getpeername failed. Error was Transport endpoint is not connected/) or
+ ($ThisLine =~ /lib\/util_sock.c:get_peer_addr\(\d+\) getpeername failed. Error was/) or
($ThisLine =~ /add_domain_logon_names/) or
($ThisLine =~ /become_domain_master/) or
}}
--本来の英語のメッセージは元のスクリプトでは無視されてるので,日本語もそれに準拠
--文字コードの問題か,日本語がマッチしないので,英語の部分だけでマッチ部分を記述
-「接続が相手からリセットされました」というコメントが出ることもある
--これは本来sambaのバグのようで,英語ではSocketReadErrorとしてカウントしている
--何かの仕様変更か,lib/util_sock.cが436という返り値を返す代わりに540という返り値を返している(言語の影響?)ので,scripts/services/sambaの134行目に以下を追記
#geshi(perl,number,start=131){{
} elsif ( ( $ThisLine =~ /lib\/util_sock.c:read_data\(436\)/ ) ) {
# This is due to a nasty bug in samba which causes it to drop connections :-(
$SocketReadError++;
+ } elsif ( ( $ThisLine =~ /lib\/util_sock.c:read_data\(540\)/ ) ) {
+ # This is due to a nasty bug in samba which causes it to drop connections :-(
+ $SocketReadError++;
} elsif (
}}
--同様に,write_dataでもエラーを吐いていた.
--従来のlogwatchスクリプトにはwrite_socket_dataとかwrite_socketという関数(?)で実装されていたのが,名前が変更になった模様.
--なので,139行目に以下を追記
#geshi(perl,number,start=136){{
} elsif (
( $ThisLine =~ /lib\/util_sock.c:write_socket\(\d+\) write_socket: Error writing \d bytes to socket/ ) or
( $ThisLine =~ /lib\/util_sock.c:write_socket_data\(\d+\) write_socket_data: write failure./ ) or
+ ( $ThisLine =~ /lib\/util_sock.c:write_data\(\d+\) write_data: write failure/ ) or
( $ThisLine =~ /lib\/util_sock.c:send_smb\(\d+\) Error writing \d bytes to client. / )
) {
}}
**amavis でエラー [#a91cb6ad]
-amavis と clamdの組み合わせにおいて,下記エラーがlogwatchに毎日出現
--**Unmatched Entries**
--(!!)WARN: all primary virus scanners failed, considering backups: * Time(s)
--(!!)ClamAV-clamd av-scanner FAILED: CODE(0x9b37d3c) Too many retries to talk to /var/run/clamav/clamd.sock (Can't connect to UNIX socket /var/run/clamav/clamd.sock: \343\201\235\343\201\256\343\202\210\343\201\206\343\201\252\343\203\225\343\202\241\343\202\244\343\203\253\343\202\204\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\343\201\257\343\201\202\343\202\212\343\201\276\343\201\233\343\202\223) at (eval **) line **. at (eval **) line ***.: * Time(s)
--(!)ClamAV-clamd: Can't connect to UNIX socket /var/run/clamav/clamd.sock: \343\201\235\343\201\256\343\202\210\343\201\206\343\201\252\343\203\225\343\202\241\343\202\244\343\203\253\343\202\204\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\343\201\257\343\201\202\343\202\212\343\201\276\343\201\233\343\202\223, retrying (*): * Time(s)
--(!)run_av (ClamAV-clamd, built-in i/f): Too many retries to talk to /var/run/clamav/clamd.sock (Can't connect to UNIX socket /var/run/clamav/clamd.sock: \343\201\235\343\201\256\343\202\210\343\201\206\343\201\252\343\203\225\343\202\241\343\202\244\343\203\253\343\202\204\343\203\207\343\202\243\343\203\254\343\202\257\343\203\210\343\203\252\343\201\257\343\201\202\343\202\212\343\201\276\343\201\233\343\202\223) at (eval *) line ***.: * Time(s)
-\と数字の組み合わせの羅列は「そのようなファイルやディレクトリはありません」と書いてあるのが,文字化け?したもの.
-日本語をUTF-8で表示し,各文字のバイトを8進数で表して\で区切ったもの
-要は,ソケット通信に失敗していたことを表すエラー
-今回の現象ではclamdのソケットの場所を変更していたが為に発生した
-clamd.conf でデフォルトのソケットの位置は
#geshi(perl,number,start=72){{
LocalSocket /tmp/clamd.socket
}}
-だが,これを下記のように変更していた.
#geshi(perl,number,start=72){{
LocalSocket /var/run/clamav/clamd.sock
}}
-これが,clamdのアップデートで初期設定に書き戻されていた.
-再び編集を書き換えて再起動
# /etc/rc.d/init.d/clamd restart
*CentOSのログに dumping master file: tmp-hogehoge: open: permission denied というエラーが出つづける [#dd7cc4b2]
-症状:上記のメッセージがLogに現れつづける
-原因:bindがupdateされていた
--本来tmp-hogehogeが保存されるディレクトリはowner=named,group=namedだった
--updateされたときに,当該ディレクトリのowner=rootに変わっていた
--繰り返しメッセージが現れたのは,動的にDNSを更新していたから
-対処方法:
--原始的だけれど,当該ディレクトリの所有者をnamedに戻す
# chown named /var/some/directory/
--何でrootになったのかは分からないけれど,bindはnamedと言うユーザ,グループで動かすのが推奨されている.