DNS服务器bind9用法

BIND9(Berkeley Internet Name Domain, version 9)是当前最广泛使用的开源DNS服务器软件,由Internet Systems Consortium(ISC)开发和维护

主要功能:

  • BIND9的主要作用是域名解析,将域名转换为计算机可识别的IP地址实现互联网通信的基础服务

主要特性:

  • 管理特定域名的DNS记录
  • 响应其他DNS服务器的查询请求
  • 支持主从服务器架构
  • 为客户端提供完整的域名解析服务
  • 缓存查询结果提高性能
  • 支持DNSSEC安全扩展
  • 将查询转发到其他DNS服务器
  • 实现本地DNS缓存加速

应用场景:

  • 企业内网:搭建内部DNS服务,管理内部域名
  • 互联网服务:作为公共DNS服务器(如Google DNS、Cloudflare DNS基于BIND)
  • 域名注册商:为注册的域名提供权威解析
  • CDN服务:实现智能DNS解析和负载均衡

本例子中演示服务器系统为ubuntu,环境准备:

IP192.168.51.246192.168.51.252192.168.49.224
用途主DNS服务器从DNS服务器应用服务器

1、先安装bind9,执行如下命令:

apt install -y bind9 bind9-utils

安装后会自动启动,如图:

2、/etc/bind目录下有多个配置文件,如图:

  • named.conf​ – 主配置文件,通过include语句包含其他配置文件,定义服务器运行的基本框架
  • named.conf.options​ – 全局选项配置文件,定义监听设置、访问控制、转发器、递归查询、DNSSEC等全局参数
  • named.conf.local​ – 本地区域配置文件,用于定义服务器管理的权威DNS区域(正向和反向解析)
  • named.conf.default-zones​ – 默认区域配置文件,包含localhost、广播地址等系统默认的DNS区域定义
  • db.local​ – localhost正向解析文件,将localhost解析为127.0.0.1
  • db.127​ – 127.0.0.0/8网段的反向解析文件,用于本地回环地址的反向解析
  • db.0​ – 0.0.0.0/8网段的反向解析文件
  • db.255​ – 255.255.255.0网段的反向解析文件
  • db.empty​ – 空区域文件模板,用于创建新的区域文件
  • rndc.key​ – 远程名称守护进程控制密钥文件,用于rndc工具与named进程的安全通信
  • bind.keys​ – 根区域信任锚点文件,包含根DNS服务器的公钥,用于DNSSEC验证
  • zones.rfc1918​ – RFC 1918私有地址空间定义文件,包含10.0.0.0/8、172.16.0.0/12、192.168.0.0/16等私有网段的区域定义,通常用于防止私有地址泄露到公网

实际部署时,named.conf.options和named.conf.local是最频繁修改的配置文件,区域文件则根据业务需求动态更新

3、编辑全局配置文件,添加内容如下:

options {
	directory "/var/cache/bind";
        listen-on port 53 {127.0.0.1;192.168.51.246;};
        allow-query {
           192.168.51.0/24;
           192.168.49.0/24;    
        };
        recursion yes;
	forwarders {
	    8.8.8.8;
            8.8.4.4;
	};
	dnssec-validation auto;

	listen-on-v6 { any; };
};
  • directory:指定BIND9的工作目录,DNS缓存、动态区域文件、临时文件存放位置
  • listen-on:指定监听的IP地址和端口,只允许这两个监听DNS查询
  • allow-query:允许查询的客户端IP范围,其余网段IP将会被拒绝,默认为any(所有)
  • recursion yes:启用递归查询功能,当客户端查询的域名不在本地权威区域时,BIND9会向其他DNS服务器查询,如果设为no,只响应本地权威区域的查询,生产环境建议谨慎开启,防止DNS放大攻击
  • forwarders:指定上游DNS服务器,当递归查询时,优先查询8.8.8.8和8.8.4.4
  • dnssec-validation auto:DNSSEC验证设置,防止DNS欺骗和缓存投毒攻击,auto(自动),yes(强制),no(不验证)
  • listen-on-v6:监听所有IPv6接口,如果不需要IPv6支持,可设为none

4、编辑区域配置文件name.conf.local,如下:

zone "oa.com" {
    type master;                    # 主服务器类型
    file "/etc/bind/oa.com.zone"; # 区域文件路径
    allow-transfer { 192.168.51.252; }; # 允许传输到从服务器

    notify yes;                     # 启用区域变更通知

    #also-notify {ip1;ip2;ip3;};                   
};
  • zone:定义区域名字,这个名字要和oa.com.zone中的保持一直
  • type:类型为主DNS服务器
  • file:定义区域文件路径,这里就是写具体的域名和IP映射
  • allow-transfer:从服务器
  • notify yes: 如果变更了通知从服务器
  • also-notify:额外通知的服务器,没有就注释掉

5、创建oa.com.zone区域文件,内容如下:

$TTL    604800
@       IN      SOA     ns1.oa.com. admin.oa.com. (
                              2025121901         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
; Name Server Records
@       IN      NS      ns1.oa.com.
@       IN      NS      ns2.oa.com.

; Mail Exchange Records
@       IN      MX      10 mail.oa.com.

; Address Records
@       IN      A       192.168.1.10
ns1     IN      A       192.168.1.10
ns2     IN      A       192.168.1.20
www     IN      A       192.168.49.224
abcd    IN      A       192.168.49.224

; IPv6 Address Records
www     IN      AAAA    2001:db8::1

; Canonical Name Records
web     IN      CNAME   www.oa.com.
imap    IN      CNAME   mail.oa.com.

; Text Records
@       IN      TXT     "v=spf1 a mx ~all"
_dmarc  IN      TXT     "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

; Service Records
_sip._tcp  IN  SRV  10 60 5060 sip.oa.com.
  • TTL:DNS缓存时间,默认是秒
  • ns1.oa.com. : 主权威DNS服务器,要以点(.) 结尾表示绝对域名
  • 管理员邮箱,格式:admin.oa.com.对应 admin@oa.com,@符号用点(.)表示

标签