<   2009年 12月 ( 6 )   > この月の画像一覧
ICH9RでOSインストール後にRAIDにするとハマる
今まで、ICH9Rを非RAID環境のAHCIで使ってました。

で、今回ちょとICH9RでのRAIDを試してみようかと思ったわけです。
(ICH9RでRAIDにしても、AHCIは有効になっているっぽいので。。)

すでに、OS(Windows Server2008)はインストール済みです。
そこに2台HDDを追加してこれをRAIDとして使うことにしました。(システムドライブはRAIDしません)

なお、マザーボードは GIGABYTE の GA-G33-DS3R です。

まず普通にBIOSで "SATA RAID/AHCI Mode" で "RAID" にしてみました。
するとWindowsの起動に失敗し再起動を繰り返すようになります。

どうやらRAIDドライバが読み込まれてないようです。

とりあえずAHCIに戻して、RAID ドライバ含まれる、Intel Matrix Storage Console をインストールしました。
それでも駄目だったので、OSが入っているHDDを GIGABYTE SATA2 のほうにつけて起動します。(残り2台はICH9R RAIDにつなぐ)

この状態でIntel Matrix Storage Consoleを使ってRAIDボリュームを作成してからシステムドライブを ICH9R のほうにつけ替えたらちゃんと起動するようになりました。

参考:【こたつとっぷ】データドライブをRAID1に 別の方法が載ってました。
[PR]
by jehoshaphat | 2009-12-17 23:37 | 豆知識 | Trackback | Comments(0)
(Linux)CentOS5.4にMySQL5.1とphpMyAdmin(と結果的にPHP5.2)を入れてみた
CentOS5.4にMySQL5.1とphpMyAdmin3を入れてみることにしました。

MySQL5.1
CentOSのリポジトリはMySQL5.0までしか無いっぽいので、yumでは管理できなさそうです。
ということで、MySQL公式サイトから rpm パッケージをダウンロードしてインストールすることにしました。

まず、yum を使ってMySQL5.0を削除し、ダウンロードした5.1のrpmをインストールします。

yum remove mysql
rpm -ihv MySQL-client-community-5.1.41-0.rhel5.i386.rpm
rpm -ihv MySQL-server-community-5.1.41-0.rhel5.i386.rpm
rpm -ihv MySQL-shared-community-5.1.41-0.rhel5.i386.rpm


インストール後設定ファイルの my.cnf を探してみたんですが、どうも見当たりません。
ということで、 /etc/my.cnf を手動で作成しました。
my.cnf の中身はこんな感じにしました。(my.cnfのオプションについてはMySQL 5.1 リファレンスマニュアル : 3.3.2 オプションファイルの使用に詳しく書かれてます)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306
default-character-set=utf8
skip-character-set-client-handshake



PHP5.2
ここで、phpMyAdmin3.2を配備してアクセスしてみたところ、PHP5.2を入れろって怒られます。
rpm -qa で調べると CentOS 5.4 にインストールされているのは PHP5.1 系なんですね。
CentOS公式のリポジトリでもまだ5.1系しかでてません。

ということで、PHP5.2を入れることに。。
PHP公式サイトにあるのはWindowsバイナリとソースだけです。ソースをコンパイルしてやるのは管理上面倒なので今回はやめときます。(以前コンパイルしてやったことがありますが、PHPのコンパイルって手順とアップデートが面倒なんですよね。。。)

で、ググってるとリポジトリを変更するとyumでPHP5.2パッケージを入れれることがわかりました。
(CentOS 5系でyumを使ってPHPを5.2.x系へアップデートする方法>> OpenMediaLaboratoryを参考にさせてもらいました。)


まず、RPM-GPG-KEY をインストールします。

# rpm -import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

そして、/etc/yum.repos.d/utterramblings.repo 作成しファイルの中身を下記のようにします。

[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

これで、yum を使ってPHP5.2にアップデートできます。
インストールが終わったら上記ファイルの enabled=0 にしておくと安全です。


でもこれだけだと phpMyAdmin にアクセスすると下記のようなエラーとなります。
mysql 拡張をロードできません。PHP の設定を確認してください

標準のリポジトリから下記コマンドで php-mysql をインストールしようとしてもダメって怒られます。

yum install php-mysql

標準のリポジトリのはMySQL5.0用なのでダメっぽいですね。

MySQL 5.1 on Cent OS 5.3 - K blogにどんぴしゃな答えがあったのでこちらを参考にさせてもらいました。
まず、上記で設定した Jason’s Utter Ramblings リポジトリを有効(enabled=1)にします。
そして rpm ファイルだけをダウンロードできるように yum-utils をインストール。

# yum install yum-utils
# yumdownloader php-mysql

この段階で /etc/yum.repos.dにphp-mysql-5.2.11-jason.1.i386.rpmダウンロードされるので rpm -ihv でインストールします。

あとは上記のブログにあるようにやっていけば(依存パッケージインストールし、ibmysqlclient.so.15のインストール)無事に phpMyAdmin から使えるようになりました。
ただライブラリファイルを抜き出すなどかなり強引な手法なのであんまりお勧めはできないかもしれませんね。

参考:
yum - パソコンが無いと生きていけない人の雑記
Plesk卒業日記 phpMyAdmin3.1.3のインストール
[PR]
by jehoshaphat | 2009-12-16 00:24 | Linux | Trackback | Comments(0)
(Linux)CentOSでちょっとトリッキーなNATルータを構築してみた
現在の自宅LANに他所のサーバを一時的におくことになりました。
ただ、現在のLAN内には自宅サーバをおいてるので、インターネット←→自宅LANの間は構成は変えたくはありません。
また、他所サーバには自宅LAN内のPCにはアクセスできないようにします。

ということで、LANにルータをおいて、その先に他所サーバをおくことにしました。
ルータは CentOS を使って構築し、NAT の機能を有することにします。


構成図とはしては下記のような感じです。(元からある自宅LANが"ネットワークA"、今回追加したサーバ機のあるLANを"ネットワークB"としています。そして他所サーバは"サーバ機"として表記)
e0091163_23564459.jpg

かなり、トリッキーなネットワークになっています。(普通はこんなことせずに、DMZ領域作るのが普通なんですが、なにせ自宅でリソースと時間がなかったので、この方法になりました。。。)
ネットワークカードを二つ用意し、片方を既存LAN側、もう片方を他所サーバをおくLANにします。

さて、LinuxでのNAT構築ですが、パケットフィルタに用いる iptables を使うようです。
ただ、ネットでNAT構築をググっても、NAPT(IPマスカレード)の構築方法は多いのですが、純粋なNAT(IPアドレスが1対1のもの)に関する情報は少なめでした。 (IPマスカレード使うときの方法については、@IT:natテーブルを利用したLinuxルータの作成(2/6)とかで解説されています。)
しかし、なんとか見つけたのが雑記 - iptablesによるNATです。

ということで、手順は下記のような感じになります。

1. IPv4 フォワーディングを有効にする
IP Fowarding を有効にすると、複数のインターフェイス間でパケットの転送ができるようです。
/etc/sysctl.conf という設定ファイルを下記のように変更します。

net.ipv4.ip_forward=0
↓以下に修正
net.ipv4.ip_forward=1


そして、設定を反映するためにネットワークを再起動します。

# service network restart

(# sysctl -w net.ipv4.ip_forward=1 というコマンドでもIPフォワーディング有効にできるようですが、これだと再起動後には無効になるようです。)

現在、IPフォワーディングが有効になっているかどうかは、下記コマンドを叩き、1 が返ってくれば有効みたいですね。

cat /proc/sys/net/ipv4/ip_forward



2. 仮想インターフェイスを追加
下記コマンドにてネットワークA側のネットワークカードに仮想インターフェイスを追加します。

# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
ここでIPを変更かつ、 DEVICE=eth0 を DEVICE=eth0:1 とし、設定ファイルを保存。
# ifup eth0:1
# ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 00:15:5D:00:64:0B
inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

参考:仮想インターフェースの作成
(最初は現在デフォルトゲートウェイにしているCTU(ルータ)にスタティックルーティングを設定して、ルータとなっているCentOSにパケットを回す予定だったんですが、CTUがWAN側にしかルーティングの設定ができないので仮想インターフェイスを追加します。)


3. iptables にNATの設定追加
iptablesのルールにNATの設定を追加します。iptablesのPREROUTINGチェインとPOSTROUTINGチェインを使います。
このあたりの話は、@IT:Linuxで作るファイアウォール[NAT設定編]その次のページが非常に参考になります。

たとえば、こんな感じです。

#NATの設定リセット
iptables -t nat -F
#他所サーバ機から外に出ていくパケットを仮想インターフェイスのIPにアドレス変換
iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 192.168.0.11
#仮想インターフェイスに入ってくるパケットを他所サーバ機のIPアドレスに変換(tcpとicmpのみ)(サーバのため)
iptables -t nat -A PREROUTING -d 192.168.0.11 -p tcp -j DNAT --to 192.168.1.2
iptables -t nat -A PREROUTING -d 192.168.0.11 -p icmp -j DNAT --to 192.168.1.2


また、他所サーバ機からネットワークA内のPCへのTCPアクセス接続を拒否する設定が要ります。
FORWARDチェインで設定できます。(参考:@IT:natテーブルを利用したLinuxルータの作成)
たとえば、こんな感じです。

#基本ポリシーとして、フォワーディング拒否
iptables -P FORWARD DROP
#ネットワークBからネットワークA内へのTCP新規接続拒否
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m state --state NEW -s $any -d 192.168.0.0/24 -j DROP
#ネットワークBからネットワークA内への接続許可(上記TCP新規セッション以外のものが許可される)
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -j ACCEPT
#ネットワークAからネットワークBへの接続許可
iptables -A FORWARD -i eth0 -o eth1 -d 192.168.1.0/24 -j ACCEPT
#新規セッション以外の通信は許可
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

とりえず、ネットワークBからネットワークAへの接続はTCPのみ遮断することとしました。
ただ、すべてのパケットを遮断すると、ネットワークAからのメンテやサーバの参照ができないので新規接続セッションのみ遮断することとします。(もっときれいな方法があるのかもしれませんが、これくらいしか思いつきませんでした。)



最終的に作成した iptables の設定用シェルスクリプトは下記のような感じとなりました。
このシェルスクリプトを走らせて、#service iptables save , #service iptables restart とすれば設定が適用されます。

#!/bin/sh
# Router Version
trusthost='192.168.0.0/24'
myhost='192.168.0.10'
any='0.0.0.0/0'
internal_ip='192.168.1.0/24'
my_internal_host='192.168.1.1'
my_nat_ip='192.168.0.11'

echo 1 > /proc/sys/net/ipv4/ip_forward

##############
#Flush & Reset
##############
iptables -F
iptables -t nat -F
iptables -X
##############
#Deafult Rule
##############
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#########################
#フォワーディングのルール
#########################
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m state --state NEW -s $any -d $trusthost -j DROP
iptables -A FORWARD -i eth1 -o eth0 -s $internal_ip -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d $internal_ip -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


#########################
#ルーティングのルール
#########################
iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to $my_nat_ip
iptables -t nat -A PREROUTING -d $my_nat_ip -p tcp -j DNAT --to 192.168.1.2
iptables -t nat -A PREROUTING -d $my_nat_ip -p icmp -j DNAT --to 192.168.1.2

#########
#logging
#########
iptables -N LOGGING
iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit
iptables -A LOGGING -j DROP
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING

[PR]
by jehoshaphat | 2009-12-15 23:57 | ネットワーク | Trackback | Comments(0)
Microsoft Security Essentialsインストール時にエラー
無料で使えるアンチウイルスソフト Microsoft Security Essentials をXPに入れようとしたら、0x80070643 というエラーがでて、インストールできませんでした。

イベントビューアをみると下記のようなメッセージが。。。

...次の情報はイベントの一部です:
mssecurityessentials, setup.exe, 1.01611.0, 0x80070643,
getaminstallaction - microsoft malware protection requires
windows installer 3.1 or later., morrobootstraper__cinstallflow__internalrun, 0, NIL, NIL, NIL, NIL.

Windows Installerが3.1以降じゃないとダメだとか言っています。

確かに、"ファイル名を指定して実行"から msiexec を実行してみると現在の Windows Installer は3.0になっています。

Windows Update で Windows Installerを3.1にしてから再度 Microsoft Security Essentials をインストールするとうまくいきました。


まぁ今回はイベントビューアみたからわかりましたけど、詳しくない人だったら多分わかんないでしょうね。。。
もうちょい原因わかりやすくしてほしいですね。。
[PR]
by jehoshaphat | 2009-12-13 23:55 | 豆知識 | Trackback | Comments(0)
EFSを使ったらどれだけパフォーマンスに影響するのか調査してみた
新しいHDDをかったので重要なドキュメント類は暗号化して保存しようと考えています。
最初パフォーマンスの影響も余り少なく強度な暗号化が期待できる BitLocker を使おうと思っていたんですが、これVista以降じゃないとだめなんですよね。(パフォーマンスについてはASCII.jp:Vistaの暗号化機能 BitLockerを本気で試してみた |ここが変わったWindows Vista 100連発!参照)
現在メインPCはWindows7とXPのデュアルぶーとで両方から重要ファイルにアクセスしたいので、BitLockerは断念しました。

次に思いついたのがNTFSファイルシステムで以前のOSから使える EFS です。
EFSだとBitLockerのようにドライブ単位ではなく、ファイルフォルダ単位で暗号ができるのも特徴ですね。

さて、このEFSですが、以前にパフォーマンスがよろしくないという記事を読んだことがあります。
それで、実際自身のPCで測定してみました。

測定環境は下記のとおりです。
CPU:Pentium4 530J(3.0GHz)
Memory:1.5GB
HDD:Hitachi HDT725032VLA360

以前の記事でも書きましたが、3流PGのPCはWindows7で動かすとかなり重いです。
それを踏まえ WindowsXP と Windows7 の両方でテストしてみました。

測定方法ですが、小サイズのファイル1000個(合計24MB)と、700MBのファイルにおいてそれぞれ、通常のノーマルコピー、非EFS領域からEFS領域へのコピー、非EFSファイルをプロパティから暗号化、EFSファイルのコピー、EFSファイルから非EFSファイルへの暗号化解除のテストを行います。なお、コピーについてはWindowsエクスプローラとフリーソフトのFireFileCopyの両方で測定してみました。

結果はこんな感じとなりました。
e0091163_15334849.jpg


FireFileCopyをのぞいた結果をグラフにしたものが下記です。
e0091163_15341436.jpg


やはりEFS化するとかなりパフォーマンスが悪くなるようです。
プロパティから暗号化や暗号化解除のパフォーマンスが悪いのは、この時いったん一時ファイル(efs0.tmp)を作りながら処理してるからのようですね。この一時ファイルですが、削除済みの平文データが復元される場合があるによると、一時ファイルから暗号からされたファイルの平分データが読み取れてしまうようです。
パフォーマンスやセキュリティを考えると、EFS化するときは、プロパティからするのではなく、EFS有効のフォルダにコピーするという運用がよさそうですね。
また、3流PGのPCではやっぱりWindows7のほうがほとんどで遅い結果になっていますね。
小さいファイルで数が多い場合の暗号化操作はかなりパフォーマンスの影響度も高いこともわかります。

さて、予想以上にパフォーマンスへの影響が高いEFSですが、暗号化するべきか否か悩みどころですね。。。。
[PR]
by jehoshaphat | 2009-12-12 15:34 | 豆知識 | Trackback | Comments(0)
Apache2.2でダイジェスト認証
(よーやく仕事見つかったんですが、なれない業務に疲れ気味の3流PGです。。。。)

さて、Apache2.2で運用するWEBページに認証をかけることになったんですが、ベーシック認証だと暗号化されてないんで、DIGEST認証を使うことにしました。

Apache2.0の時代とちょっと変わってるところがあってハマりましたね。

まずApache上のアカウントを作成します。


htdigest -c /etc/httpd/.htpasswd_dig realm username

(-c は初めてパスワードファイルを作る時のみ指定します。)

後はApache側の設定ですが、.htaccessに各方法と、httpd.conf で<Directory "/var/www/html/member"></Directory>に入れる方法があります。
まぁどっちでも書式はほぼ一緒なんですが、今回は.htaccessを使うことにしました。


AuthType Digest
AuthName realm
AuthUserFile /etc/httpd/.htpasswd_dig
Require valid-user

ハマったのは AuthUserFile です。Apache2.0だとここは AuthDigestFile だったんですよね。
あと、Require の設定はこんな感じになります。

Require user hoge ←この場合hogeしか入れない
Require user hoge aaa ←この場合hogeとaaaしか入れない
Require valid-user ←全ユーザが入れる


参考:
@IT:Apacheでユーザー認証を行うには(Digest認証編) これはApache2.0の設定なのでこのままApache2.2に適用すると動きません。
Apacheで認証をしたい。 これもApache2.0時の設定です。
floatingdays: Apache2.2のDigest認証設定
[PR]
by jehoshaphat | 2009-12-01 22:43 | サーバがらみ | Trackback | Comments(0)