bind9安装

1. 安装

apt install bind9

2. 配置bind9

2.1 配置bind9工作模式

vi /etc/bind/named.conf.options
  • directory: 定义区域文件的存放目录。

  • listen-on: 定义BIND监听的IP地址。可以使用any监听所有地址或使用特定IP地址。

  • allow-query: 定义允许查询BIND服务的客户端IP地址或网段。同样可以使用any允许所有客户端查询。

  • recursion: 定义是否允许递归查询。通常设置为yes以提供递归解析服务。

  • forward: 定义是否启用转发功能,以及转发到的DNS服务器地址。

root@u20svr:/etc/bind# cat /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
​
        // 设置监听的ip和端口
        listen-on port 53 {
            127.0.0.1;
            any;
        };
​
         // 设置允许查询的客户端范围
         allow-query { any; };
​
        // 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;
             192.168.1.1;
             223.5.5.5;
             8.8.8.8;
        };
​
        //========================================================================
        // 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;
​
        auth-nxdomain no;  // 对于 NXDOMAIN 响应使用标准的域名未找到响应
​
        listen-on-v6 { any; };
};

2.2 自定义域名解析

修改文件。

mkdir /etc/bind/zones
vi /etc/bind/named.conf.local

修改之后,

root@u20svr:/etc/bind# cat /etc/bind/named.conf.local
//
// Do any local configuration here
//
​
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
​
 域名--》ip
zone "wll.com" {
        type master;
        /// xx.wll.com -->ip-x映射
        file "/etc/bind/zones/db.wll.com";  ;区域文件
};
​
​
ip--> 域名
zone "10.x.in-addr.arpa"{
        type master;
        file "/etc/bind/zones/db.10.x"; ;区域文件
};
2.2.1 参数

zone语句块用于定义一个DNS区域。每个区域都需要指定区域名称和区域类型(如主区域、从区域等)。常见的参数包括:

  • name: 定义区域的名称,通常为域名。

  • type: 定义区域的类型,如master(主区域)、slave(从区域)等。

  • file: 定义存储区域数据的文件名。该文件应位于由options语句块中的directory选项指定的目录中。

  • allow-update: 定义允许动态更新区域数据的客户端地址或网段。

2.3 区域文件

2.3.1 域名到ip(区域文件)
cp /etc/bind/db.local /etc/bind/zones/db.wll.com
vi /etc/bind/zones/db.wll.com

修改之后,

root@u20svr:/etc/bind# cat /etc/bind/zones/db.wll.com
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     wll.com.  wll.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      wll.com.
@       IN      NS      pi2.wll.com.
@       IN      NS      pi3.wll.com.
​
dns.wll.com.     IN      A       192.168.1.190
pi2.wll.com.     IN      A       192.168.1.190
pi3.wll.com.     IN      A       10.9.9.3
;*      IN      A       10.9.9.3

泛解析

root@u20svr:/etc/bind# cat /etc/bind/zones/db.wll.com
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     wll.com.  wll.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      wll.com.
@       IN      NS      pi2.wll.com.
@       IN      NS      pi3.wll.com.
​
dns.wll.com.     IN      A       192.168.1.190
pi2.wll.com.     IN      A       192.168.1.190
pi3.wll.com.     IN      A       10.9.9.3
*      IN      A       10.9.9.3  ;泛解析

2.3.1.1 配置文件配置检查
named-checkzone wll.com /etc/bind/zones/db.wll.com

成功示例:

root@u20svr:/etc/bind# named-checkzone wll.com /etc/bind/zones/db.wll.com
zone wll.com/IN: loaded serial 3
OK

2.3.1.2 参数
2.3.1.2.1 SOA记录

SOA记录:起始授权记录 Start of Authority record 宣告了namespace使用哪个nameserver的权威信息。须位于指令后第一行,是区域文件的第一个资源记录。格式如下:

@  IN  SOA  primary-name-server hostmaster-email (
       serial-number
       time-to-refresh
       time-to-retry
       time-to-expire
       minimum-TTL )

@ 表示使用域名作为这个 SOA 的 namespace。

    primary-name-server:该域权威DNS的主名称服务器的主机名
    hostmaster-email:该namespace联系人邮件

    serial-number:序列号,每次此区域文件被修改后,该序列号应该增加,以此提醒域名服务要重新加载该区域了。代表着当前数据库文件的新旧, 该值越大表示当前数据库的配置越新,一般来说这个值设定的值遵循 YYYYMMMMDDDD 的格式; 这个数值必须小于 4294967296;
    time-to-refresh 规定了Resource Record 的失效时间,即当前资源记录能够被缓存的时间长短,默认的单位为秒,能够设定的最大时间长度是 32 bit 的整形变量 ( 0 到 4294967295 ),单位是秒;更新的频率,设置 Slave DNS 服务器 去向 主服务器 进行配置更新的周期;
    Retry- 失败重新尝尝试时间,如果 Slave 服务器无法对 Master 进行链接,则需要设置这个值规定多长时间进行一次重试连接;
    Expire - 是失效时间,如果一直失败连接,那么这个配置规定了重试连接的最大时间;

示例

@       IN      SOA     wll.com.  wll.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

2.3.1.2.2 NS记录

Name Server Records 定义了在当前 DNS服务器 中的 NS 的 IP地址,在每一个 zone file 中必须指定 主/从 域名解析器的IP地址, 使用 A 记录,这个IP地址必须与你搭建的DNS服务器保持一致;

NS记录: 名称服务器记录指定了权威名称服务器。格式如下:

IN NS nameserver-name   ;nameserver-name 应该是完全域名(FQDN)。

每个区域配置文件都必须包含至少一个NS记录。

示例

@       IN      NS      wll.com.

示例

@				IN			NS			ns.domain.com.

2.3.1.2.3 A记录

Address Records 记录了 域名 与 IP 地址的对应关系;

A 记录:给名称指定解析地址。格式如下:

hostname IN A IP-address

示例

pi3.wll.com.     IN      AAAA    10.9.9.3  ;pi3.wll.com

示例

ns.domain.com.				IN			A			192.168.1.1

2.3.2 ip到域名(区域文件)
cp /etc/bind/db.127 /etc/bind/zones/db.10.x
vi /etc/bind/zones/db.10.x

修改之后,

 

2.3.2.1 配置文件配置检查
named-checkzone wll.com /etc/bind/zones/db.10.x

失败示例

root@u20svr:/etc/bind# named-checkzone wll.com /etc/bind/zones/db.10.x
zone wll.com/IN: has no NS records
zone wll.com/IN: not loaded due to errors.

3. bind9生效

service bind9 restart

查看bind9工作状态

service bind9 status

示例

/etc/bind# service bind9 status
● named.service - BIND Domain Name Server
     Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-08-31 12:39:19 UTC; 3min 10s ago
       Docs: man:named(8)
   Main PID: 11742 (named)
      Tasks: 14 (limit: 6968)
     Memory: 6.8M
     CGroup: /system.slice/named.service
             └─11742 /usr/sbin/named -f -u bind

Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:500:1::53#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:7fd::1#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:500:a8::e#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:dc3::35#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:503:ba3e::2:30#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:500:9f::42#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:500:12::d0d#53
Aug 31 12:39:19 u20svr named[11742]: network unreachable resolving './NS/IN': 2001:500:2::c#53
Aug 31 12:39:19 u20svr named[11742]: managed-keys-zone: Key 20326 for zone . is now trusted (acceptance timer complete)
Aug 31 12:39:19 u20svr named[11742]: resolver priming query complete: success

3.1 ubuntu被占用53端口

查看当前53端口是否被占用。

netstat -ntulp |grep 53

停止systemd-resolved.service服务。

systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service
systemctl restart NetworkManager.service

3.2 异常处理

查看bind9错误的原因:

cat /var/log/syslog
或
service bind9 status

3.2.1 权限异常
xxx@u20svr:/etc/bind$ ll /usr/sbin/named
-rwxr-xr-x 1 root root 579160 Jul 16 18:48 /usr/sbin/named*

解决方法

chmod 777 /usr/sbin/named

修改后,如下:

xxx@u20svr:/etc/bind#  ls /usr/sbin/named -ld
-rwxrwxrwx 1 root root 579160 Jul 16 18:48 /usr/sbin/named

3.2.2 端口冲突
netstat -ntulp | grep 53

3.3 本机dns不可用

测试DNS是否可用。

dig  www.baidu.com

ubuntu会使用默认的配置

# cat /etc/resolv.conf

nameserver 127.0.0.53
options edns0 trust-ad

修改

vi /etc/resolv.conf

修改之后

# cat /etc/resolv.conf

nameserver 127.0.0.1
nameserver 127.0.0.53
options edns0 trust-ad

4. 验证测试

dig www.baidu.com
dig pi3.wll.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值