skucky.com
はじめにお断りしておきますが、自宅サーバー構築メモと題を掲げているものの、正確にはサーバー復旧メモ(自分用備忘録)と言った方が良く、人様がご覧になって参考にできるような物ではないということを申し上げておきます。
当ページは、小生の諸事情により以前のサーバー環境がバックアップも含めて全てオ釈迦になり、一から環境構築する羽目となった時のメモであり、自分が読んでわかれば良いレベルで記述してあるため、参考にならないと思われます。
DebianのHPから「CD ISO イメージ」のリンクをたどり、「最小のブータブルCDのイメージ」を選択する。理由はイメージを落す時間が短いから。何故かスウェーデンのサイト?からISOなイメージをダウンロードすることになっており、アーキテクチャごとにイメージが違うので「i386」を選ぶ。ちなみにDebianのバージョンは3.1。
ISOイメージをダウンロード後、適当なソフトでイメージをCD-Rに焼けばDebianインストールCDの出来上がり。
実際のインストールはDebianにしては意外と簡単だったので、特にメモしておくような事は無い。強いて言えば、インストールパッケージの選択で、デスクトップ環境は選ばなかった事くらい。サーバーとして利用するならKDEとかGNOMEとか要らないし、経験上こいつらが一番パッケージ数も多くダウンロードとインストールがうっとうしい。
インストール時はNICが自動認識され、ネットワーク関連の設定ができないまま勝手にインストールが進む関係で、そのままインストールが終了し、システムを立ち上げるとデフォルトでDHCPが有効になっている。サーバーとして利用するならば静的アドレスとしてIPアドレスを割り当てる必要があるということで、設定するファイルは/etc/network/interfacesである。
# | |
# 〜中略〜 | |
# | |
#以下をコメント | |
#iface eth0 inet dhcp | |
#以下の設定を追加 | |
iface eth0 inet static | |
address | 192.168.1.101 |
netmask | 255.255.255.0 |
network | 192.168.1.0 |
broadcast | 192.168.1.255 |
gateway | 192.168.1.1 |
参考記事:Linux World 2002年12月号
設定が終わったら、以下のコマンドでNICを立ち上げ直しておく(NICがeth0で認識されている場合)。
quark:~# ifconfig eth0 down |
quark:~# ifconfig eth0 up |
設定ファイルは/etc/hosts。以下の通り設定する。
# | ||
# 〜中略〜 | ||
# | ||
127.0.0.1 | localhost.localdomain | localhost |
192.168.1.11 | neutrino | neutrino.skucky.com |
192.168.1.12 | lepton | lepton.skucky.com |
192.168.1.101 | quark | quark.skucky.com |
# | ||
# 〜中略〜 | ||
# |
普段使用しているクライアントからサーバの様子を見たり、ファイルを転送する時に基本となるサービスがtelnetだったりftpだったりと言う事でこれらのサービスをインストールする(デフォルトではデーモンが入っていない)。
インストールは以下のコマンドを実行すればOK。
quark:~# apt-get install ftpd |
quark:~# apt-get install telnetd |
aptでインストールした場合、インストール後も特に設定ファイルの変更も必要は無く、自動的に/etc/inetd.confも書き換えられている。
# | ||||||
# 〜中略〜 | ||||||
# | ||||||
telnet | stream | tcp | nowait | telnetd.telnetd | /usr/sbin/tcpd | /usr/sbin/in.telnetd |
ftp | stream | tcp | nowait | root | /usr/sbin/tcpd | /usr/sbin/in.ftpd |
# | ||||||
# 〜中略〜 | ||||||
# |
インターネットへの接続も含めネットワーク周りの環境ができたら、まずはネームサーバーを最優先に立ち上げる。さもないと、メールサーバもWEBサーバも自前のサーバで立ち上げられない。
BINDの設定ファイルは/etc/bind/named.conf(BINDのバージョンは9.2)。同ファイルにはデフォルトである程度の記述がされているが、さすがにそのままでは使えない。具体的な修正箇所は下記に示す/etc/bind/named.confの内容に「以下を追加」というコメントがある次行から空白行までの設定を追記した。特にコメントの無い設定はデフォルトのままである。
設定内容について簡単に言えば、LAN内と外部(インターネット)用とに分けてskucky.comドメインにあるホスト名の名前解決を行うために元となる設定を行ったといったところ。実際のIPとホスト名を関連付けするには、後述のゾーンファイルで設定する。
// |
// named.confの全内容(コメント箇所は除く) |
// |
//以下を追加 |
acl internal { |
127.0.0.1; |
192.168.1.0/24; |
}; |
include "/etc/bind/named.conf.options"; |
//以下を追加 |
view "inside" { |
match-clients { internal; }; |
recursion yes; |
zone "." { |
type hint; |
file "/etc/bind/db.root"; |
}; |
zone "localhost" { |
type master; |
file "/etc/bind/db.local"; |
}; |
zone "127.in-addr.arpa" { |
type master; |
file "/etc/bind/db.127"; |
}; |
zone "0.in-addr.arpa" { |
type master; |
file "/etc/bind/db.0"; |
}; |
zone "255.in-addr.arpa" { |
type master; |
file "/etc/bind/db.255"; |
}; |
//以下を追加 |
zone "1.168.192.in-addr.arpa" { |
type master; |
file "/etc/bind/db.lan"; |
}; |
//以下を追加 |
zone "skucky.com" { |
type master; |
file "/etc/bind/db.192"; |
}; |
}; |
//以下を追加 |
view "outside" { |
match-clients { any; }; |
allow-query { any; }; |
recursion no; |
zone "skucky.com" { |
type master; |
allow-transfer { internal; 69.67.108.10; }; |
file "/etc/bind/db.skucky.com"; |
notify yes; |
}; |
}; |
include "/etc/bind/named.conf.local"; |
なお、上記ファイルからincludeされている/etc/bind/named.conf.optionsとか言うファイルも以下のように設定しておく(わざわざファイルを分ける程の事でもないけれど)。
options { |
directory "/etc/bind"; |
allow-query { internal; }; |
allow-recursion { internal; }; |
}; |
次に、ゾーンファイルを作成する。ここで作成したゾーンファイルはLAN内で名前解決(正引き・逆引き両方)に使うファイルと外向け用(正引き用のみ)に使うファイルの3種類(named.confで設定しているその他のゾーンファイルはデフォルトのままで問題無し)。それぞれの設定内容は以下の通り。
・/etc/bind/db.lan(LAN内逆引き用ゾーンファイル)
$TTL 86400 | |||
@ | IN | SOA | ns1.skucky.com. root.skucky.com. ( |
2005092903 | ; Serial | ||
604800 | ; Refresh | ||
86400 | ; Retry | ||
2419200 | ; Expire | ||
604800 ) | ; Negative Cache TTL | ||
IN | NS | ns1.skucky.com. | |
IN | MX 10 | mail.skucky.com. | |
101 | IN | PTR | quark.skucky.com. |
11 | IN | PTR | neutrino.skucky.com. |
12 | IN | PTR | lepton.skucky.com. |
・/etc/bind/db.192(LAN内正引き用ゾーンファイル)
$TTL 86400 | |||
@ | IN | SOA | ns1.skucky.com. root.skucky.com. ( |
2005092903 | ; Serial | ||
604800 | ; Refresh | ||
86400 | ; Retry | ||
2419200 | ; Expire | ||
86400 ) | ; Negative Cache TTL | ||
IN | A | 192.168.1.101 | |
IN | NS | ns1.skucky.com. | |
IN | MX 10 | mail.skucky.com. | |
ns1 | IN | A | 192.168.1.101 |
www | IN | CNAME | ns1 |
IN | CNAME | ns1 | |
quark | IN | CNAME | ns1 |
neutrino | IN | A | 192.168.1.11 |
lepton | IN | A | 192.168.1.12 |
pop | IN | CNAME | |
smtp | IN | CNAME |
・/etc/bind/db.skucky.com(外向け正引き用ゾーンファイル)
$TTL 86400 | |||
@ | IN | SOA | ns1.skucky.com. root.skucky.com. ( |
2005092900 | ; Serial | ||
604800 | ; Refresh | ||
86400 | ; Retry | ||
2419200 | ; Expire | ||
86400 ) | ; Negative Cache TTL | ||
IN | A | 219.117.212.112 | |
IN | NS | ns1.skucky.com. | |
IN | NS | ns2.granitecanyon.com. | |
IN | MX 10 | mail.skucky.com. | |
ns1 | IN | A | 219.117.212.112 |
www | IN | CNAME | ns1 |
IN | A | 219.117.212.112 | |
pop | IN | CNAME | |
smtp | IN | CNAME |
参考記事:Linux World 2003年9月号
MTAには設定が容易なpostfixを選択。Debianの場合、デフォルトでeximがインストールされているが、postfixはインストールされていない。ということで、apt-geでインストールする。
quark:~# apt-get install postfix |
設定ファイルは/etc/postfix/main.cfだが、雛型として置いてある同ファイルにはコメントも無く、あっさりしたファイルで、先頭行にも「より完全なバージョンで、コメント付きの/usr/share/postfix/main.cf.distを見てくれ」とか書いてあるので、そちらの方を雛型として利用することにする。
実際に修正した箇所の抜粋は以下の通り。
#〜中略〜 |
queue_directory = /var/spool/postfix |
mail_owner = postfix |
myhostname = quark.skucky.com |
mydomain = skucky.com |
myorigin = $mydomain |
inet_interfaces = all |
mydestination = $mydomain,localhost |
mynetworks = 192.168.1.0/24,127.0.0.0/8 |
alias_maps = hash:/etc/aliases |
alias_database = hash:/etc/aliases |
home_mailbox = Maildir/ |
debug_peer_level = 2 |
#sendmail_path = |
newaliases_path = /usr/bin/newaliases |
mailq_path = /usr/bin/mailq |
setgid_group = postdrop |
#html_directory = |
manpage_directory = /usr/share/man |
sample_directory = /usr/share/postfix |
readme_directory = /usr/share/doc/postfix |
#〜中略〜 |
家ではLinuxとWindowsを使い分けているので、両OSからメールを見るにはIMAPの方が都合が良い(POPではクライアントにメールがダウンロードされるので、どちらかでメールを見てしまうと他方のOSでそのメールを見られない)。と言う事で、IMAPサーバを立ち上げる。
IMAPサーバにはCourier-IMAPを使用する。postfixと同様にapt-getでインストールする。
quark:~# apt-get install courier-imap |
Courier-IMAPの設定は特に必要無く、ただ単に起動しておくだけで良いが、メールボックスとも言えるメール用のディレクトリ(Maildir)を作成しておく必要がある。
quark:~# /etc/init.d/courier-imap start |
quark:~# cd |
quark:~# maildirmake Maildir |
プロバイダで持っているメールアドレスに来たメールも一括で管理するための設定を行う。ここでの設定を行えば、skucky.comドメインのメールアドレスとプロバイダ用メールアドレスの違いを意識する事無く、先に作成したメール用ディレクトリで一元管理できるようになる。何はともあれ、まずは例によってapt-getで両者をインストールする。
quark:~# apt-get install fetchmail procmail |
インストール後は、自分のホームディレクトリ配下にそれぞれの設定ファイルを作成する。内容は以下の通り。
set daemon 3600 |
set nobouncemail |
defaults |
protocol pop3 |
no rewrite |
no mimedecode |
mda "/usr/bin/procmail" |
poll pop.XXXISP.net user xxxx pass xxxx |
poll mail.skucky.com user yyyy pass yyyy |
MAILDIR=$HOME/Maildir/ |
DEFAULT=$MAILDIR |
LOGFILE=$MAILDIR/procmail_log.txt |
LOCKFILE=$HOME/.procmail_lock |
: 0 |
* ^Subject: test |
.test/ |
あとは、一般ユーザーの権限でfetchmailを起動しておけば良い。
hogehoge@quark:~$ fetchmail |
参考記事:Linux World 2003年6月号
Apacheについては、以前のサーバーではバージョン1.3系列を使用していたが、今回デフォルトで入っているApacheのバージョンは2.0系列だった。設定ファイルの構成に違いが有ったりして、どのファイルを編集すれば良いのか分からなかったので、ググッて調べた所、最低限以下のような手順を踏めば良いらしい。
/etc/apache2/sites-available/配下に既にdefaultというファイルが有るので、こいつを参考に自分用のサイトの設定ファイルを同ディレクトリ内に作成する。defaultと言うファイルは、どうやら例の「あなたの予想に反してこのページが見えてますか?」とか何とか言ってるApache恒例のサンプルページを表示するための設定が書かれているっぽい。
因みに、以下の例では、自宅内からのアクセスはログに記録しないのと、ワーム系アクセスと検索ロボット系アクセスは別のログファイルに分離している設定を施してあります。
NameVirtualHost quark |
<VirtualHost quark> |
ServerAdmin webmaster@skucky.com |
DocumentRoot /var/www/html/ |
SetEnvIf Remote_Addr 192.168.1. nolog |
SetEnvIf Request_URI "default.ida" worm nolog |
SetEnvIf Request_URI "root.exe" worm nolog |
SetEnvIf Request_URI "cmd.exe" worm nolog |
SetEnvIf Request_URI "Admin.dll" worm nolog |
SetEnvIf Request_URI "mem_bin" worm nolog |
SetEnvIf Request_URI "srcipts" worm nolog |
SetEnvIf Request_URI "awstats" worm nolog |
SetEnvIf Request_URI "stats" worm nolog |
SetEnvIf Request_URI "mambo" worm nolog |
SetEnvIf Request_URI "modules" worm nolog |
SetEnvIf Request_URI "MSOffice/cltreq.asp" worm nolog |
SetEnvIf Request_URI "vti_bin" worm nolog |
SetEnvIf Remote_Addr 60.35 robot nolog |
SetEnvIf Remote_Addr 65 robot nolog |
SetEnvIf Remote_Addr 66.94.224.0/19 robot nolog |
SetEnvIf Remote_Addr 66.98 robot nolog |
SetEnvIf Remote_Addr 66.196 robot nolog |
SetEnvIf Remote_Addr 66.249 robot nolog |
SetEnvIf Remote_Addr 68.142 robot nolog |
SetEnvIf Remote_Addr 202.160.176 robot nolog |
SetEnvIf Remote_Addr 209.237 robot nolog |
CustomLog /var/log/apache2/worm.log combined env=worm |
CustomLog /var/log/apache2/robot.log combined env=robot |
CustomLog /var/log/apache2/access.log combined env=!nolog |
</VirtualHost> |
上記ファイルを作成したら、以下のコマンドで設定を有効にし、Apacheを再起動しておく。a2ensiteコマンドの引数には上記で新規作成したファイル名を指定する。
quark:~# a2ensite skucky |
quark:~# /etc/init.d/apache2 reload |