この二部シリーズの前の記事では、DNS(ドメインネームシステム)の概要では、DNSデータベースの構造とクライアントでネームサービスを構成する方法について説明しました。 また、ネームサーバーを構築したり、digコマンドの結果を解釈しようとしたりするときに遭遇する可能性が高い、より一般的なDNSレコードのいくつかをリスト

この記事では、BIND(Berkeley Internet Name Domain)を使用して独自のネームサーバーを構築する方法を示します。, それはあなたが考えるかもしれないほど難しいことではありません。

この記事では、キャッシュネームサーバーを作成する方法を学習することから始め、次に進み、それをネットワーク用の完全なプライマリ(マスター)ドメインネームサーバーにアップグレードする方法を学習します。

BINDを使用してDNSサーバーをセットアップする

BINDを使用してネームサーバーをセットアップするのは非常に簡単なので、実験に利用できるコンピューターでこれを行う方法を紹介します。, この小さなラボプロジェクトでは、BINDをキャッシュネームサーバーとしてコンピューターにインストールして構成し、テストしてから、ネットワークの名前リゾルバーとし

利用可能なGNU/Linuxコンピュータにネームサーバをセットアップすることは、ネットワーク上の他のホストやその動作に干渉しないため、技術的に可能です。 ただし、明示的な許可がない限り、所有していないコンピューターや変更する権利を持っていないコンピューターでは、これを行わないでください。,

マイセットアップ

このラボプロジェクトのタスクのいずれかを除くすべてのタスクを実行するには、コンピュータが一つだけ必要です。 私は有線または無線接続のいずれかを使用して非ホームネットワークに接続するときにDHCP(Dynamic Host Configuration Protocol)によって提供されるネームサーバーが時々信頼できない がほとんどのホストで行うものとして、名前のサーバーっとしてこのプロジェクトの古ASUS EeePC900ブです。,

私はこのプロジェクトのために私のASUSのプライベートIPアドレスを使用しますが、あなたが使用しているホストのIPアドレスを使用する必要が

hostsファイル

まず、/etc/hostsファイルを見てみましょう。 デフォルトの状態では、hostsファイルには二つの行しかありません。

リスト1:小さなネットワークでリゾルバーの機能を実行するために、単純なhostsファイルを維持できます。,

リスト1に示すように、ホスト名とそれぞれのIPアドレスを追加することはできますが、これはネームサービスに対する最適なソリューションではあ Hostsファイルに他のエントリがある場合、名前付けやIPアドレスに干渉する場合は、このプロジェクトの期間中、それらのエントリをコメントアウトす あなたのほとんどは、二つのデフォルト行以外のエントリを持ちません。,

Preparation

キャッシュネームサーバーは、内部ネットワーク上のホスト名を解決するために/etc/hostsを使用することを置き換えることはできませんが、ISPまたは他のパブリッwww.cnn.com最良の部分は、キャッシュネームサーバーの設定が非常に簡単であることです。

開始する前に、次の手順を実行して準備する必要があります。

まず、/etc/hosts,/etc/namedファイルのバックアップコピーを作成します。conf,resolv./etc/sysconfig/iptables.confと/etc/sysconfig/iptables.,まだインストールされていない場合は、ディストリビューションのパッケージマネージャーを使用して、bind Rpm bind、bind-chroot、およびbind-utilsをインストールします。 ラボホストがキャッシュネームサーバーを使用できるようにするには、/etc/resolv内の独自のホストを指すネームサーバー行を追加する必要があります。コンフ たとえば、ラボのホストIPアドレスが192.168.0.203の場合、epcと同様に、/etc/resolvのネームサーバーリストの先頭に次の行を追加します。conf:

name server 192.168.0.203

このプロジェクトを実行しているホストのIPアドレスを使用してください。,

外部IPアドレスの代わりにlocalhost127.0.0.1のIPアドレスを使用できます。 また、あなたがコメントアウトラインを指すためのホストとして名ます。 改訂されたresolvを必ず保存してください。confファイル。

これらの変更はすぐに有効になり、再起動またはサービスの再起動は必要ありません。 ここで、ICMP(Internet Control Message Protocol)パケットをブロックしない共通のパブリックホストにpingを試みます。,

ping wally2.both.org

現在、resolvで定義されているdnsサービスまたはリゾルバが動作していないため、”不明なホスト”または”名前またはサービスが知られていません”というエラーが発生するはずです。confファイル。 現在利用中の下記ページよりダウンコマンドがサービス名になります。

dig wally2.both.com

エラーが発生するはずです”接続がタイムアウトしました。”

キャッシュネームサーバーのセットアップ

キャッシュネームサーバーはどのドメインに対しても権限のあるソースではありません。, ネットワークからのすべての名前解決リクエストの結果をキャッシュし、同じリモートホストに対する将来の要求に対する応答を高速化します。

注:名前付き。confファイルは、構文、特に句読点について非常に特定です。 セミコロンは、エントリの終わりとスタンザの終わりだけでなく、行の終わりを描くために使用されます。 サンプルに示すように、それらを正しく追加してください。

キャッシュネームサーバーの初期設定のために、デフォルトの/etc/namedにいくつかの変更を加えます。confファイルが必要なので、お気に入りのエディタで編集してください。, まず、以下のリスト2に示すように、ローカル-テスト-ホストのIPアドレスを”listen-on port53″行に追加します。 これにより、namedはホストの外部IPアドレスをリッスンできるようになり、他のコンピュータでもネームサーバーとして使用できます。

既定では、BINDはインターネットのルートネームサーバーを参照して、ドメインの権限のあるネームサーバーを検索します。 BINDのローカルインスタンスがルートサーバーの代わりに要求を送信する”フォワーダー”と呼ばれる他のサーバーを指定することができます。 これにより、DNSハイジャックの可能性が高まります。,

以下に示すように、”forwarders”行を追加します。 ここに行えるキャッシュDNSサーバIPアドレスの取得ていない場合は、キャッシュされます。 以下のリストのIPアドレスは、ローカルISPまたはOpenDNSまたはその他のパブリックネームサーバーをフォワーダとして使用できるGoogleパブリックDNSサーバー用です。 フォワーダーを定義する必要はなく、その場合、BINDは/var/named/named.caファイルで定義されているインターネットルートサーバーを使用して、フォワーダーが定義されていない場合、ドメインに対する権限のあるネームサーバーを検索します。, ただし、この演習では、リスト2のようにフォワーダーを定義してください。

ラボ環境でIPV6を使用していないため、IPV6行をコメントアウトします。 “//”二つの前方スラッシュは、名前付きのコメントを示すことに注意してください。confファイル。

リスト2:名前付きの/etc/です。confファイルは、キャッシュネームサーバーの設定に必要な簡単な構成を提供します。 追加または変更する必要がある行は太字で強調表示されます。

ローカルネットワークアドレス192.168.0.0/24をallow-query行に追加します。, この行は、このDNSサーバーによってDNSクエリが受け入れられるネットワークを指定します。

ネームサービスを開始

次に、名前付きサービスを開始し、起動するたびに名前付きサービスを開始するように構成します。 Fedora25ホストでsystemctlコマンドを使用していますが、使用しているディストリビューションによっては、コマンドがホスト上で異なる場合があります。 バインドリゾルバーサービスの名前は名前付きです。,

systemctl enable named
systemctl start named

キャッシュネームサーバーが機能していることを確認するために実行できる最初のテストは、digを使用してDNSデータベース情報を見つけwally2.both.orgキャッシュネームサーバーをさらにテストするには、digコマンドを使用して、次のような一般的なインターネットwebサイトのIPアドレスwww.opensource.com、CNN、有線、およびあなたが好きな他のもの。 結果は、応答するサーバーとしてホストを表示するはずです。,

この時点で、キャッシュネームサーバーはインターネット上のホストを正しく解決し、パブリックホストに対するDNS要求はGoogleパブリックネームサーバーに転送されるためです。namedの”forwarders”行を参照してください。コンフ ただし、内部ネームサービス用の/etc/hostsファイルには依然として依存しています。 創造主の名前のサーバで解決できる問題です。

プライマリネームサーバーの作成

キャッシュネームサーバーを作成したら、本格的なプライマリネームサーバーに変換することはそれほど難しくありません。, 一次サーバー名が正当な権限を持つソーのドメインでした。

名前を変更する必要があります。confを再度作成カップルで新しいファイルです。 というドメインを作成しますExample.comこれは、このようなドキュメントの例の目的のために予約されたドメイン名です。 このExample.com ドメインにはインターネット上にIPアドレスがあり、非常にまばらなwebサイトがありますが、ラボプロジェクトの残りの部分では、誰にも問題を引き起 あなたは使用しますExample.com この演習の残りの部分の内部ドメイン名としてのドメイン。,

作成する新しい二つのファイルは、/var/namedディレクトリに配置するforwardゾーンファイルとreverseゾーンファイルです。 この場所は、namedの”directory”ディレクティブによって指定されます。conf設定ファイル。

フォワードゾーンファイルの作成

フォワードゾーンファイルには、ゾーン内のホストの名前、別名ドメインとそれぞれのIPアドレスをペアにする”A”レコード また、Aレコード内の実際のホスト名の別名であるCNAMEレコードや、メールサーバーのMXレコードを含むこともできます。

基本的なフォワードゾーンファイル/var/named/example.comを作成します。,ゾーンを作成し、次の行を追加します。 ゾーン-ファイルは、次のリスト3のサンプル-ゾーン-ファイルのようになります。

; Authoritative data for example.com zone
;
$TTL 1D
@ IN SOA epc.example.com root.epc.example.com. (
2017031301 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
$ORIGIN example.com.
example.com. IN NS epc.example.com.
epc IN A 127.0.0.1
server IN A 192.168.25.1
www IN CNAME server
mail IN CNAME server
test1 IN A 192.168.25.21
t1 IN CNAME test1
test2 IN A 192.168.25.22
test3 IN A 192.168.25.23
test4 IN A 192.168.25.24
; Mail server MX record
example.com. IN MX 10 mail.example.com.

リスト3:フォワード-ゾーン-ファイルのフォワード-ゾーン-ファイルExample.com domainには、このドメインのホスト名とIPアドレスが含まれます。

リスト3の最初のコメント以外の行はTime to Live指定子です。 DはDayの略です。 SOA(Start of Authority)行の指定子も同じように明らかです。, SOAレコードのパラメータの詳細は、ここでいくつかの詳細に説明されています。

NSレコードには、このラボプロジェクトを実行するホストのFQDN完全修飾ドメイン名が含まれている必要があります。 また、ホストの有効なIPアドレスを持つAレコードがファイルに存在する必要があります。 この場合、localhostのIPアドレス127.0.0.1を使用する必要があります。

上記のエントリは、実験するためのいくつかのホスト名を与えるでしょう。

必ず今日の日付を使用し、シリアル番号に01から始まるカウンタを追加してください。 上記のシリアル番号は、March4、2017の最初の変更です。, シリアル番号は、ゾーンファイルが変更されるたびに増分されます。 プライマリにこれを使用するセカンダリネームサーバーがあった場合、シリアル番号が増分されない限り、それらは更新されません。

フォワードゾーンファイルをnamedに追加します。conf

ただし、DNSサーバーが動作する前に、/etc/namedにエントリを作成する必要があります。新しいゾーンファイルを指すconf。 トップレベルのヒントゾーンのエントリの下に、”include”行の前に次の行を追加します。

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

リスト4:これらの行をnamedに追加します。例を追加するconfファイル。,リゾルバ構成へのcomゾーンファイル。

これらの変更を有効にするには、namedを再起動します。 フォワードゾーンファイルで構成したホストのIPアドレスを取得するには、digおよびnsloookupコマンドを使用して、ネームサーバーをテストします。 DigおよびnslookupコマンドがIPアドレスを返すために、ホストがネットワーク上に存在する必要はないことに注意してください。

これらのコマンドにFQDNを使用する必要があることに注意してください。nslookupコマンドを除き、これらのコマンドにはFQDNを使用する必要があります。Example.com これは/etc/resolvで提供されます。confファイル。, この場合、そうではない可能性があるため、このプロジェクトのすべてのテストにFqdnを使用するだけです。

ルートネームサーバーの使用

ルートネームサーバーは、ルートネームサーバーに対する権限のあるサーバーとして与えられます。Amazon.com ルックアップ。 忘れないでくださいまして、Googleの公共サーバー名としてフォワーダー. 次に、namedのフォワーダー行をコメントアウトします。confと名前を付けて再起動します。 上記のコマンドをもう一度実行して、返される結果を比較します。 結果は、リスト5の結果と同じようになります。

リスト5:wwwでの検索の結果アマゾン,comて興味深い情報を含む回生のための各種の記録です。これを行ったとき、Amazonの外部アドレスを解決する最初の呼び出しには、データが見つかって返される間に3857msかかりました。 同じクエリを実行するための後続の結果は1msでした。 回答セクション行の1800、300、および60と権限セクション行の1831の数字に注意してください—これらは秒単位のTTL(ライブ時間)です。, ルックアップを複数回実行すると、これらの数値が変更され、レコードがローカルキャッシュに残っている時間が表示されます。

リバースゾーンファイルの作成

ドメインのリバースゾーンを使用すると、リバースルックアップを行うことができます。 多くの組織ではこれらを内部的には行っていませんが、逆参照は問題判別に役立ちます。 SpamAssassinなどの多くのスパム対策の構成では、有効な電子メールサーバーを確認するために逆引き参照を探します。

逆ゾーンファイル/var/named/example.com.revを作成し、次の内容を追加します。, 適切なシリアル番号を必ず使用してください。

; Authoritative data for example.com reverse zone
;
$TTL 1D
@ IN SOA test1.example.com root.test1.example.com. (
2017031501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS epc.example.com.
example.com. IN NS epc.example.com.
1 IN PTR mail.example.com.
1 IN PTR server.example.com.
21 IN PTR test1.example.com.
22 IN PTR test2.example.com.
23 IN PTR test3.example.com.
24 IN PTR test4.example.com.

リスト6:この逆ゾーン-ファイルexample.com.revをネーム-サーバーに使用します。

逆ゾーンファイルに/var/named/25.168.192.in-addr.arpaという名前を付けることもできます。 名前付きで明示的に指し示すので、実際には何でも名前を付けることができます。しかし、二つの規則のいずれかを使用すると、他の人があなたの仕事に従うことが容易になります。

名前付きに逆ゾーンを追加します。conf:

zone "25.168.192.in-addr.arpa" IN {
type master;
file "example.com.rev";
};

リスト7:このスタンザをnamedに追加します。,confファイルは逆参照を有効にします。

リスト7のスタンザを/etc/namedに追加します。新しいリバースゾーンを指すconfファイル。 現在再読み込みおよび試験逆ゾーンのコマンド一覧8. あなたの結果は以下のように見えるはずです。

リスト8:namedを再起動した後、リバースゾーン内のIPアドレスに対して逆引き参照を実行すると、次のような結果が表示されます。

ネットワーク内の他のリバースエントリのいくつかをテストし、次のことと、実験したい他のリバースルックアップも試してください。

, -Xオプションは逆引きを意味します。

dig -x 192.168.25.23
dig -x 192.168.25.1

フォワードゾーンにエントリを持つすべてのホストがリバースゾーンにエントリを持つ必要はありませんが、そうであればより一貫した結果が得られることに注意してください。

この時点で、BINDを使用して動作するネームサーバーがあります。 しかし、外部ホストできない使用にはこの名前のサーバーでのファイアウォールない設定するDNSの要求。

Dns用のIPTablesの設定

ローカルネットワーク上の他のホストでホストをネームサーバーとして使用する場合は、この手順を実行できます。,

IPTablesは、他のホストが名前解決に使用するために、ネームサーバー上のUDP(User Datagram Protocol)パケットの受信を許可するように設定する必要があります。 必要なエントリを追加して保存するには、次のコマンドを使用します。IPTABLESまたはfirewalldファイアウォールに、UDP用のポート53(ドメイン)での着信パケットを許可し、新しいルールセットを保存するルールを追加します。, -A INPUT-m state–state RELATED,ESTABLISHED-j ACCEPT行の後に新しいルールを挿入してください。 次のコマンドの数字7は、このルールが既存の入力ルールの位置番号7に挿入されることを意味します。

iptables -t filter -I INPUT 7 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT

必要に応じて新しいファイアウォールルールを保存することができます。 次に、以下のリスト9のコマンドを使用して、他のホストからこれをテストします。, @Epc引数は、指定されたネームサーバをホスト名epcで使用するようにdigコマンドに指示します。 作成したDNSサーバーのIPアドレス、または新しいネームサーバーを指すネットワーク上の解決可能なホスト名のいずれかを置き換える必要があります。 もちろん、リモートテストに使用しているホストの/etc/hostsファイルに、そのホスト名とそのIPアドレスをいつでも追加できます。

リスト9:同じネットワーク上の別のホストから作成した名前リゾルバーをテストします。,

クリーンアップ

クリーンアップには、配布に適したツールを使用して次のタスクを実行する必要があります。 おけいこの名前のサーバーのためのネットワークになってしまいます。

  1. 元の/etc/hostsファイルを復元します。
  2. このラボプロジェクトに使用されるリゾルバーホスト上の名前付き停止します。
  3. 名前付きサービスを無効にします。
  4. ゾーンファイルを削除します。
  5. 元の名前を復元します。confファイル。
  6. 元のresolvを復元します。confファイル。,li>

最終的な考え

BINDを使用してネットワーク用にネームサーバーを実際に作成するまで、ネームサービスの機能は非常にあいまいに見えました。 では非常に容易なものになるだろうと改善できるDNSルックアップ。 お名前サーバーすることができる多くの比較的軽微なん名のサービスの中断による保守管理の行き届かないISP名ます。私の小さなEeePCはSeti@HomeのCPU使用率が100%で実行されていますが、リゾルバ要求に非常に迅速に応答します。, ごくわずかな影響で利用可能なLinuxホストでこのプロジェクトを試すことができるはずです。 私はあなたの多くがあなた自身のネームサーバーを設定し、それを試してみることを願っています。 ネームサーバーインストールの詳細は、ホストとネットワークの詳細によって異なります。