CentOS7上でDNSサーバ構築
bindを使用してのDNSサーバを構築手順を記載していきます。
IPアドレスやドメイン名等はご自身の環境に置き換えてください。
内容の細かな説明等は省略しています。
設定は検証用の設定です。
1. パッケージなどを最新の状態にする
yum install update
2. bindのインストール
yum install bind
3. bind-chrootのインストール
yum install bind-chroot
4. bind-utilsのインストール
yum install bind-utils
5. named-chrootの自動起動
systemctl start named-chroot
systemctl status named-chroot
systemctl enable named-chroot
6. 正引きゾーンファイルの作成・編集
cd /var/named/chroot/var/named
cp -ip named.localhost test.local.zone
vim test.local.zone
下記のIPアドレスやドメイン名等はご自身の環境に合わせてください。
test.local.zone
$TTL 1D
@ IN SOA ns.test.local. root.test.local. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.test.local.
IN MX 10 mail.test.local.
@ IN A 192.168.1.13
ns IN A 192.168.1.13
mail IN A 192.168.1.13
7. 設定ファイルの構文が正しいかチェック
named-checkzone test.local /var/named/chroot/var/named/test.local.zone
エラーではなく、OKが出れば問題ないです。
8. /etc/resolv.confの編集
/etc/resolv.confに今回のDNSサーバのIPアドレスを追加します。
vim /etc/resolv.conf
下記の設定に変更します。
nameserver 127.0.0.1
9. named.confの編集
- listen-on port 53をanyに変更
- allow-queryをanyに変更
- ゾーン情報の追加
- forwardersの追加
//
// 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.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
allow-query { any; };
/*
- 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 will
cause 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;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
forwarders{
8.8.8.8;
1.1.1.1;
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "test.local" IN { ←この test.local のゾーン情報を追加します。
type master;
file "test.local.zone";
allow-query {any;};
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
10. bind(named-chroot)の再起動
systemctl restart named-chroot
下記のコマンドで正常に起動できている事を確認します。
systemctl status named-chroot
11. その他の変更点
SELinuxのアクセス制限を解除
setenforce 0
firewalldの無効化
systemctl stop firewalld
12. 名前解決の確認
dig test.local
dig google.com