BindでDNSサーバー導入
Contents
DNS (Domain Name System) サーバー (RockyLinux ,AlmaLinux, MiracleLinux)
今回は以下のような環境で内部ネットワーク向けの設定をする
MiracleLinux8.6
BIND 9.11.36
ローカルネットワーク [192.168.11.0/24]
ドメイン [korodes.jp]
サーバー#1
IPアドレス 192.168.11.83
ホスト名 aaa
サーバー#2
IPアドレス 192.168.11.84
ホスト名 www
サーバー#1にDNSサーバーを導入する
1.ドメイン、ネットワークの設定
1.1 BIND をインストール
1 |
# dnf -y install bind bind-utils |
1.2 ローカルネットワーク、ドメイン名の設定
1 |
# vi /etc/named.conf |
変更内容
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind/sample/ for example named configuration files.
//
//追記
acl mynetwork {
192.168.11.0/24;
};
options {
listen-on port 53 { any; }; ← 変更
listen-on-v6 port 53 { none; }; ← 変更(IPv6でリスンしない)
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; mynetwork; }; ← 追記
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable recursion.
- If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to
your legitimate users. Failing to do so willca use your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/*https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
//以下ネットワークとドメイン名の定義追記
zone "korodes.jp" IN {
type master;
file "korodes.jp.lan";
allow-update { none; };
};
zone "11.168.192.in-addr.arpa" IN {
type master;
file "11.168.192.db";
allow-update { none; };
};
1.3 IPv4 のみの使用に限定する場合
1 2 |
# vi /etc/sysconfig/named OPTIONS="-4" ← 変更 |
2.ゾーンファイルの設定
2.1、正引き情報(ホスト名から IP アドレスを解決する)のゾーンファイルを新規作成
1 |
# vi /var/named/korodes.jp.lan |
内容
$TTL 86400
@ IN SOA aaa.korodes.jp. root.korodes.jp. (
2019100301 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS aaa.korodes.jp. ←ネームサーバーを定義
IN A 192.168.11.83 ←ネームサーバーのIPアドレス
IN MX 10 aaa.korodes.jp. ←メールサーバーを定義
// ホスト名 IPアドレスの関連付け
aaa IN A 192.168.11.83
www IN A 192.168.11.84
2.2 逆引き情報(IP アドレスからホスト名を解決する)のゾーンファイルを新規作成
1 |
# vi /var/named/11.168.192.db |
内容
$TTL 86400
@ IN SOA aaa.korodes.jp. root.korodes.jp. (
2019100301 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS aaa.korodes.jp. ←ネームサーバーを定義
//IP アドレスとホスト名の関連付け
83 IN PTR aaa.korodes.jp.
84 IN PTR www.korodes.jp.
3. 起動と名前解決の動作確認
3.1 BIND の起動と自動起動
1 |
# systemctl enable named |
3.2 Firewalld を有効にしている場合、DNSサービス[53/TCP,UDP]を許可
1 2 3 4 |
# firewall-cmd --add-service=dns --permanent success # firewall-cmd --reload success |
3.3 名前解決の参照先を自ホストに変更(インターフェース名 ens160とする)
1 2 3 4 |
# nmcli connection modify ens160 ipv4.dns 192.168.11.83 # nmcli connection down ens160; nmcli connection up ens160 接続 'ens160' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/2) 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3) |
3.4 名前解決ができるか動作確認
[ANSWER SECTION] に結果が表示されていれば OK
正引き確認
# dig aaa.korodes.jp.
; <<>> DiG 9.11.36-RedHat-9.11.36-5.el8.2 <<>> aaa.korodes.jp.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51556
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 2a249d0b180598a492acb1dd63d139cb017f27ca0c17a954 (good)
;; QUESTION SECTION:
;aaa.korodes.jp. IN A
;; ANSWER SECTION:
aaa.korodes.jp. 86400 IN A 192.168.11.83
;; AUTHORITY SECTION:
korodes.jp. 86400 IN NS aaa.korodes.jp.
;; Query time: 0 msec
;; SERVER: 192.168.11.83#53(192.168.11.83)
;; WHEN: 水 1月 25 23:16:43 JST 2023
逆引き確認
# dig -x 192.168.11.83
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3415
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9e8077208394a3a198e0d8fc63d13ae567905240c6dfe4b7 (good)
;; QUESTION SECTION:
;83.11.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
83.11.168.192.in-addr.arpa. 86400 IN PTR aaa.korodes.jp.
;; AUTHORITY SECTION:
11.168.192.in-addr.arpa. 86400 IN NS aaa.korodes.jp.
;; ADDITIONAL SECTION:
aaa.korodes.jp. 86400 IN A 192.168.11.83
;; Query time: 0 msec
;; SERVER: 192.168.11.83#53(192.168.11.83)
;; WHEN: 水 1月 25 23:21:25 JST 2023
;; MSG SIZE rcvd: 141
DNS (Domain Name System) サーバー (Ubuntu,Debian)
今回は以下のような環境で内部ネットワーク向けの設定をする
Ubuntu22.04
BIND 9.18.1
ローカルネットワーク [192.168.11.0/24]
ドメイン [korodes.jp]
サーバー#1
IPアドレス 192.168.11.83
ホスト名 aaa
サーバー#2
IPアドレス 192.168.11.84
ホスト名 www
サーバー#1にDNSサーバーを導入する
1.ドメイン、ネットワークの設定
1.1 BIND をインストール
1 |
# apt -y install bind9 bind9utils |
1.2 ローカルネットワーク、ドメイン名の設定
1 |
# vi /etc/bind/named.conf |
変更内容
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, BEFORE you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.internal-zones"; ←追記
1 |
# vi /etc/bind/named.conf.options |
変更内容
追記 : ローカルネットワークを定義
acl mynetwork {
192.168.11.0/24;
};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
# 定義したローカルネットワークを追記
allow-query { localhost; mynetwork; };
# 追記 : 再帰的な検索を許可する
recursion yes;
//======================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//======================================================================
dnssec-validation auto;
# IPV6 を利用しないので[none] に変更
listen-on-v6 { none; };
};
1 2 |
定義したnamed.conf.internal-zonesを新規作成 # vi /etc/bind/named.conf.internal-zones |
内容
zone "korodes.jp" IN {
type master;
file "/etc/bind/korodes.jp.lan";
allow-update { none; };
};
zone "11.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/11.168.192.db";
allow-update { none; };
};
1.3 IPv4 のみの使用に限定する場合
1 2 |
# vi /etc/default/named OPTIONS="-u bind -4" ← 変更 |
2.ゾーンファイルの設定
2.1、正引き情報(ホスト名から IP アドレスを解決する)のゾーンファイルを新規作成
1 |
# vi /etc/bind/korodes.jp.lan |
内容
$TTL 86400
@ IN SOA aaa.korodes.jp. root.korodes.jp. (
2019100301 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS aaa.korodes.jp. ←ネームサーバーを定義
IN A 192.168.11.83 ←ネームサーバーのIPアドレス
IN MX 10 aaa.korodes.jp. ←メールサーバーを定義
// ホスト名 IPアドレスの関連付け
aaa IN A 192.168.11.83
www IN A 192.168.11.84
2.2 逆引き情報(IP アドレスからホスト名を解決する)のゾーンファイルを新規作成
1 |
# vi /var/named/11.168.192.db |
内容
$TTL 86400
@ IN SOA aaa.korodes.jp. root.korodes.jp. (
2019100301 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS aaa.korodes.jp. ←ネームサーバーを定義
//IP アドレスとホスト名の関連付け
83 IN PTR aaa.korodes.jp.
84 IN PTR www.korodes.jp.
3. 起動と名前解決の動作確認
3.1 BIND の起動と自動起動
1 2 3 |
# systemctl enable named Synchronizing state of named.service with SysV service script with /lib/systemd/systemd-sysv-install.<br>Executing: /lib/systemd/systemd-sysv-install enable named |
3.2 Firewalld を有効にしている場合、DNSサービス[53/TCP,UDP]を許可
1 2 3 4 5 |
# apt install firewalld # firewall-cmd --add-service=dns --permanent success # firewall-cmd --reload success |
3.3 名前解決ができるか動作確認
[ANSWER SECTION] に結果が表示されていれば OK
正引き確認
# dig aaa.korodes.jp.
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> aaa.korodes.jp.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54564
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;aaa.korodes.jp. IN A
;; ANSWER SECTION:
aaa.korodes.jp. 86400 IN A 192.168.11.83
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jan 26 10:22:11 JST 2023
;; MSG SIZE rcvd: 59
逆引き確認
# dig -x 192.168.11.83
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> -x 192.168.11.83
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4610
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;83.11.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
83.11.168.192.in-addr.arpa. 86400 IN PTR aaa.korodes.jp.
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jan 26 10:23:31 JST 2023
;; MSG SIZE rcvd: 83