BIND9 安装

# CentOS
yum -y install bind bind-utils

# Ubuntu
apt -y install bind9

BIND9 相关文件

Ubuntu

最常用的几个:

  • 改配置基本只动 /etc/bind/named.conf.local 和 named.conf.options
  • 自己加区域文件一般都放在 /etc/bind/zones/ 目录下(自己新建),然后在 named.conf.local 里 include
  • 主程序是 /usr/sbin/named
  • 运行数据都在 /var/cache/bind
# dpkg -L bind9
/etc/bind/named.conf                # BIND9 主配置文件,所有配置的入口
/etc/bind/named.conf.options        # 全局选项配置(如监听地址、递归、DNSSEC等)
/etc/bind/named.conf.local          # 用户自定义区域文件,通常放你自己添加的zone
/etc/bind/named.conf.default-zones  # Debian/Ubuntu 默认预定义的几个基本zone(如localhost、127.0.0.1)
/etc/bind/bind.keys                 # DNSSEC 信任锚(trust anchors),存放根区KSK公钥
/etc/bind/db.0                      # 根区提示文件(root hints),告诉BIND根服务器在哪里
/etc/bind/db.127                    # 127.0.0.1 反向解析区(localhost)
/etc/bind/db.local                  # 本地环回正向解析区(localhost -> 127.0.0.1)
/etc/bind/db.empty                  # 空区模板,经常用来做黑洞/空区
/etc/bind/db.255                    # 广播地址反向区(255.255.255.255)
/etc/bind/zones.rfc1918             # RFC1918 私有地址空区配置(10/172.16/192.168 返回NXDOMAIN,防泄漏)

/etc/default/named                  # Debian/Ubuntu 启动参数配置(如是否启用chroot、额外选项)

/usr/sbin/named                     # BIND9 主程序(DNS服务器守护进程)
/usr/sbin/ddns-confgen               # 生成动态更新用的TSIG密钥工具(替代tsig-keygen)
/usr/sbin/tsig-keygen               # 生成TSIG密钥工具(已软链接到ddns-confgen)

/usr/bin/named-rrchecker            # 检查资源记录语法是否正确的工具
/usr/bin/named-journalprint         # 打印journal文件内容(查看zone动态更新历史)
/usr/bin/named-nzd2nzf              # 把.nzd格式区文件转成普通zone格式
/usr/bin/arpaname                   # ARPA域名转punycode工具(很少用)
/usr/bin/nsec3hash                  # 生成NSEC3 hash工具(DNSSEC相关)
/usr/bin/dnssec-importkey           # 把DNSKEY导入trusted-keys格式的工具

/var/cache/bind                     # 默认工作目录,存放动态zone的.jnl文件、统计数据、缓存等

/lib/systemd/system/named.service   # systemd 服务单元文件(启动named)
/lib/systemd/system/named-resolvconf.service # 与resolvconf集成的小服务

/etc/apparmor.d/usr.sbin.named      # AppArmor 安全策略文件(限制named权限)

/usr/lib/x86_64-linux-gnu/bind/filter-a.so      # view/filter功能用的过滤模块(过滤A记录)
/usr/lib/x86_64-linux-gnu/bind/filter-aaaa.so   # 同上,过滤AAAA记录(IPv6)

/usr/share/doc/bind9/NEWS.Debian.gz          # Debian 特定版本的重要更新说明(必看)
/usr/share/doc/bind9/changelog.Debian.gz     # Debian 打包历史变更记录
/etc/ufw/applications.d/bind9       # UFW 防火墙预定义规则(方便一键开放53端口)

CentOS

# rpm -ql bind
...
/etc/named.conf #主配置文件
/usr/lib/systemd/system/named.service #主程序
/var/named/named.ca #根DNS服务器的地址
/var/named #主DNS数据库的存放路径(区域数据库)
...

BIND9 配置文件说明

  • 实现简单网络访问(通过查找根DNS服务器的方式实现)
# /etc/named.conf
options {
...
    directory 	"/var/named"; # 区域数据库的存放路径
	# 将下面两行注释掉效果一样
    listen-on port 53 { localhost; }; # localhost 等于 0.0.0.0
    allow-query     { any; }; # any表示允许所有人使用此DNS,也可以写成10.0.0.0/24,表示哪个网段访问
    allow-transfer {  none; }; # 设置不允许其它主机进行区域传输,在作为主DNS服务器时 可以只允许从DNS服务器进行区域传输,即把none改为从DNS的IP

BIND9 相关工具

# 检查配置文件语法
named-checkconf


# 检查区域数据库的语法,第一个xiangzheng.org表示在配置文件中定义的名称
named-checkzone xiangzheng.org /var/named/xiangzheng.org.zone
named-checkzone xiangzheng.org /var/cache/bind/xiangzheng.com.zone.bind

# 重新加载BIND DNS,等价于systemctl restart named,但rndc依赖于 tcp/953 端口
rndc reload