内网DNS建设
官网文档:https://bind9.readthedocs.io/en/latest/index.html
编译安装
基础环境准备
1
2
3
4
5
6yum install -y epel-release
yum install -y libuv libuv-devel libnghttp2 libnghttp2-devel libcap-devel
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
pip install ply创建用户
1
2groupadd -g 53 -r named
useradd -u 53 -s /sbin/nolgin -r named -g named下载 Bind9 源码包,解压缩:
1
2
3
4cd /data/servers/bind
wget https://downloads.isc.org/isc/bind9/9.18.15/bind-9.18.15.tar.xz
tar -xvf bind-9.18.15.tar.xz
cd bind-9.18.15配置编译选项:
1
./configure --prefix=/data/servers/bind
配置选项说明:
--prefix
:指定安装目录。
编译并安装:
1
2make
make install配置环境变量:
1
2echo 'export PATH=$PATH:/data/servers/bind/bin::/data/servers/bind/sbin' >> /etc/profile
source /etc/profile配置服务参数
1
2
3cd /data/servers/bind
sbin/rndc-confgen > etc/rndc.conf
tail -10 etc/rndc.conf | head -9 | sed s/#\ //g > etc/named.conf修改文件权限
1
2
3
4mkdir -p /data/servers/bind/var/run
mkdir -p /data/logs/bind/
chown -R named:named /data/logs/bind/
chown -R named:named /data/servers/bind/启动 Bind9 服务:
1
2
3named -u named -g
netstat -anp|grep 53
至此,Bind9 已经编译安装完成。
解析配置
在 Bind9 中增加域名解析配置的步骤如下:
编辑 named.conf 文件:
1
vi /usr/local/bind/etc/named.conf
在 options 块中增加以下配置:
1
forwarders { 8.8.8.8; 8.8.4.4; };
配置说明:
forwarders
:指定 DNS 转发服务器的 IP 地址。这里使用 Google 的公共 DNS 服务器。
在 zone 块中增加以下配置:
1
2
3
4
5zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};配置说明:
zone
:指定要解析的域名。type
:指定域名的类型,这里为主域名。file
:指定存储域名记录的文件。allow-update
:指定允许更新域名记录的 IP 地址,这里禁止更新。
创建域名记录文件:
1
vi /data/servers/bind/etc/example.com.zone
在域名记录文件中增加以下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023053001 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns1.example.com.
ns1 IN A 192.168.0.1
www IN A 192.168.0.2配置说明:
$TTL
:指定 DNS 记录的 TTL 时间。SOA
:指定域名的起始授权记录。NS
:指定域名服务器的名称。A
:指定主机名的 IP 地址。
重启 Bind9 服务:
1
/usr/local/bind/sbin/rndc reload
验证
1
nslookup www.example.com 127.0.0.1
至此,Bind9 的域名解析配置已经增加完成。
配置示例
/data/servers/etc/named.conf
1 | key "rndc-key" { |
/data/servers/named.example.zones
1 | zone "example.com" IN { |
/data/servers/bind/var/run/example.com.zone
1 | $TTL 60 |