自社(宅)サーバーの構築
 by ip-domain-search.com
IPドメイン
SEARCH
IPドメイン
LOOKUP
IPドメイン
半自動
WWWサーバ
へ渡す情報
ドメイン
基礎講座
独自ドメイン
の取得
自社(宅)サーバの構築 複数ドメイン
の運用
お問合
PROFEEL


自社(宅)サーバーを構築するためには固定IPアドレスが必要です。



1:固定IPアドレス回線の選択
   (A)専用線を契約する
   (B)VPSを契約する
2:OSの選択
3:FreeBSDのインストール
4:DNSサーバー構築    (プライマリDNS)
5:DNSサーバー構築    (セカンダリDNS)
6:DNSサーバー構築    (NICへ登録)
7:WWWサーバー構築
8:Mailサーバー構築
9:ユーザーの作成


 
 
 
 
1:固定IPアドレス回線の選択

大きく分けて固定IPアドレス回線の契約は2つあると思います。

(A)専用線(固定IPアドレス回線)を契約する
オーソドックスな方法です。 回線接続業者と固定IPアドレスの契約をします。 別にサーバー機材(パソコンでもOK)は各自で用意する必要があります。

(B)VPSを契約する
4〜5年前からVPS(Virtual Private Server)を提供する業者が増えました。
サーバー機材は不要で、サーバーのroot権限を持てますので、そのサーバーに関して何でも出来ます。
反面、サーバーを自分で構築してメンテナンスできるスキルや時間が必要です。

私は専用線とVPSの両方使いましたが、
今はVPSに決めています。


私の場合
私は両方しました。始めは(A)の専用線(OCNが2000年の少し前にOCNエコノミーという固定IPアドレス16本の専用線を売り出したので、それに飛びつきました。月額38,000円でしたが当時の他の専用線サービス料金に比べると格安でした。)で自社サーバ−機を運用していましたが、その全ての機能が(B)のVPSで実現可能でしたので、数ヶ月かけて専用線でのサーバ−の全機能をVPSへ完全に移しました。

ちなみに私が使ったのは さくらのVPS です。1台1,500円/月 位のコースです。
実は、さくらのVPSを使う前に他社のVPSを検討していて、15日のお試しと本契約をしたのですが、何か制約が多過ぎる様に感じられて、1ヶ月で解約しました。解約せずにそのまま利用すれば十分使えたのだと思いますが、 さくらのVPS のお試し・本契約をした後は何のストレスも無く以前の専用線で構築していた事が全く同じように構築出来ました



以降、VPSを利用した『自社(宅)サーバー構築』について説明しようと思います。

 

2:OSの選択

VPS業者 も多く有りますが、 どの業者のVPSでもサーバーOSを数種類選択できると思います。CentOSやUbuntu、Debian、FedoraおよびFreeBSD等が準備されているかと思います。また他のLinuxでもカスタムインストールできる業者は多いと思います。

私はOSはFreeBSDを使いました。

なお、OSのインストールやその後のサーバー構築に関してVPS業者から技術的なサポートは全く無く、専用線で自己所有のサーバー機材へのOSインストールの場合と同様に自己責任で行います。

私はOSはFreeBSDを使いました。

今後このサイトではVPSのOSにFreeBSDを使ったサーバー構築について説明する事になると思います。
FreeBSDはUnixの内ではマイナーなOSになるのかも知れませんが、VPS業者の説明やWeb上の説明は殆どCentOSかUbuntuを使う前提で書かれていますので、FreeBSDでの説明は返って新鮮かも知れません。

私がFreeBSDを使った理由は
私が初めて専用線(OCNエコノミー)でサーバーを構築した頃は20年程前(今は2017年)の、未だGoogleは無くYahooしかない時代で、サーバー・マシンの性能も貧弱だった頃に、OSを何に決めようかと悩んでいた時に、「YahooがFreeBSDを使っていて、FreeBSDは堅牢で、あのYahooに大量のアクセスが来ても落ちない。」という記事を何かで読んで、それ以降サーバーはずーとFreeBSDを(遊びではRedhatやUbuntuやDebianも使ってみましたが)使っています。

3:FreeBSDのインストール

FreeBSDのバージョンはVPS契約時点で最新のFreeBSD 9.2 をインストールしました。
Web上にあるFreeBSDの本家の構築マニュアルは こちらです。

VPSの指定のユーザーエリアからOSのインストールを選択し、FreeBSDを選択し、いくつかの質問に答えていくと、FreeBSDのインストールが完了します。

DNSサーバーは BIND 9.9.10-P2 を使いました。
WWWサーバーは Apache/2.2.25  を使いました。
MAILサーバーは sendmail 8.14 を使いました。

その他 TELNET,FTP,SSH,POP3,SQUIDサーバー ですが、
ここまでインストールした所でログを見ると、外部から猛烈な不正アクセス、不正ログインが続いていました。

それで、
FreeBSDの私の設定は
ftpは標準のftpdから安全な proftpd に変更しました。
pop3は標準のpopperでは無く、『POP before SMTPによる認証』を行いました。
各サーバーのポート番号を、今空きの(誰も知らない)大きな番号に変更しました。

ftpは標準添付のftpdより、安全で自由度の高い設定ができる proftpd に変更しました。 [/etc/inetd.conf /etc/hosts.allow を変更]

pop3は標準添付のpopperでは無く、安全対策上 qpopper と dracd をインストールして『POP before SMTPによる認証』を行いました。 [/etc/rc.conf /etc/inetd.conf /etc/hosts.allow を変更]
(これで、外部からメール送信の踏み台にされる事を防ぐ事ができました。)

そして少し乱暴かも知れませんが、
TELNET,FTP,SSH,POP3,SQUIDの各サーバーのポート番号を、今空きの(誰も知らない)大きな番号に変更しました。 [/etc/services を変更]
これで、外部からの不正アクセス、不正ログインは殆ど無くなり、静かになりました。



--<Sponsered Link>--


4:DNSサーバー構築 (プライマリDNS)

DNSサーバーは BIND 9.9.10-P2 を使いました。
Web上にあるFreeBSDの本家のbind構築マニュアルは こちらです。
お断り:DNSの説明の為にIPアドレスとして判り易い様にと『100.100.100.100』『200.200.200.200』を例にあげました。
しかし、この実在のIPアドレスは私の所有物ではありません。 無断で説明に使わせて頂いた事をお詫びいたします。


プライマリDNSサーバー構築のポイント
専用の固定IPアドレスが必要です。
/etc/named.confファイルにドメインのZONEファイル名を記入します。
ドメインのZONEファイルを作成します。

DNSサーバーを設定する際にはVPS業者から連絡があった貴方専用の固定IPアドレスが必要です。

貴方が所有されているドメイン名がoooxxxooo.com で、固定IPアドレスが仮に 100.100.100.100 なら


/etc/named.conf に oooxxxooo.comドメインのZONEファイル名を記入します。

zone "oooxxxooo.com" {
type master;
file "oooxxxooo.com.zone";
};


oooxxxooo.comドメインのZONEファイルであるoooxxxooo.com.zone ファイルを作成します。
$TTL 86400
@ IN SOA ns1.oooxxxooo.com. root.oooxxxooo.com. (
2017092500 ;Serial
28800 ;Refresh
7200 ;Retry
604800 ;Expire
86400 ;Minimum
)

IN NS ns1.oooxxxooo.com.
IN MX 10 mail.oooxxxooo.com.
@ IN A 100.100.100.100
ns1 IN A 100.100.100.100
www IN A 100.100.100.100
ftp IN A 100.100.100.100
mail IN A 100.100.100.100



の様に マニュアルに習って記入します。

設定が完了したら一度rebootして、/var/log/messages にエラーが出力されていないか確認して下さい。
エラーが無く
named[xxxx]: all zones loaded
named[xxxx]: running
の行があればOKです。

そして、Freebsdの画面で 
nslookup www.oooxxxooo.com localhost
と打って、応答が有り、
Name: www.oooxxxooo.com
Address: 100.100.100.100
と表示されたらプライマリDNSサーバーの設定は完了です。

なお、VPSを1台しか契約していない場合のDNS構築はこれで終わりですが、
DNSサーバーはなるべくプライマリーとセカンダリーの2台は持つ事を推奨されますので、
次項でセカンダリーDNSサーバーの設定を記載します、

5:DNSサーバー構築 (セカンダリDNS)

セカンダリDNSサーバーを構築する為にはVPSをもう1台契約する必要があります。
(もしくはVPS業者でセカンダリDNSサーバーを受け持ってくれるサービスがあるかも知れませんので、そんなサービスを利用できれば、VPSの追加契約は要りません。)

ここでは(正攻法の)2台目のVPSにセカンダリDNSサーバーを構築する場合を説明します。

(勘違いし易い)セカンダリDNSサーバーの根本的な動作とは
セカンダリDNSサーバーは自前でZONEファイルを持たず、プライマリDNSサーバーから指定ドメインの
ZONEファイルの情報を聞いて、バックアップした情報でDNS動作を行う事です。

セカンダリDNSサーバーの働きとは
一言で言うと「プライマリDNSサーバーから指定ドメインのZONEファイル情報を聞いてDNS動作を行う」事です。
従って、セカンダリDNSが自身でZONEファイルを持つのでは無く、プライマリDNSからの情報で動作するのです。ですからプライマリDNSが停止すると、直ぐにではありませんが、いつかはセカンダリDNSも停止します。 (停止までの秒数は設定可です。=>プライマリDNSのZONEファイルの ;Expire の項) 。)



セカンダリDNSサーバーの設定
セカンダリDNSサーバーの /etc/named.conf に
バックアップZONEファイルの保存場所とファイル名を指定する事のみです。

セカンダリDNSサーバーの /etc/named.conf の設定は

zone "oooxxxooo.com" {
type slave;
file "oooxxxooo.com.zone.bak";
};

を記入します。 (file名:"oooxxxooo.com.zone.bak"は何でも可)



プライマリDNSサーバーの追加変更箇所
/etc/named.conf にセカンダリDNSサーバーが聞きに来る事を教えておく必要があります。
ドメインのZONEファイルにセカンダリDNSのホスト名・IPアドレスを教えておく必要があります。

2台目のVPSの固定IPアドレスが仮に 200.200.200.200 なら
プライマリDNSサーバーにはセカンダリDNSサーバー(200.200.200.200)が聞きに来る事を教えておく必要があります。


プライマリDNSサーバーの /etc/named.conf の oooxxxooo.comドメインの項に次の行を追加します。

zone "oooxxxooo.com" {
type master;
file "oooxxxooo.com.zone";
allow-transfer { 200.200.200.200; }; //追加行
};



更に、セカンダリDNSサーバーが出来た事から、プライマリDNSサーバーのoooxxxooo.comドメインのZONEファイルであるoooxxxooo.com.zoneを変更する必要があります。

$TTL 86400
@ IN SOA ns1.oooxxxooo.com. root.oooxxxooo.com. (
2017092501 ;Serial ;(ファイルの内容に変更があれば値を増加させる事)
28800 ;Refresh
7200 ;Retry
604800 ;Expire
86400 ;Minimum
)

IN NS ns1.oooxxxooo.com.
IN NS ns2.oooxxxooo.com. //追加行
IN MX 10 mail.oooxxxooo.com.
@ IN A 100.100.100.100
ns1 IN A 100.100.100.100
ns2 IN A 200.200.200.200 //追加行
www IN A 100.100.100.100
ftp IN A 100.100.100.100
mail IN A 100.100.100.100



の様に修正して下さい。

なお、ここで www や mail を
www IN A 100.100.100.100
から
www IN A 200.200.200.200
の様に変更しても構いません。
指定先にWWWサーバーやMAILサーバーが動作していれば何の問題もありません。



動作確認
プライマリDNS用のVPSをrebootして、エラー出力が無いことを確認して下さい。
セカンダリDNS用のVPSをrebootして、エラー出力が無いことを確認して下さい。
各々の画面で nslookup コマンドで応答がある事を確認して下さい。

設定が完了したらプライマリDNS用のVPSを一度rebootして、/var/log/messages にエラーが出力されていないか確認して下さい。
エラーが無く
named[xxxx]: all zones loaded
named[xxxx]: running
の行があればOKです。

そして、プライマリDNS用のVPSのFreebsdの画面で 
nslookup ns2.oooxxxooo.com localhost
と打って下さい。
Name: ns2.oooxxxooo.com
Address: 200.200.200.200
と表示されたらプライマリDNSサーバーの再設定は完了です。

念の為に、ns1.oooxxxooo.comやwww.oooxxxooo.com、mail.oooxxxooo.com 等も確認して下さい。



また、セカンダリDNS用のVPSもrebootして、/var/log/messages にエラーが出力されていないか確認して下さい。
セカンダリDNS用のVPSもエラーが無く
named[xxxx]: all zones loaded
named[xxxx]: running
の行があればOKです。

そして、セカンダリDNS用のVPSのFreebsdの画面で 
nslookup ns2.oooxxxooo.com localhost
と打って下さい。
Name: ns2.oooxxxooo.com
Address: 200.200.200.200
と表示されたらせセカンダリDNSサーバーの設定は完了です。

念の為に、ns1.oooxxxooo.comやwww.oooxxxooo.com、mail.oooxxxooo.com 等も確認して下さい。

6:DNSサーバー構築 (NICへ登録)

NICへ登録
NICのドメイン登録情報に
プライマリDNSのホスト名・IPアドレスをネームサーバー登録しておく必要があります。
プライマリDNSのホスト名・IPアドレスをネームサーバー登録しておく必要があります。
この登録をしないと貴ドメインは外部からは見えません。


少しややこしいDNSサーバーの設定が終わりました。
しかし、このままでは何時まで待っても(wwwサーバーの構築が終わっても、MAILサーバーの構築が終わっても)www.oooxxxooo.com は外部からは見えませんし、@oooxxxooo.com宛てのメールも届きません。


NICにoooxxxooo.comドメインのDNSサーバー情報(プライマリDNS、セカンダリDNSのホスト名とそのIPアドレス)を登録する必要があります。

本サイトのドメイン基礎講座の中のDNSの項で解説していますが、

NICにoooxxxooo.comドメインのDNSサーバー情報を登録しておかないと、oooxxxooo.comドメインのDNSサーバーが何処のIPアドレスで稼動しているかが誰にも判らないので、
プライマリDNSの 100.100.100.100 にも
セカンダリDNSの 200.200.200.200 にも
oooxxxooo.comドメインのDNS情報を誰も聞きに来ないのです。

必ず、NICにoooxxxooo.comドメインのDNSサーバー情報を登録して下さい。

なお、各プロバイダーは(インターネット回線の混雑を防ぐ為に)一度検索したDNS情報を約1日〜2日程(設定による)持っておき、その間はDNS情報を再度検索しません。
ですから、
NICに自ドメインのDNSサーバー情報を再登録しても、そのDNS情報が全プロバイダーに行き渡るのに約1日〜2日かかると思っておいて下さい。

(VPS以外の)Windowのコマンドプロンプト等から
nslookup www.oooxxxooo.com   と打って下さい。 

Name: www.oooxxxooo.com
Address: 100.100.100.100
と表示されたらNICのDNS登録変更はお使いのプロバイダーへ行渡っています。

念の為に、ns1.oooxxxooo.comやns2.oooxxxooo.com、mail.oooxxxooo.com 等も確認して下さい。



--<Sponsered Link>--


7:WWWサーバー構築

WWWサーバーは Apache/2.2.25  を使いました。

(本当はhttpsの為のSSL設定等もしているのですが、数多くのインストールや設定や契約が必要になり、説明が煩雑になって、焦点がぼけてしまう可能性が高いため、この項では基本のWWWサーバー構築のみを説明します。) (httpsの為のSSL設定は後日別の項で説明するかもしれません。)

FreeBSDではPortsという便利なインストール方法がありますので、
cd /ports/www/apache22 へ行って
make
make install
とする事でApacheのインストールは完了です。


Apacheの設定ファイル
/usr/local/etc/apache22/httpd.conf がApacheの設定ファイルです。

一例
ServerName www.oooxxxooo.com:80
DirectoryIndex index.html index.htm index.cgi
DocumentRoot "/usr/local/www/apache22/data"

< Directory "/usr/local/www/apache22/data">
   Options Includes ExecCGI
#	order allow,deny
#	allow from all
#	Deny from .anonymizer.com
< /Directory>

ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"

< Directory "/usr/local/www/apache22/cgi-bin">
  Options None FollowSymLinks ExecCGI
#	order allow,deny
#	allow from all
#	Deny from .anonymizer.com
< /Directory>

AddHandler cgi-script .cgi


apacheの自動起動の設定

FreeBSDでは、起動時に、/usr/local/etc/rc.dディレクトリ配下のシェルを実行します。

Apache/2.2インストール直後の/usr/local/etc/rc.dディレクトリ内には
apache22.sample が生成されていますので、
> mv apache22.sample apache22 とリネームし
> chmod +x apache22 と実行できる様にしておけば
次回のrebootからapache22が自動起動します。
再起動しない場合は # apache22 start ( stop ) で OKです。

また、apache22 start または reboot後に、/var/log/messages にエラーが出力されていないか確認して下さい。
エラーが無ければ、お使いのブラウザで  http://www/oooxxxooo.com と打ってみて下さい。

ドキドキしますが、何か画面に出ましたか?

Freebsd とか Apache とかの文字があれば大成功です。基本設定は正しく、正常動作している様子です。
 (画面に何も出ない場合は先のdns設定とwww設定を再度チェックして下さい。)

次に /usr/local/www/apache22/data ディレクトリ内に在る index.html または index.htm をエディターで開いて、 何か文字を書いて下さい。
Hollow でも I love you. でも 貴方の名前 でも何でも構いません。

そして、もう一度、ブラウザで  http://www/oooxxxooo.com と打ってみて下さい。

ご自身で書かれた文字が画面に出ましたか? あれば大成功です。おめでとうございます。
あとはご自由にHPをお作り下さい。  (HPの作り方はこちらこちら を参考にして下さい。)



--<Sponsered Link>--


8:Mailサーバー構築

MAILサーバーは sendmail 8.14 を使いました。

難関はsendmail.cfファイルの作成でした。

昔のdefというsendmail.cfファイル作成ツールに変わって、今はcfというsendmail.cfファイル作成ツールがあり、m4マクロで書かれたソースのsendmail.mcを(オリジナルはコピー保存して)エディターで加工してcfツールでmakeするのですが、

基本動作の設定として

/etc/mail/aliases メールボックスエイリアス
/etc/mail/sendmail.cw sendmail が受け付ける配送先ホストのリスト
/etc/mail/virtusertable 仮想ユーザおよび仮想ドメイン表
/etc/mail/access アクセスデータベースファイル
/etc/mail/mailertable メーラ配送表

を使うのであれば、sendmail.cf を変更せずに(.mcをmakeせずに)そのまま使用できました。

(最近は異なっているかも知れませんのでsendmail.mcを確認して下さい。 行頭に dnl があればコメント行です。 )
(私は自サーバーがスパムの踏み台にならないようにsendmail.mcの色んな設定箇所を試してmakeを繰り返してテストしてみたのですが、最終的に出来上がったsendmail.mcはオリジナルのsendmail.mcと結局一緒でした。 )


aliases(メールボックスエイリアス)ファイルの編集

凝りだしたら色んな事がaliases設定で出来ます。

太郎宛のメールを次郎にも三郎にも届くようにする・・
松子宛や竹子宛のメールを梅子にも届くようにする・・

その他、興味のある方はこちらを参考にして下さい。

なお、/etc/mail/aliasesを変更したら、 /etc/mail/ ディレクトリで make を実行する必要があります。


sendmail.cw (配送先ホストのリスト)ファイルの編集
このサーバーで受けとるメールのドメイン名を書きます。

sendmail.cwをエディターで開いて

oooxxxooo.com

と記入してセーブする。(ドメイン名が複数あれば、一行ずつ複数記入する)

make をする必要はありませんが、sendmailを再起動する必要があります。


virtusertable (仮想ユーザおよび仮想ドメイン表)ファイルの編集
もし、oooxxxooo.comドメインの全アカウント宛のメールを 1つのメールアドレス(example@ip-domain-search.com)に転送する場合は

virtusertableをエディターで開いて

@oooxxxooo.com example@ip-domain-search.com

と記入してセーブする。

もし、oooxxxooo.comドメインの全アカウント宛のメールを 他のドメイン(ip-domain-search.com)の同じアカウントに転送する場合は

@oooxxxooo.com %1@ip-domain-search.com

と記入してセーブする。

なお、/etc/mail/virtusertableを変更したら、 /etc/mail/ ディレクトリで make を実行する必要があります。


access(アクセスデータベースファイル)ファイルの編集

アクセスしてくるホストまたは IP アドレスに対して OK、RELAY、 REJECT で不正アクセスを拒否する。

例えば
mail.ip-domain-search.com OK : mail.ip-domain-search.comからのメールを受け取る
mail.ip-domain-search.com RELAY : mail.ip-domain-search.comからの依頼のメール送信を実行する
mail.ip-domain-search.com REJECT : mail.ip-domain-search.comからのメール送受信を全て拒否する

sendmail送信はサーバーに送信依頼があったメールに対してユーザーチェックを行わないで送ってしまうので、スパムメール送信の踏み台にされる恐れがあり、されない為にはこのaccessファイルで送信依頼元を REJECT する必要があります。

最近のsendmailはデフォルトで不正中継できないように設定してあるとは聞くのですが、 私自身VPSでのサーバー構築直後に不正中継されている事を確認していますので、 サーバー構築直後の不正アクセス元は全部 REJECT したのですが、 幾ら REJECT してもイタチゴッコのようで、REJECT設定で全てのスパム送信者を完璧に拒否出来るとは思えないので、

私は『POP before SMTPによる認証』を行いました。

(『POP before SMTP』で外部からのメール送信依頼はPOP3(メール読出)でユーザーである事をチェックした後でないと送信できない様にして、さらにPOP3のポート番号を、誰も知らない大きな番号に変更しました。これでスパムメール送信の踏み台にされる事を防ぐ事が出来ていると思っています。)


mailertable (メーラ配送表)ファイルの編集

私は結局使っていません。

興味のある方はこちらを参考にして下さい。

その他 sendmail の詳細設定は こちらをご参照下さい。

9:(メール・アカウント用)ユーザーの作成

Freebsdの画面から 
adduser 新規ユーザー名(asciiで書く、例えば:abc)
と打って質問に答えていけばOKです。

以降は、abc@oooxxxooo.com宛てのメールを受信できます。

後はメールを受信したいアカウント毎にユーザー名を作成する必要があります。

next:複数ドメイン運用サーバーの構築


次頁の  複数ドメイン運用サーバーの構築 へ進む


誤字脱字等があればEメールでお知らせ下さいますようにお願い申し上げます。



Copyright(c) 2017 ip-domain-search.com  All rights reserved.




--<Sponsered Link>--


IPドメイン
SEARCH
IPドメイン
LOOKUP
IPドメイン
半自動
WWWサーバ
へ渡す情報
ドメイン
基礎講座
独自ドメイン
の取得
自社(宅)サーバの構築 複数ドメイン
の運用
お問合
PROFEEL