skucky.com


HOME


自宅サーバー構築メモ

  1. はじめに
  2. Debianのインストール
  3. ネットワークの設定
  4. DNSの設定
  5. メールサーバーの設定
  6. WEBサーバーの設定

はじめに

はじめにお断りしておきますが、自宅サーバー構築メモと題を掲げているものの、正確にはサーバー復旧メモ(自分用備忘録)と言った方が良く、人様がご覧になって参考にできるような物ではないということを申し上げておきます。

当ページは、小生の諸事情により以前のサーバー環境がバックアップも含めて全てオ釈迦になり、一から環境構築する羽目となった時のメモであり、自分が読んでわかれば良いレベルで記述してあるため、参考にならないと思われます。


Debianのインストール

i.まずはDebianを入手

DebianのHPから「CD ISO イメージ」のリンクをたどり、「最小のブータブルCDのイメージ」を選択する。理由はイメージを落す時間が短いから。何故かスウェーデンのサイト?からISOなイメージをダウンロードすることになっており、アーキテクチャごとにイメージが違うので「i386」を選ぶ。ちなみにDebianのバージョンは3.1

ii.CD作成

ISOイメージをダウンロード後、適当なソフトでイメージをCD-Rに焼けばDebianインストールCDの出来上がり。

iii.インストール

実際のインストールはDebianにしては意外と簡単だったので、特にメモしておくような事は無い。強いて言えば、インストールパッケージの選択で、デスクトップ環境は選ばなかった事くらい。サーバーとして利用するならKDEとかGNOMEとか要らないし、経験上こいつらが一番パッケージ数も多くダウンロードとインストールがうっとうしい。

▲TOP


ネットワークの設定

i.サーバーのIPアドレス割り当て

インストール時はNICが自動認識され、ネットワーク関連の設定ができないまま勝手にインストールが進む関係で、そのままインストールが終了し、システムを立ち上げるとデフォルトでDHCPが有効になっている。サーバーとして利用するならば静的アドレスとしてIPアドレスを割り当てる必要があるということで、設定するファイルは/etc/network/interfacesである。

設定1. /etc/network/interfaces
#
# 〜中略〜
#
#以下をコメント
#iface eth0 inet dhcp
#以下の設定を追加
iface eth0 inet static
address192.168.1.101
netmask 255.255.255.0
network192.168.1.0
broadcast192.168.1.255
gateway192.168.1.1

参考記事:Linux World 2002年12月号

設定が終わったら、以下のコマンドでNICを立ち上げ直しておく(NICがeth0で認識されている場合)。

コマンド1. NICの再起動
quark:~# ifconfig eth0 down
quark:~# ifconfig eth0 up

ii.ホスト名を決める

設定ファイルは/etc/hosts。以下の通り設定する。

設定2. /etc/hosts
#
# 〜中略〜
#
127.0.0.1localhost.localdomainlocalhost
192.168.1.11neutrinoneutrino.skucky.com
192.168.1.12leptonlepton.skucky.com
192.168.1.101quarkquark.skucky.com
#
# 〜中略〜
#

iii.FTPとTELNETのサービスをインストール

普段使用しているクライアントからサーバの様子を見たり、ファイルを転送する時に基本となるサービスがtelnetだったりftpだったりと言う事でこれらのサービスをインストールする(デフォルトではデーモンが入っていない)。

インストールは以下のコマンドを実行すればOK。

コマンド2. ftpdとtelnetdのインストール
quark:~# apt-get install ftpd
quark:~# apt-get install telnetd

aptでインストールした場合、インストール後も特に設定ファイルの変更も必要は無く、自動的に/etc/inetd.confも書き換えられている。

設定3. /etc/inetd.conf
#
# 〜中略〜
#
telnetstreamtcpnowaittelnetd.telnetd/usr/sbin/tcpd/usr/sbin/in.telnetd
ftpstreamtcpnowaitroot/usr/sbin/tcpd/usr/sbin/in.ftpd
#
# 〜中略〜
#

▲TOP


DNSの設定

i.BINDの設定ファイル

インターネットへの接続も含めネットワーク周りの環境ができたら、まずはネームサーバーを最優先に立ち上げる。さもないと、メールサーバもWEBサーバも自前のサーバで立ち上げられない。

BINDの設定ファイルは/etc/bind/named.conf(BINDのバージョンは9.2)。同ファイルにはデフォルトである程度の記述がされているが、さすがにそのままでは使えない。具体的な修正箇所は下記に示す/etc/bind/named.confの内容に「以下を追加」というコメントがある次行から空白行までの設定を追記した。特にコメントの無い設定はデフォルトのままである。

設定内容について簡単に言えば、LAN内と外部(インターネット)用とに分けてskucky.comドメインにあるホスト名の名前解決を行うために元となる設定を行ったといったところ。実際のIPとホスト名を関連付けするには、後述のゾーンファイルで設定する。

設定4. /etc/bind/named.conf
//
// 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とか言うファイルも以下のように設定しておく(わざわざファイルを分ける程の事でもないけれど)。

設定5. /etc/bind/named.conf.options
options {
  directory "/etc/bind";
  allow-query { internal; };
  allow-recursion { internal; };
};

ii.ゾーンファイル

次に、ゾーンファイルを作成する。ここで作成したゾーンファイルはLAN内で名前解決(正引き・逆引き両方)に使うファイルと外向け用(正引き用のみ)に使うファイルの3種類(named.confで設定しているその他のゾーンファイルはデフォルトのままで問題無し)。それぞれの設定内容は以下の通り。

・/etc/bind/db.lan(LAN内逆引き用ゾーンファイル)

設定6. /etc/bind/db.lan
$TTL 86400
@INSOA ns1.skucky.com. root.skucky.com. (
 2005092903  ; Serial
 604800  ; Refresh
 86400  ; Retry
 2419200  ; Expire
 604800 )  ; Negative Cache TTL
 INNS ns1.skucky.com.
 INMX 10 mail.skucky.com.
101INPTR quark.skucky.com.
11INPTR neutrino.skucky.com.
12INPTR lepton.skucky.com.

・/etc/bind/db.192(LAN内正引き用ゾーンファイル)

設定7. /etc/bind/db.192
$TTL 86400
@INSOA ns1.skucky.com. root.skucky.com. (
 2005092903  ; Serial
 604800  ; Refresh
 86400  ; Retry
 2419200  ; Expire
 86400 )  ; Negative Cache TTL
 INA 192.168.1.101
 INNS ns1.skucky.com.
 INMX 10 mail.skucky.com.
ns1INA 192.168.1.101
wwwINCNAME ns1
mailINCNAME ns1
quarkINCNAME ns1
neutrinoINA 192.168.1.11
leptonINA 192.168.1.12
popINCNAME mail
smtpINCNAME mail

・/etc/bind/db.skucky.com(外向け正引き用ゾーンファイル)

設定8. /etc/bind/db.skucky.com
$TTL 86400
@INSOA ns1.skucky.com. root.skucky.com. (
 2005092900  ; Serial
 604800  ; Refresh
 86400  ; Retry
 2419200  ; Expire
 86400 )  ; Negative Cache TTL
 INA 219.117.212.112
 INNS ns1.skucky.com.
 INNS ns2.granitecanyon.com.
 INMX 10 mail.skucky.com.
ns1INA 219.117.212.112
wwwINCNAME ns1
mailINA 219.117.212.112
popINCNAME mail
smtpINCNAME mail

参考記事:Linux World 2003年9月号

▲TOP


メールサーバーの設定

i.postfixの設定

MTAには設定が容易なpostfixを選択。Debianの場合、デフォルトでeximがインストールされているが、postfixはインストールされていない。ということで、apt-geでインストールする。

コマンド3. postfixのインストール
quark:~# apt-get install postfix

設定ファイルは/etc/postfix/main.cfだが、雛型として置いてある同ファイルにはコメントも無く、あっさりしたファイルで、先頭行にも「より完全なバージョンで、コメント付きの/usr/share/postfix/main.cf.distを見てくれ」とか書いてあるので、そちらの方を雛型として利用することにする。

実際に修正した箇所の抜粋は以下の通り。

設定9. /etc/postfix/main.cf
#〜中略〜
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
#〜中略〜

ii.IMAPサーバの設定

家ではLinuxとWindowsを使い分けているので、両OSからメールを見るにはIMAPの方が都合が良い(POPではクライアントにメールがダウンロードされるので、どちらかでメールを見てしまうと他方のOSでそのメールを見られない)。と言う事で、IMAPサーバを立ち上げる。

IMAPサーバにはCourier-IMAPを使用する。postfixと同様にapt-getでインストールする。

コマンド4. Courier-IMAPのインストール
quark:~# apt-get install courier-imap

Courier-IMAPの設定は特に必要無く、ただ単に起動しておくだけで良いが、メールボックスとも言えるメール用のディレクトリ(Maildir)を作成しておく必要がある。

コマンド5. Courier-IMAPの起動
quark:~# /etc/init.d/courier-imap start
 
コマンド6. Maildirの作成
quark:~# cd
quark:~# maildirmake Maildir

iii.fetchmail、procmailの導入

プロバイダで持っているメールアドレスに来たメールも一括で管理するための設定を行う。ここでの設定を行えば、skucky.comドメインのメールアドレスとプロバイダ用メールアドレスの違いを意識する事無く、先に作成したメール用ディレクトリで一元管理できるようになる。何はともあれ、まずは例によってapt-getで両者をインストールする。

コマンド7. fetchmail、procmailのインストール
quark:~# apt-get install fetchmail procmail

インストール後は、自分のホームディレクトリ配下にそれぞれの設定ファイルを作成する。内容は以下の通り。

設定10. ~/.fetchmailrc
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
 
設定11. ~/.procmailrc
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/procmail_log.txt
LOCKFILE=$HOME/.procmail_lock
: 0
* ^Subject: test
.test/

あとは、一般ユーザーの権限でfetchmailを起動しておけば良い。

コマンド8. fetchmailの起動
hogehoge@quark:~$ fetchmail

参考記事:Linux World 2003年6月号

▲TOP


WEBサーバーの設定

Apacheについては、以前のサーバーではバージョン1.3系列を使用していたが、今回デフォルトで入っているApacheのバージョンは2.0系列だった。設定ファイルの構成に違いが有ったりして、どのファイルを編集すれば良いのか分からなかったので、ググッて調べた所、最低限以下のような手順を踏めば良いらしい。

i.バーチャルホストの設定

/etc/apache2/sites-available/配下に既にdefaultというファイルが有るので、こいつを参考に自分用のサイトの設定ファイルを同ディレクトリ内に作成する。defaultと言うファイルは、どうやら例の「あなたの予想に反してこのページが見えてますか?」とか何とか言ってるApache恒例のサンプルページを表示するための設定が書かれているっぽい。

因みに、以下の例では、自宅内からのアクセスはログに記録しないのと、ワーム系アクセスと検索ロボット系アクセスは別のログファイルに分離している設定を施してあります。

設定12. /etc/apache2/sites-available/skucky
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>

ii.バーチャルホストの有効化

上記ファイルを作成したら、以下のコマンドで設定を有効にし、Apacheを再起動しておく。a2ensiteコマンドの引数には上記で新規作成したファイル名を指定する。

コマンド9. バーチャルホストの有効化と再起動
quark:~# a2ensite skucky
quark:~# /etc/init.d/apache2 reload

▲TOP


Valid XHTML 1.0 Strict


Copyright(C)2002-2023 skucky.com
webmaster@skucky.com