バインドを使用してDNSサーバーを設定する方法

バインドを使用してDNSサーバーを設定する方法

DNS(ドメインネームサーバー)は、ドメイン名とそれに対応する IP アドレスを変換するサーバーです。

ドメイン ネーム システム (DNS) は、ドメイン名をそのドメインに関連付けられた IP アドレスに変換するシステムです。 DNS を使用すると、ブラウザに IP アドレスを入力するのではなく、名前でお気に入りの Web サイトを検索できるようになります。このガイドでは、プライマリ DNS システムとクライアントを構成する方法を説明します。

この記事の例で使用されているシステムの詳細は次のとおりです。

dns01.fedora.local (192.168.1.160) - プライマリ DNS サーバー client.fedora.local (192.168.1.136) - クライアント

DNSサーバーの構成

sudo を使用して bind パッケージをインストールします。

$ sudo dnf インストールbind bind-utils -y

bind パッケージは、DNS サーバーを構成するための/etc/named.conf構成ファイルを提供します。

/etc/named.conf ファイルを編集します。

sudo vi /etc/named.conf

次の行を見つけます。

ポート53をリッスンします{127.0.0.1;};

プライマリ DNS サーバーの IP アドレスを次のように追加します。

リッスンポート53 { 127.0.0.1; 192.168.1.160; };

次の行を見つけます。

クエリを許可します { localhost; };

ローカル ネットワーク範囲を追加します。このサンプル システムでは、192.168.1.X の範囲の IP アドレスを使用します。次のように指定します。

クエリを許可します { localhost; 192.168.1.0/24; };

順方向ゾーンと逆方向ゾーンを指定します。ゾーン ファイルは、IP アドレスやホスト名など、システムの DNS 情報が含まれるテキスト ファイルです。フォワードゾーンファイルを使用すると、ホスト名を IP アドレスに変換できます。逆ゾーンファイルはその逆です。リモート システムが IP アドレスをホスト名に変換できるようになります。

/etc/named.confファイルの下部にある次の行を探します。

「/etc/named.rfc1912.zones」を含めます。

ここから、次のように、行のすぐ上のゾーン ファイル情報を指定します。

ゾーン "dns01.fedora.local" IN {
 タイプマスター;
 ファイル「forward.fedora.local」;
 更新を許可する {なし; };
};
ゾーン "1.168.192.in-addr.arpa" IN {
 タイプマスター;
 ファイル "reverse.fedora.local";
 更新を許可する {なし; };
};

forward.fedora.local 和reverse.fedora.localファイルは、作成されるゾーン ファイルの名前です。任意の名前にすることができます。

保存して終了します。

ゾーンファイルの作成

/etc/named.confファイルで指定した転送ゾーン ファイルと逆ゾーン ファイルを作成します。

$ sudo vi /var/named/forward.fedora.local

次の行を追加します。

$TTL 86400
@ SOA dns01.fedora.local. root.fedora.local. ( で
 2011071001 ;シリアル
 3600 ;更新
 1800 ;再試行
 604800 ;期限切れ
 86400 ;最小TTL
)
@ IN NS dns01.fedora.local。
@ 192.168.1.160 で
192.168.1.160 内の dns01
クライアント IN A 192.168.1.136

太字で表示されているものはすべて、ご使用の環境に固有のものです。ファイルを保存して終了します。次に、 reverse.fedora.localファイルを編集します。

$ sudo vi /var/named/reverse.fedora.local

次の行を追加します。

$TTL 86400
@ SOA dns01.fedora.local. root.fedora.local. ( で
 2011071001 ;シリアル
 3600 ;更新
 1800 ;再試行
 604800 ;期限切れ
 86400 ;最小TTL
)
@ IN NS dns01.fedora.local。
@ IN PTR fedora.local。
192.168.1.160 内の dns01
クライアント IN A 192.168.1.136
160 IN PTR dns01.fedora.local。
136 IN PTR client.fedora.local。

太字で表示されているものはすべて、ご使用の環境に固有のものです。ファイルを保存して終了します。

また、SELinux を構成し、構成ファイルに正しい所有権を追加する必要があります。

sudo chgrp 名前付き -R /var/名前付き
sudo chown -v root:named /etc/named.conf
sudo restorecon -rv /var/named
sudo 復元con /etc/named.conf

ファイアウォールを設定します。

sudo ファイアウォール-cmd --add-service=dns --perm
sudo ファイアウォール-cmd --reload

設定に構文エラーがないか確認してください

sudo 名前付きチェックconf /etc/named.conf

出力やエラーが返されない場合は、構成は有効です。

フォワードゾーンファイルとリバースゾーンファイルを確認します。

$ sudo named-checkzone forward.fedora.local /var/named/forward.fedora.local
$ sudo named-checkzone 逆.fedora.local /var/named/逆.fedora.local

「OK」という応答が表示されます。

ゾーン forward.fedora.local/IN: シリアル 2011071001 がロードされました OK ゾーン river.fedora.local/IN: シリアル 2011071001 がロードされました OK

DNSサービスを有効にして開始する

$ sudo systemctl enable 名前付き
$ sudo systemctl start 名前付き

resolv.confファイルを設定する

/etc/resolv.confファイルを編集します。

$ sudo vi /etc/resolv.conf

現在のネームサーバー行を見つけます。サンプル システムでは、モデム/ルーターをネーム サーバーとして使用しているため、現在は次のようになっています。

ネームサーバー 192.168.1.1

これをプライマリ DNS サーバーの IP アドレスに変更する必要があります。

ネームサーバー 192.168.1.160

変更を保存して終了します。

残念ながら、注意すべき点が 1 つあります。システムが再起動されるか、ネットワークが再起動されると、NetworkManager は/etc/resolv.confファイルを上書きします。つまり、行った変更はすべて失われます。

これを防ぐには、 /etc/resolv.conf resolv.conf を不変にします。

$ sudo chattr +i /etc/resolv.conf

リセットしたい場合は、再度上書きを許可する必要があります。

$ sudo chattr -i /etc/resolv.conf

DNSサーバーのテスト

$ dig fedoramagazine.org
; <<>> DiG 9.11.13-RedHat-9.11.13-2.fc30 <<>> fedoramagazine.org
;; グローバルオプション: +cmd
;; 回答が得られました:
;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 8391
;; フラグ: qr rd ra; クエリ: 1、回答: 1、権限: 3、追加: 6
;; OPT擬似セクション:
 ; EDNS: バージョン: 0、フラグ:; udp: 4096
 ; クッキー: c7350d07f8efaa1286c670ab5e13482d600f82274871195a (良好)
 ;; 質問セクション:
 ;fedoramagazine.org. IN A
;; 回答セクション:
 fedoramagazine.org. 50 IN A 35.197.52.145
;; 権限セクション:
 fedoramagazine.org。86150 IN NS ns05.fedoraproject.org。
 fedoramagazine.org。86150 IN NS ns02.fedoraproject.org。
 fedoramagazine.org。86150 IN NS ns04.fedoraproject.org。
;; 追加セクション:
 ns02.fedoraproject.org. 86150 IN A 152.19.134.139
 ns04.fedoraproject.org. 86150 IN A 209.132.181.17
 ns05.fedoraproject.org. 86150 IN A 85.236.55.10
 ns02.fedoraproject.org. 86150 IN AAAA 2610:28:3090:3001:dead:beef:cafe:fed5
 ns05.fedoraproject.org. 86150 IN AAAA 2001:4178:2:1269:dead:beef:cafe:fed5
 ;; クエリ時間: 830 ミリ秒
 ;; サーバー: 192.168.1.160#53(192.168.1.160)
 ;; 日時: 2020 年 1 月 6 日月曜日 08:46:05 CST
 ;; 受信したメッセージサイズ: 266

DNS サーバーが正常に機能しているかどうかを確認するには、いくつかチェックすべき点があります。当然、結果を得ることは重要ですが、それ自体は DNS サーバーが実際に適切に動作していることを意味するものではありません。

上部の QUERY、ANSWER、AUTHORITY フィールドには次の例のように 0 以外の値が表示されます。

;; フラグ: qr rd ra; クエリ: 1、回答: 1、権限: 3、追加: 6

SERVER フィールドには DNS サーバーの IP アドレスを入力する必要があります。

;; サーバー: 192.168.1.160#53(192.168.1.160)

dig コマンドを初めて実行する場合は、クエリの完了に 830 ミリ秒かかることに注意してください。

;; クエリ時間: 830 ミリ秒

もう一度実行すると、クエリははるかに高速になります。

$ dig fedoramagazine.org
;; クエリ時間: 0 ミリ秒
;; サーバー: 192.168.1.160#53(192.168.1.160)

クライアント構成

クライアントの構成がはるかに簡単になります。

バインド プログラムをインストールします。

$ sudo dnf インストールbind-utils -y

/etc/resolv.confファイルを編集し、プライマリ DNS を唯一のネーム サーバーとして設定します。

$ sudo vi /etc/resolv.conf

次のようになります:

ネームサーバー 192.168.1.160

変更を保存して終了します。次に、/etc/resolv.conf ファイルを不変にして上書きされないようにし、デフォルト設定に戻します。

$ sudo chattr +i /etc/resolv.conf

クライアントのテスト

DNS サーバーの場合と同じ結果が得られるはずです。

$ dig fedoramagazine.org
; <<>> DiG 9.11.13-RedHat-9.11.13-2.fc30 <<>> fedoramagazine.org
;; グローバルオプション: +cmd
;; 回答が得られました:
;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 8391
;; フラグ: qr rd ra; クエリ: 1、回答: 1、権限: 3、追加: 6
;; OPT擬似セクション:
 ; EDNS: バージョン: 0、フラグ:; udp: 4096
 ; クッキー: c7350d07f8efaa1286c670ab5e13482d600f82274871195a (良好)
 ;; 質問セクション:
 ;fedoramagazine.org. IN A
;; 回答セクション:
 fedoramagazine.org. 50 IN A 35.197.52.145
;; 権限セクション:
 fedoramagazine.org。86150 IN NS ns05.fedoraproject.org。
 fedoramagazine.org。86150 IN NS ns02.fedoraproject.org。
 fedoramagazine.org。86150 IN NS ns04.fedoraproject.org。
;; 追加セクション:
 ns02.fedoraproject.org. 86150 IN A 152.19.134.139
 ns04.fedoraproject.org. 86150 IN A 209.132.181.17
 ns05.fedoraproject.org. 86150 IN A 85.236.55.10
 ns02.fedoraproject.org. 86150 IN AAAA 2610:28:3090:3001:dead:beef:cafe:fed5
 ns05.fedoraproject.org. 86150 IN AAAA 2001:4178:2:1269:dead:beef:cafe:fed5
 ;; クエリ時間: 1 ミリ秒
 ;; サーバー: 192.168.1.160#53(192.168.1.160)
 ;; 日時: 2020 年 1 月 6 日月曜日 08:46:05 CST
 ;; 受信したメッセージサイズ: 266

SERVER が DNS サーバーの IP アドレスを出力していることを確認します。

DNS サーバーの設定が完了しました。これで、クライアントからのすべてのリクエストが DNS サーバーを経由するようになります。

なぜシンプルな DNS サーバーを構築するのでしょうか?

(1)ストームゲートで起こったように外部DNSがクラッシュした場合、緊急対応のために独自のDNSを使用できる

(2)イントラネットウェブサイトの内部IPアドレス解決を提供するか、または二重回線解決を実装する

(3)ISPがセカンダリドメイン名や高度な管理機能を制限している場合は、ニーズを満たすために独自のDNSサーバーを構築する必要があります。

(4)DNSハイジャックを避ける

(5)他のソリューションとの統合

要約する

これで、bind を使用して DNS サーバーを設定する方法に関するこの記事は終了です。bind dns サーバーに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL 8.0.18 インストール構成の最適化チュートリアル

>>:  MySQL 挿入時間の 8 時間の違いの問題の解決方法

推薦する

ブラウザ(IEシリーズ)を判別するための条件付きコメント

<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...

MySQLオンラインログライブラリの移行例

最近の事例をお話ししましょう。オンライン Alibaba Cloud RDS 上のゲーム ログ ライ...

異なるデータベースで DROP TABLE を書く方法

異なるデータベースで DROP TABLE を書く方法1.MySQL 存在する場合はテーブルを削除 ...

Linux/CentOS システムでネットワーク時間を同期する 2 つの方法の詳細な説明

ハードウェア上の理由により、機械は標準時間にある程度追いつけない場合があり、その誤差は 1 か月で数...

Vue プロジェクトにインターフェース リスニング マスクを追加する方法

1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...

mysql zipファイルのインストールチュートリアル

この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...

Tomcat+Mysql の高同時実行構成の最適化の説明

1.Tomcatの最適化構成(1)Tomcatのcatalina.batを変更するJavaをサーバー...

QQブラウザ機能を実装するためのCSS

コード知識ポイント1. fullpage.jsを組み合わせてフルスクリーンスクロールを実現する2. ...

ブルートフォース攻撃を防ぐためのシェルスクリプト設定

シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフ...

JS で Websocket ベースのマルチターミナル ブリッジング プラットフォームを実装する方法

目次1. デバッグ対象2. WebSocketの機能3. ソケット接続を確立する3.1 部屋の作成方...

MySQL 条件付きクエリと使用法および優先順位の例の分析

この記事では、例を使用して、MySQL 条件クエリ and or の使用方法と優先順位を説明します。...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...

HTML フォーマットの json のサンプルコード

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...