レンタルサーバで独自ドメイン設定を行うと何が起こる?

レンタルサーバで独自ドメイン設定を行うと何が起こるかということを説明しますね。
「独自ドメイン設定」はエックスサーバで言うとサーバーパネルのドメイン設定ですね。

 

 

この設定を行うと、どの箇所が自動で変更され、どの箇所を追加で
手動設定しなければいけないかが、だいたい理解してもらえるかと思います。

 

実際にシステムを見た訳では無いので100%正確という訳ではありませんが、
だいたいは、90%くらいは正確かと思います。
また、正確性の面で言うとエックスサーバを含め各レンタルサーバ会社でそもそも
システムに多少の相違が有りますのでそこも念頭に置いてもらえればと思います。

 

多少の相違と言うのは以下などです。

・WEBサーバとメールサーバが、同一サーバ/別のサーバでのシステム構成
・独自ドメイン設定時、メールアカウントを自動作成
・ネームサーバのゾーンファイルの同期方法の違い
・ネームサーバで自動作成されるレコードの違い

 

レンタルサーバで独自ドメイン設定を行うと、
システムとしては自動で以下のことが行われます。

 

ネームサーバでのゾーン作成とゾーンファイル作成

 

BINDであればnamed.confファイルに以下が追加

BINDとは多くのネームサーバで使用されるDNSソフトウェアで、
named.confファイルとはDNSの設定ファイルです。

zone "example.com" {
   type master;
   file "example-com.zone";
};

example.comというゾーン情報をexample-com.zoneというゾーンファイルで
持っているという意味です。また、2行目はBINDの機能でネームサーバの
データ(ゾーンファイル)同期を行う場合はマスターサーバはtype master;、
スレーブサーバはtype slave;となり allow-transferでスレーブサーバの
IPアドレスを記載したりします。こうするとスレーブサーバは、ゾーンファイルの
シリアル値を確認しデータの同期を行います。
エックスサーバではゾーンファイルのシリアル値は0ですので、おそらく別の
方法での冗長方式ですね。

 

 

BINDであれば以下の内容のゾーンファイルを新規作成

以下はエックスサーバのDNS応答から想定したゾーンファイルの例です。
各項目の正しい値はnslookupのset dubugやdig(ドメイン情報探査 domain
information groper)の応答等で確認できます。またDNSの仕様自体はRFC1034、
1035に記載されています。

 

想定したゾーンファイル、example-com.zone

$TTL  10800
@   IN   SOA ns1.xserver. root.sv0.xserver.jp. (
    0      ; Serial
    10800    ; Refresh (3 hours)
    3600    ; Retry (1 hour)
    604800   ; Expire (7 days)
    3600 )   ; Minimum (1 hour)(default TTL)
    IN   NS  ns1.xserver.jp
    IN   NS  ns2.xserver.jp
    IN   NS  ns3.xserver.jp
    IN   NS  ns4.xserver.jp
    IN   NS  ns5.xserver.jp
    IN   MX  0 example.com
*   IN   A   1.1.1.1
www IN   A   1.1.1.1
    IN   A   1.1.1.1

 

1行目の意味
1つのゾーンファイルに複数のゾーン情報を記載する場合は1行目は$ORIGIN
ディレクティブというものが入ります。$ORIGINディレクティブについては後に
少し触れます。

 

「$TTL 10800」とは、各レコードの余命、生存時間(Time To Liveの略)が
10800秒(3時間)であることを示します。他のネームサーバ(キャッシュサーバ)がこの
ネームサーバのゾーン情報を取得した際、「その情報の有効期間」として参照される
値です。この有効期間内は、そのキャッシュサーバはパソコン(リゾルバ)等へ回答
する際にキャッシュされた情報を回答します。
パソコン(リゾルバ)でもipconfig /displaydnsと入力するとレコードのTime To Live
が見られます。DNS情報のクリアはipconfig /flushdnsです。また、パソコンでの
インターネット上の名前の解決において、DNSを使用しない場合はホスツファイルに
記載したりします。

 

またDNS回答時にレスポンス・コード 3 NXDomainであった場合は問い合わせ
された名前が見つからなかったことを表しますが、その場合はMinimumの時間を
キャッシュする時間の上限とします。このことをネガティブキャッシュ(RFC 2308)と
言います。DNSの浸透、伝播においてはこれらの値が関係しますね。

 

 

2行目〜7行目の意味
2行目〜7行目にはSOAレコードが記載されています。
SOAレコード(エスオーエーレコード)とは、Start Of Authorityの略です。
ゾーンファイルの大元のデータを保有しているネームサーバ名、
そのドメインの管理者のメールアドレス、ゾーンの情報に関する
時間(リフレッシュする時間等々)が記載されています。

 

以下の書式です。

@ IN SOA ゾーンの元データを持つDNSサーバ名(≒プライマリDNSサーバ名). 管理者メールアドレス. (ゾーンに関する各時間)

 

@の意味は、レコードの最後に「.」を付けない場合には「特定の文字列」が
付加(代入)されます。という意味です。「特定の文字列」とは、
「$ORIGINディレクティブに記載されている文字列」です。
$ORIGINディレクティブは1つのゾーンファイルに複数のゾーン情報を記載する
時に使われますね。
$ORIGINディレクティブの記載方法は、通常1行目に
$ORIGIN example.com.と記載します。$ORIGINディレクティブの記載が無い
場合は上記のnamed.confで書いたゾーン名が「特定の文字列」です。

 

「ゾーンの元データを持つDNSサーバ名(≒プライマリDNSサーバ名).」はMNAMEと
言われます。設定時、稀に末尾にドットを付けることを忘れそうになります。

 

「管理者メールアドレス.」はRNAMEと言います。こちらも末尾にドットが必要です。
また、ドメインでは用意しておくべきメールアドレスと言うものが何個かあります。

 

Serialはゾーン情報のシリアル値です。スレーブサーバは、この値が増加していれば
ゾーン情報の更新が有ったと認識します。

 

Refreshはスレーブサーバがゾーン情報の更新の有無をチェックする周期の目安値です。
強制的にチェックさせるには、スレーブサーバでrndc reloadを行います。

 

Retryはポーリング失敗時の再試行間隔です。

 

Expireはマスターサーバ障害時、スレーブサーバは、この値の時間まではマスターサーバ
から取得したゾーン情報を有効な情報としてサービスを継続します。
そのためこの時間以内にマスターサーバを復旧させなければDNSエラーとなります。
RFC1912で触れられています。私がDNSサーバを構築する時はだいたい1〜2週間に
していました。遠方でリモートも許可していないDNSサーバは2週間に設定していました。

 

Minimumは上述の通りで、DNS回答時にレスポンス・コード 3 NXDomainであった
場合は問い合わせされた名前が見つからなかったことを表しますが、その場合は、
ここの値がキャッシュする時間の上限とされます。このことをネガティブキャッシュ、
ネガティブキャッシュの上限値と言います。

 

 

 

※上記ゾーンファイルの想定時に参照したnslookupのset debug結果は以下です。

ttl = 86400 (1 day)
primary name server = ns1.xserver.jp
responsible mail addr = root.sv0.xserver.jp
serial = 0
refresh = 10800 (3 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 3600 (1 hour)

 

※上記ゾーンファイルの想定時に参照した、サーバーパネルの独自ドメイン設定
直後に作成される初期レコード。

 

 

WEBサーバでのnameベースのバーチャルホストの設定

 

WEBサーバが、複数のホームページを単一のIPアドレスで待ち構える設定を
「nameベースのバーチャルホスト」、
WEBサーバが、複数のホームページを複数のIPアドレスで待ち構える設定を
「IPベースのバーチャルホスト」と言います。

 

共有レンタルサーバは単一のIPアドレスである場合が多いため、
「nameベースのバーチャルホスト」ですね。

 

WEBサーバのソフトがApacheであれば、httpd.confに以下を記載します。

NameVirtualHost *

 

<VirtualHost *>
        ServerName www.example111.com
        ServerAlias example111.com
        DocumentRoot /var/www/html_1
</VirtualHost>

 

<VirtualHost *>
        ServerName www.example222.com
        ServerAlias example222.com
        DocumentRoot /var/www/html_2
</VirtualHost>

 

 

上記のバーチャルホスト設定後、パソコンのWEBブラウザでhttp://example111.com/
アクセスするとHTTPリクエストのホストヘッダに記載されているドメイン名(example111)
をWEBサーバ(Apache)が理解して、該当のドキュメントルートのWEBデータを返します。
パケットは以下です。

 

※パソコンのWEBブラウザから或るホームページへアクセスすると
DNSサーバへIPアドレスの問い合わせ→WEBサーバへ3ウェイハンドシェイク→
WEBサーバへHTTPリクエストという順でトラフィックが流れます。
3ウェイハンドシェイクとは、TCP接続を確立するための方法です。

 

 

メールサーバでのpostfixの設定

エックスサーバではWEBサーバとメールサーバは同じサーバです。
また、Postfixとは1999年にリリースされたUNIX用のMTAです。
ねずみのキャラが印象的です。元はIBM Secure Mailerや
VMailerと呼ばれていました。Postfixが出る前はSendmailが主流でした。

 

MTA(メールトランスファーエージェント)とは、メールを配送/転送するソフトのことです。
メールソフトについてはMUA(メールユーザーエージェント)と言います。

 

メールサーバのソフトがPostfixであれば、独自ドメインを追加した際は
main.cf(メールサーバに関する設定ファイル)に以下を記載します。

mydestination = $myhostname, example1.com, example2.com, example3.com

 

大量の独自ドメインを登録する場合はバーチャルメールボックスかバーチャルエイリアス
という機能を使います。その場合は以下などをmain.cfに記載します。

 

■バーチャルメールボックスを使用する場合

virtual_mailbox_domains =
virtual_mailbox_maps =
virtual_uid_maps =
virtual_gid_maps =
virtual_mailbox_base =

 

■バーチャルエイリアスを使用する場合

virtual_alias_domains =
virtual_alias_maps =

 

virtual_mailbox_domains
バーチャルメールボックスで使用するドメイン名を記載します。
別のファイルを参照させる方式も可能です。

 

virtual_mailbox_base
受信メールのスプールのディレクトリです。

 

virtual_alias_maps
バーチャルドメインのユーザのリストを記載します。
別のファイルを参照させる方式も可能です。

 

 

以上のことが(各レンタルサーバ会社によって多少の相違は有りますが)
レンタルサーバで独自ドメイン設定を行うと自動で行われます。
そのため、それ以外のことは手作業で設定していきましょう。

 

 

関連ページ一覧