名前解決に関する設定を一気に済ませます
BINDに続き、今回は名前解決に関連したネットワークの設定をします。具体的には、以下の流れになります。
1.レジストリに権威ネームサーバの情報を登録。
2.ローカル環境で名前解決するために「hosts」と「nsswitch.conf」の設定。
3.Linuxファイアウォールのポート開放。
レジストリのデータベースへ権威ネームサーバを登録
前回BINDでDNSサーバを構築しました。その際にルートネームサーバへ、構築したDNSサーバ(権威ネームサーバ)を登録すべく設定しましたが、これだけでは名前解決はできません。他にも、ドメインを管理する「レジストリ」と呼ばれる組織にも、権威ネームサーバの情報を登録する必要があります。
レジストリとレジストラ・登録代理業者の役割
DNSにおける「レジストリ」とは、登録されたドメイン名を一元管理する組織で、「comやjp」など「TLD(トップレベルドメイン)」ごとに存在します。レジストリには国ごとにルールの異なる「ccTLD(jpなど)」と、世界中で利用できる共通ルールの「gTLD(comやnetなど)」があります。具体例をいえば、jpドメインはJPRS、comドメインはVeriSignが管理・運営しています。
「レジストリ」はドメイン名とそれに属する情報のデータベースを管理し、専用のDNSサーバで情報を提供しています。名前解決をするには、このデータベースとDNSサーバ(親の権威ネームサーバ)に、BINDで構築したDNSサーバ(子の権威ネームサーバ)の情報を登録する必要があります。
ちなみにレジストリのデータベースでは以下の情報を提供することが義務付けられています。
登録ドメイン名 レジストラ名 登録ドメイン名のプライマリおよびセカンダリネームサーバ ドメイン名の登録年月日 ドメイン名の有効期限 ドメイン名登録者の名前および住所 技術的な連絡の担当者の名前、住所、電子メールアドレス、電話番号 登録に関する連絡の担当者の名前、住所、電子メールアドレス、電話番号
jpドメインを管理するJPRSでは、この他にも多くの情報を登録するルールになっています。
「レジストリ」への登録作業は、ドメインの取得を代行する「レジストラ、もしくは代理店(登録代行業者)」を介して行われます。「レジストラ」は「SRS」というシステムを利用して直接レジストリのデータベースを編集できるため、登録や変更の反映が早いというメリットがあります。
レジストラとしては「お名前.com」、登録代行業者では「ムームードメイン」などが、よく知られています。
ムームードメインで権威ネームサーバの登録
今回はムームードメインを例に解説します。それぞれのレジストラ・代理店の仕様にならってください。
1.ムームードメインのコントロールパンネルにて、「ムームーID」と「ムームーパスワード」を入力し、「ログイン」ボタンをクリック。
2.ドメイン一覧でDNSサーバを設定するアドレスの「詳細:表示する」のテキストリンクをクリック。
3.ページ中程にある「ネームサーバの設定変更」にある「ネームサーバの設定変更」ボタンをクリック。
4.ページ下部に「取得したドメインで使用する」という項目があるのでチェックを入れて、「取得したドメインでネームサーバを登録する場合はこちらをご利用ください。」というテキストリンクをクリックします。
5.出てきたウィンドウに「ネームサーバ名(例:ns.example.com)」と「IPアドレス(例:192.168.0.1)」を入力し「新規登録」ボタンをクリック。
6.「プライマリネームサーバ(ns.example.com)」と「セカンダリネームサーバ(2nd.example.com)」ともに設定したらページ下部の「ネームサーバ設定変更」ボタンをクリックします。
以上でムームードメインで、DNSサーバの指定することができました。
ムームードメインからレジストラ、レジストラからレジストリと書き換えを行うので、反映には数日かかる場合はあるようです。
hostsファイルでLinuxのネットワークを設定
ここでは「/etc/hosts」に当たるファイルを編集します。hostsファイルはLinuxのローカル環境で名前解決をするのに利用します。
ここで設定したhostsファイルの設定を、DNSサーバを利用したの名前解決より優先させることができます。そうすることで名前解決がLinuxローカルで完結するため、反応速度が早く、サーバへの負担も軽減できます。
Webminでhostsファイルを編集する方法
1.「ネットワーク > ネットワーク設定」から「ホストアドレス」をクリック
テキストリンクの「新規のホスト アドレスを追加」をクリック
2.「IP アドレス」に「192.168.0.1(自分のサーバのIP)」
「ホスト名」にBINDで設定した「ホスト名を全て」追加。
例)
example.com
ns.example.com
2nd.example.com
mail.example.com
ftp.example.com
www.example.com
全て入力したら「作成」ボタンをクリック。
3.次にすでにある「127.0.0.1」に「localhost.example.com」を加えて保存。(example.comは自分のドメイン)
コマンドでhostsファイルを編集する方法
viで直接編集する場合は「/etc/hosts」を編集します。
hostsファイルの書式は「IPアドレス 正式ホスト名 別名 別名…」と記述します。
上記のWebminと同じ設定にする「/etc/hosts」の例
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost localhost.example.com ::1 localhost6.localdomain6 localhost6 192.168.0.1 localhost.localdomain localhost 192.168.0.1 example.com ns.example.com 2nd.example.com mail.example.com ftp.example.com www.example.com
nsswitch.confでLinux内部の「DNSクライアント」を設定
ここでは「/etc/nsswitch.conf」にあたるファイルを編集します。
ここで設定する「DNSクライアント」とは、Linuxのローカルで利用する名前解決の順序を指定します。
具体的には、先ほど作成したhostsファイルに設定がないか確認して、ない場合に外部のDNSサーバに問い合わせる。という指定をします。
1.「ネットワーク設定画面」で「DNSサーバの設定」をクリック。
2.「DNSクライアント画面」にて「ホスト名」に「example.com」
「解決順」は上から「Hosts file」「NIS+」「NIS」「DNS」の順番でプルダウンを選んでください。NISは複数のサーバを構築した際の名前解決の仕組みなので、今回はあまり関係ありませんが、せっかくなので追加しておきます。
「DNS サーバ」に「127.0.0.1」と入力
以上の設定が終わったら「保存」ボタンをクリック
3.ネットワークに加えた変更を有効にするために、再び「ネットワーク設定」画面に戻り「変更を適用する」ボタンをクリック。
viでDNSクライアントを設定
viで直接編集する場合は「/etc/nsswitch.conf」を編集します。
38行目当たりにある「hosts」の項目を編集します。上の例と同じ設定は以下のとおりです。
hosts: files nisplus nis dns
それぞれ
「files」が「Hosts file」、
「nisplus」が「NIS+」、
「nis」が「NIS」、
「dns」が「DNS」を指します。
先頭に書いたものが優先順位が上になります。項目はスペース区切りで記述します。
DNSサーバ用にポート53番を開放
最後にBINDで構築したDNSサーバのために「ポート53番を開放」します。
通常サーバでは、通信を許可するかどかを「ファイアウォール」というソフトで制御しています。「ファイアウォール」で許可しない通信を遮断することを、「パケットフィルタリング」といいます。
基本的に全ての通信を「パケットフィルタリング」して、特定のポート番号だけ通信を許可します。この、特定のポート番号を許可することを「ポート開放」といいます。
ファイアウォールのイメージ
特定の通信で利用されるポート番号は予め予約されています。
「ウィキペディアの一般的に利用されるポート番号の一覧」
それではWebminでファイアウォールを設定します
「ネットワーク > Linux ファイアウォール」をクリックして、「ルールを追加する」ボタンをクリックします。
DNSサーバのUDP用に以下のルールを追加します。
DNSサーバのUDP用ルール
ルールのコメント | DNS UDP |
---|---|
実行するアクション | 許可 |
ネットワークプロトコル | 等しい UDP |
宛先の TCP または UDP ポート | 等しい 53 |
同じように今度は、TCP用のルールを追加してください。
DNSサーバのTCP用ルール
ルールのコメント | DNS TCP |
---|---|
実行するアクション | 許可 |
ネットワークプロトコル | 等しい TCP |
宛先の TCP または UDP ポート | 等しい 53 |
ファイアウォールに加えた変更を有効にします
「Linuxファイアウォール画面」の下部にある「設定を有効にする」ボタンをクリックしてください。
vi等でポート開放する場合
「Linux ファイアウォール」の設定は「/etc/sysconfig/iptables」で行います。
上で設定したのと同じようにするには、viで開いて以下のように追加してください。
# DNS UDP -A INPUT -p udp -m udp --dport 53 -j ACCEPT # DNS TCP -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
そしてコマンドでファイアウォールを再起動してポート開放の設定を有効にします。
※コマンドラインの見方
「コマンド」「引数、その他」「コメント」「#(rootユーザ)」「$(一般ユーザ)」
# /etc/init.d/iptables restart
本来ならついでに他のソフト用にポートを開放したいところですが、1度に解説しすぎても混乱の元なので、今回はDNS用のポートだけ開放しておきます。
お疲れ様でした。
これで名前解決に関するLinuxサーバの設定が完了しました。初めての方は覚えることも多く、大変だったのではないでしょうか?
Webサービスを提供する場合は、必ずと言っていいほどDNSサーバを構築します。そのためDNSは身近な技術ですが、同時に奥の深い技術でもあります。大規模なDNSサーバの構築など、興味のある方は挑戦してみてください。
また、コマンドでの編集方法も併記しましたが、GUIであるWebminでの操作に比べて、簡潔に設定できることに気がついたでしょうか?設定に関する基本的な知識を持ち合わせている場合は、CUIでの解説・設定のほうが断然作業が少なく、短時間で設定できます。
CUIでの操作も意識して慣れるようにすると、結果的に作業時間の短縮につながります。
次回は「BINDで構築したDNSサーバと、各種ネットワークの動作確認」です。