0%

内网DNS建设

内网DNS建设

官网文档:https://bind9.readthedocs.io/en/latest/index.html

编译安装

  1. 基础环境准备

    1
    2
    3
    4
    5
    6
    yum 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
  2. 创建用户

    1
    2
    groupadd -g 53 -r named
    useradd -u 53 -s /sbin/nolgin -r named -g named
  3. 下载 Bind9 源码包,解压缩:

    1
    2
    3
    4
    cd /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
  4. 配置编译选项:

    1
    ./configure --prefix=/data/servers/bind

    配置选项说明:

    • --prefix:指定安装目录。
  5. 编译并安装:

    1
    2
    make
    make install
  6. 配置环境变量:

    1
    2
    echo 'export PATH=$PATH:/data/servers/bind/bin::/data/servers/bind/sbin' >> /etc/profile
    source /etc/profile
  7. 配置服务参数

    1
    2
    3
    cd /data/servers/bind
    sbin/rndc-confgen > etc/rndc.conf
    tail -10 etc/rndc.conf | head -9 | sed s/#\ //g > etc/named.conf
  8. 修改文件权限

    1
    2
    3
    4
    mkdir -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/
  9. 启动 Bind9 服务:

    1
    2
    3
    named -u named -g

    netstat -anp|grep 53

至此,Bind9 已经编译安装完成。

解析配置

在 Bind9 中增加域名解析配置的步骤如下:

  1. 编辑 named.conf 文件:

    1
    vi /usr/local/bind/etc/named.conf
  2. 在 options 块中增加以下配置:

    1
    forwarders { 8.8.8.8; 8.8.4.4; };

    配置说明:

    • forwarders:指定 DNS 转发服务器的 IP 地址。这里使用 Google 的公共 DNS 服务器。
  3. 在 zone 块中增加以下配置:

    1
    2
    3
    4
    5
    zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-update { none; };
    };

    配置说明:

    • zone:指定要解析的域名。
    • type:指定域名的类型,这里为主域名。
    • file:指定存储域名记录的文件。
    • allow-update:指定允许更新域名记录的 IP 地址,这里禁止更新。
  4. 创建域名记录文件:

    1
    vi /data/servers/bind/etc/example.com.zone
  5. 在域名记录文件中增加以下配置:

    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 地址。
  6. 重启 Bind9 服务:

    1
    /usr/local/bind/sbin/rndc reload
  7. 验证

    1
    nslookup www.example.com 127.0.0.1

至此,Bind9 的域名解析配置已经增加完成。

配置示例

/data/servers/etc/named.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
key "rndc-key" {
algorithm hmac-sha256;
secret "N2GIE1hpF3c+naH3jeiTW9USzeBUojWiDOwoCQYGNpw=";
};

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

options {
directory "/data/servers/bind/var/run";
pid-file "named.pid";
recursion yes;
allow-query { any; };
listen-on port 53 { any; };
};

logging {
channel query_log {
file "/data/logs/bind/query.log" versions 5 size 50m;
print-time yes;
severity info;
};
category queries { query_log;};
channel server_log {
file "/data/logs/bind/server.log" versions 5 size 50m;
print-time yes;
severity info;
};
category default { server_log;};
};

include "/data/servers/bind/etc/named.example.zones";

/data/servers/named.example.zones

1
2
3
4
5
6
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
allow-transfer { 172.20.3.61; };
};

/data/servers/bind/var/run/example.com.zone

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$TTL 60
@ IN SOA example.com. root.example.com. (
2023060114 ; Serial
10 ; Refresh
60 ; Retry
60 ; Expire
60 ; Minimum TTL
)

@ IN NS ns1.example.com.

ns1 IN A 172.22.0.75
www IN A 172.22.0.75
www2 IN A 172.22.0.75
www3 IN A 172.22.0.75
ops IN A 172.20.3.66
ideploy IN A 172.20.3.66
iwiki IN A 172.20.3.66
ijira IN A 172.20.3.66