DNSサーバbindの架設ノート
BindはLinuxの下で主流のDNSサーバ架設ソフトウェアであり、本編ではyumによるRHEL 7へのDNSサーバのインストールと構成について述べる yumを通じてbindソフトウェアをオンラインでインストールし、ダウンロードしたバージョンは9.9.4 である.
プライマリファイルの保存パス:
/etc/named.confプライマリプロファイル
/var/named領域ファイル格納パス
/etc/rndc.conf /etc/rndc.key rndcプロファイルとKEY保存パス
順方向領域:FQDNアドレスをIPレコードに変換する
逆方向領域:IPアドレスをFQDNに逆解する
レコードタイプ:Aレコード:addressドメイン名対応IPアドレス
NSレコード:name serverドメイン名サービスレコード,ドメイン名に対応するドメイン名解析サーバに対応するサーバを指定する
一般的にドメイン名のDNSサーバーで、ここではAレコードを使用して、ペアで表示する必要があります
CNAME:別名レコード、異なるドメイン名を
MXレコード:メール交換レコード(mail exchange)、ここでメール交換のドメイン名を指定します.ここに優先順位があります.
レベル、数字が小さいほど優先度が高くなります.例えば、複数のメールサーバがある場合、優先度の高いサーバが先に受信されます.
SOA:Start of Authority、一般的な書式は:
google.com. IN SOA ns1.google.com. adminmail.google.com
そのうちgoogle.com.@で代用することができて、第4項はNS記録で、最後の項は管理者のメールボックスで、@は特殊な意義があって、使います.に代わる
serialはシーケンスを更新し、シーケンス番号が変更された場合、サーバからリフレッシュ時間になるとプライマリサーバから同期します
Refreshのリフレッシュ時間が長く、プライマリ・サーバからサーバが同期する間隔
Retry再試行時間が長く、サーバーからプライマリサーバーとの同期に失敗した後、どのくらい後に再試行されますか?
expireは失効時間が長く、サーバからプライマリサーバとの通信に失敗し、応答がなく、expireまで時間が長くなると、服から
が無効になり、ゾーンファイルが削除されます.
na ttl解析できないアドレスのキャッシュ時間
デフォルトの単位は秒で、M(分)、H(時間)、D(日)、W(週)を使用できます.
TTL値:DNSキャッシュの時間、デフォルト単位は秒
領域タイプ:
hint:ルート領域、一般用.表示
マスター:メインエリア
slave:スレーブ領域,声名スレーブ領域タイプの場合,マスター領域のアドレスmasters{Master_IP;}を指名しなければならない.
forward:ドメイン名の解析を担当せず、指定したDNSサーバにドメイン名の解析のみを渡す転送領域
一、単一サーバー構成
次はgoogle.comを例にとると、ローカルセグメントは10.1.0.0/16,ns 1である.google.com(10.1.17.221)はNSサーバ、www.google.com(10.1.17.221),mail.google.com(10.1.17.222)、www 2はwwwの別名で、まずvim/etc/named.conf
/var/namedの下に入ってgoogleを新規作成します.zoneファイル
Googleを編集します.zoneファイルのプロパティ
Google.zoneはzoneとしてコピーします.Googleで編集
プロファイルを確認し、ファイアウォールを開き、電源を入れて起動します.
dig解析の使用
逆解10.1.17.222
二、主従配置
現在、サーバーが1台追加され、IPアドレスは10.1.17.249です.
マスター上のgoogleを構成します.zoneエリアファイル、2行を追加し、サーバからのnsレコードを定義し、シーケンス番号を2015100302に変更
新しいロードプロファイル#systemctl restart namedから
サーバからのプロファイル/etc/namedを構成する.conf
zoneファイルを新規作成せずにnamedサービスを開始
/var/named/slavesディレクトリの表示
エリアファイルが転送されました
プライマリスレーブ同期に成功しました.ここで注意したいのは、NSレコードを追加する場合、ゾーンファイルのserialシリアル番号を+1操作する必要があります.これにより、サーバから同期したことをアクティブに通知できます.そうしないと、リフレッシュ時間まで同期する必要があります.
三、転送サーバーの設定
dnssec関連の構成をプライマリプロファイルで変更する必要があります
ゾーンファイルの定義
firstオプションは先に転送を表し、転送が無効な場合はルートにクエリーを行い、もう一つのオプションはonlyで、転送のみを表す
forwardersは、どのDNSサーバに転送を要求するかを表します.
3台目のマシンでテストを行い、正常に表示できます
四、サブドメインの定義
現在tech.googleというサブドメインがあります.com.現在の3番目のサーバ10.1.17.224に渡して管理し、まずマスタの領域プロファイルをvim/var/named/google編集する.zone
サブドメインのプライマリプロファイルの変更
新しいエリアファイルtech.google.zone、権限を設定します
サブドメインでのテスト
権威応答として提示する
次は親ドメインでテストします.
親ドメインで正常にテストされました
四、viewビュー機能
ネットワークアドレスソースによってDNSを異なるアドレスに解析することができ、CDN加速に使用することができ、bindはACL機能をサポートし、異なるACLを通じて異なるネットワークを定義する.
#yum -y install bind
プライマリファイルの保存パス:
/etc/named.confプライマリプロファイル
/var/named領域ファイル格納パス
/etc/rndc.conf /etc/rndc.key rndcプロファイルとKEY保存パス
順方向領域:FQDNアドレスをIPレコードに変換する
逆方向領域:IPアドレスをFQDNに逆解する
レコードタイプ:Aレコード:addressドメイン名対応IPアドレス
NSレコード:name serverドメイン名サービスレコード,ドメイン名に対応するドメイン名解析サーバに対応するサーバを指定する
一般的にドメイン名のDNSサーバーで、ここではAレコードを使用して、ペアで表示する必要があります
CNAME:別名レコード、異なるドメイン名を
MXレコード:メール交換レコード(mail exchange)、ここでメール交換のドメイン名を指定します.ここに優先順位があります.
レベル、数字が小さいほど優先度が高くなります.例えば、複数のメールサーバがある場合、優先度の高いサーバが先に受信されます.
SOA:Start of Authority、一般的な書式は:
google.com. IN SOA ns1.google.com. adminmail.google.com
そのうちgoogle.com.@で代用することができて、第4項はNS記録で、最後の項は管理者のメールボックスで、@は特殊な意義があって、使います.に代わる
serialはシーケンスを更新し、シーケンス番号が変更された場合、サーバからリフレッシュ時間になるとプライマリサーバから同期します
Refreshのリフレッシュ時間が長く、プライマリ・サーバからサーバが同期する間隔
Retry再試行時間が長く、サーバーからプライマリサーバーとの同期に失敗した後、どのくらい後に再試行されますか?
expireは失効時間が長く、サーバからプライマリサーバとの通信に失敗し、応答がなく、expireまで時間が長くなると、服から
が無効になり、ゾーンファイルが削除されます.
na ttl解析できないアドレスのキャッシュ時間
デフォルトの単位は秒で、M(分)、H(時間)、D(日)、W(週)を使用できます.
TTL値:DNSキャッシュの時間、デフォルト単位は秒
領域タイプ:
hint:ルート領域、一般用.表示
マスター:メインエリア
slave:スレーブ領域,声名スレーブ領域タイプの場合,マスター領域のアドレスmasters{Master_IP;}を指名しなければならない.
forward:ドメイン名の解析を担当せず、指定したDNSサーバにドメイン名の解析のみを渡す転送領域
一、単一サーバー構成
次はgoogle.comを例にとると、ローカルセグメントは10.1.0.0/16,ns 1である.google.com(10.1.17.221)はNSサーバ、www.google.com(10.1.17.221),mail.google.com(10.1.17.222)、www 2はwwwの別名で、まずvim/etc/named.conf
listen-on port 53 { 10.1.17.221; }; # , IP, 127.0.0.1
directory "/var/named"; # ,
allow-query { 10.1.0.0/16; }; # , , any
zone "google.com" IN {
type master;
file "google.zone";
};
# , /var/named/google.zone
zone "17.1.10.in-addr.arpa" IN {
type master;
file "zone.google";
};
# ,.in-addr.arpa , 17.1.10 10.1.17
/var/namedの下に入ってgoogleを新規作成します.zoneファイル
$TTL 7200
google.com. IN SOA ns1.google.com. adminmail.google.com. (
2015100301
2H
5M
1W
4H )
IN NS ns1
IN MX 10 mail
ns1 IN A 10.1.17.221
www IN A 10.1.17.221
mail IN A 10.1.17.222
www2 IN CNAME WWW
Googleを編集します.zoneファイルのプロパティ
#chmod 640 google.zone
#chown root:named google.zone
Google.zoneはzoneとしてコピーします.Googleで編集
#cp -p google.zone zone.google
#vim zone.google
$TTL 7200
@ IN SOA ns1.google.com. adminmail.google.com. (
2015100301
2H
5M
1W
4H )
@ IN NS ns1.google.com.
221 IN PTR ns1.google.com.
221 IN PTR www.google.com.
222 IN PTR mail.google.com.
プロファイルを確認し、ファイアウォールを開き、電源を入れて起動します.
#named-checkconf
#systemctl enable named
ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service'
#firewall-cmd --permanent --add-service=dns
success
#firewall-cmd --reload
success
#named-checkzone google.com /var/named/google.zone
zone google.com/IN: loaded serial 2015100301
OK
#named-checkzone 17.1.10.in-addr.arpa /var/named/zone.google
zone 17.1.10.in-addr.arpa/IN: loaded serial 2015100301
OK
# systemctl start named
dig解析の使用
dig -t A www.google.com @10.1.17.221
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A www.google.com @10.1.17.221
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53996
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 7200 IN A 10.1.17.221
;; AUTHORITY SECTION:
google.com. 7200 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 7200 IN A 10.1.17.221
;; Query time: 0 msec
;; SERVER: 10.1.17.221#53(10.1.17.221)
;; WHEN: Sat Oct 03 18:16:06 CST 2015
;; MSG SIZE rcvd: 93
dig -t NS google.com @10.1.17.221
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t NS google.com @10.1.17.221
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35541
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN NS
;; ANSWER SECTION:
google.com. 7200 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 7200 IN A 10.1.17.221
;; Query time: 0 msec
;; SERVER: 10.1.17.221#53(10.1.17.221)
;; WHEN: Sat Oct 03 18:16:49 CST 2015
;; MSG SIZE rcvd: 73
逆解10.1.17.222
dig -x 10.1.17.222 @10.1.17.221
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -x 10.1.17.222 @10.1.17.221
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46954
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;222.17.1.10.in-addr.arpa. IN PTR
;; ANSWER SECTION:
222.17.1.10.in-addr.arpa. 7200 IN PTR mail.google.com.
;; AUTHORITY SECTION:
17.1.10.in-addr.arpa. 7200 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 7200 IN A 10.1.17.221
;; Query time: 0 msec
;; SERVER: 10.1.17.221#53(10.1.17.221)
;; WHEN: Sat Oct 03 18:17:37 CST 2015
;; MSG SIZE rcvd: 116
二、主従配置
現在、サーバーが1台追加され、IPアドレスは10.1.17.249です.
#yum -y install bind
#systemctl enable bind
#firewall-cmd --permanent --add-service=dns
success
# firewall-cmd --reload
success
マスター上のgoogleを構成します.zoneエリアファイル、2行を追加し、サーバからのnsレコードを定義し、シーケンス番号を2015100302に変更
google.com. IN NS ns2
ns2 IN A 10.1.17.249
新しいロードプロファイル#systemctl restart namedから
サーバからのプロファイル/etc/namedを構成する.conf
listen-on port 53 { 10.1.17.249; };
allow-query { 10.1.0.0/16; };
zone "google.com" IN {
type slave;
masters { 10.1.17.221; };
file "slaves/google.zone";
};
zone "17.1.10.in-addr.arpa" IN {
type slave;
masters { 10.1.17.221; };
file "slaves/zone.google";
};
zoneファイルを新規作成せずにnamedサービスを開始
#systemctl start named
#tail -n 30 /var/log/messages
Oct 3 10:54:48 sunny named[70231]: zone google.com/IN: transferred serial 2015100301
Oct 3 10:54:48 sunny named[70231]: transfer of 'google.com/IN' from 10.1.17.221#53: Transfer completed: 1 messages, 8 records, 224 bytes, 0.002 secs (112000 bytes/sec)
Oct 3 10:54:48 sunny named[70231]: zone 17.1.10.in-addr.arpa/IN: Transfer started.
Oct 3 10:54:48 sunny named[70231]: transfer of '17.1.10.in-addr.arpa/IN' from 10.1.17.221#53: connected using 10.1.17.249#54080
Oct 3 10:54:48 sunny named[70231]: zone 17.1.10.in-addr.arpa/IN: transferred serial 2015100301
Oct 3 10:54:48 sunny named[70231]: transfer of '17.1.10.in-addr.arpa/IN' from 10.1.17.221#53: Transfer completed: 1 messages, 6 records, 207 bytes, 0.002 secs (103500 bytes/sec)
/var/named/slavesディレクトリの表示
# ll slaves/
total 8
-rw-r--r--. 1 named named 401 Oct 3 10:54 google.zone
-rw-r--r--. 1 named named 333 Oct 3 10:54 zone.google
エリアファイルが転送されました
dig -t ns google.com @10.1.17.249
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t ns google.com @10.1.17.249
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33041
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN NS
;; ANSWER SECTION:
google.com. 7200 IN NS ns2.google.com.
google.com. 7200 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 7200 IN A 10.1.17.221
ns2.google.com. 7200 IN A 10.1.17.249
;; Query time: 0 msec
;; SERVER: 10.1.17.249#53(10.1.17.249)
;; WHEN: Sat Oct 03 11:01:46 CST 2015
;; MSG SIZE rcvd: 107
プライマリスレーブ同期に成功しました.ここで注意したいのは、NSレコードを追加する場合、ゾーンファイルのserialシリアル番号を+1操作する必要があります.これにより、サーバから同期したことをアクティブに通知できます.そうしないと、リフレッシュ時間まで同期する必要があります.
三、転送サーバーの設定
dnssec関連の構成をプライマリプロファイルで変更する必要があります
dnssec-lookaside auto;
ゾーンファイルの定義
zone "google.com" IN {
type forward;
forward first;
forwarders { 10.1.17.221; };
};
firstオプションは先に転送を表し、転送が無効な場合はルートにクエリーを行い、もう一つのオプションはonlyで、転送のみを表す
forwardersは、どのDNSサーバに転送を要求するかを表します.
dig -t A mail.google.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A mail.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51515
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mail.google.com. IN A
;; ANSWER SECTION:
mail.google.com. 7200 IN A 10.1.17.222
;; AUTHORITY SECTION:
google.com. 7200 IN NS ns2.google.com.
google.com. 7200 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns2.google.com. 7200 IN A 10.1.17.249
ns1.google.com. 7200 IN A 10.1.17.221
;; Query time: 2 msec
;; SERVER: 10.1.17.224#53(10.1.17.224)
;; WHEN: Sat Oct 03 11:47:31 CST 2015
;; MSG SIZE rcvd: 128
3台目のマシンでテストを行い、正常に表示できます
四、サブドメインの定義
現在tech.googleというサブドメインがあります.com.現在の3番目のサーバ10.1.17.224に渡して管理し、まずマスタの領域プロファイルをvim/var/named/google編集する.zone
$TTL 7200
google.com. IN SOA ns1.google.com. adminmail.google.com. (
2015100303
2H
5M
1W
4H )
IN NS ns1
IN MX 10 mail
google.com. IN NS ns2
tech IN NS ns1.tech
ns1.tech IN A 10.1.17.224
ns2 IN A 10.1.17.249
ns1 IN A 10.1.17.221
www IN A 10.1.17.221
mail IN A 10.1.17.222
www2 IN CNAME WWW
# , tech ns A , dnssec-enable no;dnssec-validation no; no
サブドメインのプライマリプロファイルの変更
zone "tech.google.com" IN {
type master;
file "tech.google.zone";
};
新しいエリアファイルtech.google.zone、権限を設定します
$TTL 7200
@ IN SOA ns1.tech.google.com. admin.tech.google.com. (
2015100301
2H
5M
1W
4H )
IN NS ns1
ns1 IN A 10.1.17.224
info IN A 10.1.17.226
www IN A 10.1.17.225
サブドメインでのテスト
dig -t A www.tech.google.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A www.tech.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62468
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.tech.google.com. IN A
;; ANSWER SECTION:
www.tech.google.com. 7200 IN A 10.1.17.225
;; AUTHORITY SECTION:
tech.google.com. 7200 IN NS ns1.tech.google.com.
;; ADDITIONAL SECTION:
ns1.tech.google.com. 7200 IN A 10.1.17.224
;; Query time: 0 msec
;; SERVER: 10.1.17.224#53(10.1.17.224)
;; WHEN: Sat Oct 03 14:39:37 CST 2015
;; MSG SIZE rcvd: 98
権威応答として提示する
次は親ドメインでテストします.
dig -t A www.tech.google.com @10.1.17.221
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A www.tech.google.com @10.1.17.221
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23320
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.tech.google.com. IN A
;; ANSWER SECTION:
www.tech.google.com. 7183 IN A 10.1.17.225
;; AUTHORITY SECTION:
tech.google.com. 6832 IN NS ns1.tech.google.com.
;; ADDITIONAL SECTION:
ns1.tech.google.com. 6832 IN A 10.1.17.224
;; Query time: 0 msec
;; SERVER: 10.1.17.221#53(10.1.17.221)
;; WHEN: Sat Oct 03 22:38:38 CST 2015
;; MSG SIZE rcvd: 98
親ドメインで正常にテストされました
四、viewビュー機能
ネットワークアドレスソースによってDNSを異なるアドレスに解析することができ、CDN加速に使用することができ、bindはACL機能をサポートし、異なるACLを通じて異なるネットワークを定義する.
#vim /etc/named.conf
acl intranet { 10.1.0.0/16; };
acl internet { ! 10.1.0.0/16; any; };
view "lan" {
match-client { "intranet" };
zone "google.com" IN {
type master;
file "google.zone.lan";
};
};
view "wan" {
match-client { "internet" };
zone "17.1.10.in-addr.arpa" IN {
type master;
file "google.zone.wan";
};
};
zone , A , DNS