全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux下BIND安装与配置详解

时间:2025-07-08 09:31

人气:

作者:admin

标签: DNS  Linux  服务器  软件包 

导读:通过网络源或挂载的光盘安装 BIND。...

案例:BIND 安装与配置详解

一、安装 BIND软件包

1.安装 BIND 软件包

• 通过网络源或挂载的光盘安装 BIND:

yum installbind-y

• 或者通过 RPM 包安装,前提是挂载系统盘 ISO 镜像:

`rpm -ivh bind-x.x.x-x.el7.x86_64.rpm`

2.查看 BIND 配置文件路径

rpm -qcbind

该命令显示 BIND 安装后的配置文件路径,重要的几个讲解:

•/etc/named.conf:主配置文件,控制 BIND 服务的全局设置。 该文件用于配置 DNS 服务器的行为,如区域(zones)、转发器(forwarders)、ACL(访问控制列表)等。

•/etc/named.rfc1912.zones- 区域配置文件,控制具体区域。专门用于定义 BIND 服务器中使用的区域(zone)。

•/var/named/named.localhost- 区域数据文件,存储区域信息。

二、配置 BIND 主服务器(正向解析)

本节环境

主服务器:20.0.0.11

客户端:Windows 10Linux

1.修改主配置文件
编辑/etc/named.conf文件,配置监听端口、区域数据存放位置及允许查询的网段:

`vim /etc/named.conf`
主要修改以下几项:

配置示例

options {
  listen-on port 53 { 20.0.0.100; }; 
 # ☆☆☆修改:监听53端口,指定本地IP,也可用any表示所有IP。
 
 # listen-on-v6 port 53 { ::1; };
 # ipv6行如不使用可以注释掉或者删除。
 
  directory"/var/named"; 
 # 区域数据文件的默认存放位置。
 
  dump-file"/var/named/data/cache_dump.db"; 
 # 缓存数据库文件位置。
 
  statistics-file"/var/named/data/named_stats.txt"; 
 # 状态统计文件位置。
 
  memstatistics-file"/var/named/data/named_mem_stats.txt"; 
 # 内存统计文件位置。
 
 # allow-query { 20.0.0.0/24; 172.16.100.0/24; }; 
  allow-query { any; };
 # ☆☆☆修改:允许访问本DNS解析服务的网段,也可用any表示所有。
};










监听端口和 IP 地址:指定 BIND 服务监听的端口和 IP 地址。

区域数据文件的存储路径:指定区域数据文件的存储目录。

允许查询的网段:定义允许访问 DNS 服务的客户端网段。

2.配置根区域
在named.conf中定义根区域,根区域用于处理域名解析的根请求:

zone"."IN {    # 正向解析“."根区域
 typehint;   # 类型为根区域(索引)
  file"named.ca";# 区域数据文件为named.ca
};
# named.ca文件记录了13台根域服务器的域名和IP地址等信息

include"/etc/named.rfc1912.zones"; 
# 包含区域配置文件中的所有配置,存储了标准的区域配置。

3.配置正向区域

`vim /etc/named.rfc1912.zones`

提示:vim编辑器的使用

配置示例

zone"my.com"IN {
 # ☆修改:正向解析"benet.com"区域
 
 typemaster;   
 # 声明该区域是主区域
 
  file"my.com.zone";
 # ☆修改:区域数据文件的路径,相对于/var/named路径目录,可以加个.
 
  allow-update { none; };
 # 不允许自动更新区域数据
};


• 定位到起始行:j或k上下移动,G直接跳行

• 进入可视模式:V进可视行模式,高亮显示当前行

• 选择多行:j向下选行,按一次选一行

• 复制选中的行:选中,按y进行复制到剪贴板

• 移动到粘贴位置:移动到要粘贴的位置

• 粘贴复制的行:p粘贴。当前行上方使用P大P。

• 编辑区域配置文件/etc/named.rfc1912.zones,文件里有模版,可复制粘贴后修改,添加正向解析区域:

4.配置正向区域数据文件

cd/var/named/
cp-p named.localhost my.com.zone
# 保留源文件的权限和属主的属性复制
vim my.com.zone

数据文件通常包括 SOA 记录、NS 记录、A 记录等。

宏定义$,注释;

配置示例

$TTL1D
# $-宏定义
# TTL(Time to Live)-缓存生存时间,表示在 DNS 服务器或客户端的缓存中,有效解析记录的生命周期
# 1D 表示 1 天,该区域数据在 1 天(1D)内有效

@ IN SOA my.com. rname.invalid (
   # @-表示该文件定义的根域名,当前的DNS区域名 
   # IN-表示“Internet”类的资源记录类型。
   # SOA-第一条解析,起始记录的解析
   ## admin-主机名、服务名
   
  0    ; serial 
 # 序列号,表示该区域文件的版本,每次修改后应增加
 
  1D   ; refresh 
 # 刷新时间,告知从服务器多久查询一次主服务器
 
  1H   ; retry  
 # 重试时间,从服务器未联系到主服务器后的重试间隔
 
  1W   ; expire 
 # 过期时间,从服务器未能更新后,缓存数据的有效期
 
  3H )  ; minimum 
 # 最小TTL值,未命中的缓存记录的生存时间
 
NS my.com. 
# 定义此区域的名称服务器

A 20.0.0.11
# A-将域名映射到IPV4
# 为域名 my.com 设置IP地址

## MX 10 mail.my.com. 
## 定义邮件交换记录

www IN A 20.0.0.20
# 定义子域名 www 的 A 记录

## mail IN A 20.0.0.20 
## 定义子域名 mail 的 A 记录

ftp IN CNAME www 
# CNAME-别名,将 ftp 子域名设置为 www 子域名的别名

* IN A 20.0.0.20
# *-通配符,匹配所有未明确定义的子域名,泛域名









![]()

内容解释:

@: 代表当前区域的根域名。

• 在 DNS 区域文件中,@代表该文件定义的根域名,也就是当前区域的名称。在实际使用中,@将被解析为文件顶部定义的域名。

• 例如,如果区域文件顶部定义的域名是example.com., 那么@就代表example.com.。

IN: 表示记录的类别,一般为互联网(Internet),通常情况下使用IN。

• 表示“Internet”类(Internet Class)的资源记录类型。在大多数情况下,DNS 记录都使用IN,因为它表示记录属于互联网的标准 DNS 记录类型。

• 除了IN之外,还有其他类,如CH(用于 CHAOS 类),但它们非常少见。

SOA (Start of Authority): 表示该 DNS 区域的起始记录,包含了该区域的主要信息,如序列号、刷新时间等。

•SOA是“Start of Authority”的缩写,表示权威起始记录。每个 DNS 区域文件必须包含一个且只有一个 SOA 记录。

•SOA记录包含了一些重要信息,如主服务器的名称、负责人的电子邮件地址、区域的序列号、刷新时间、重试时间、过期时间和最小 TTL(生存时间)值。

NS (Name Server): 指定负责该区域的名称服务器。

A (Address Record): 将域名映射到 IPv4 地址。

CNAME (Canonical Name Record): 将一个域名作为别名指向另一个域名。

MX (Mail Exchange Record): 指定处理电子邮件的邮件服务器。

TTL (Time to Live): 指定 DNS 记录在缓存中保留的时间长度,超过时间后需要重新查询。

• 在/var/named/目录下创建或修改区域数据文件,这个文件包含域名与 IP 地址的映射关系,可以直接复制改名原模板:

5.检查启动文件格式

named-checkzone my.com /var/named/my.com.zone

# 输出:
zone my.com/IN: loaded serial 0
O

• 检查:

6.启动 BIND 服务并关闭防火墙

`systemctl start named`
systemctl stop firewalld
setenforce 0 # 关闭 SELinux

注意:若服务启动失败,可以查看日志文件排查错误,如果服务卡住,执行第二行命令解决:

tail-f /var/log/messages
rndc-confgen -r /dev/urandom -a

netstat -natpul | grep 53

`named-checkconf -z /etc/named.conf`

• 对域名语法进行检查(named.conf):

• 检查端口,确认启动成功

• 关闭防火墙以确保 DNS 服务的正常运行:

• 启动 BIND 服务:

7.客户端配置和测试DNS解析(Windows)启动同网段下的客户端,以Windows为例

# 以我的网络环境为例,做如下配置
IP   20.0.0.120 # 同网段即可
NETMASK 255.255.255.0
GATEWAY 20.0.0.11 # 指向DNS服务器
DNS   20.0.0.11
nslookup www.my.com # 解析www域名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:www.my.com
Address:20.0.0.20

nslookup ftp.my.com # 解析ftp的别名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:www.my.com
Address:20.0.0.20

nslookup aa.my.com # 解析泛域名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:www.my.com
Address:20.0.0.20








![]()

都可以看到返回服务器地址,测试成功

• cmd使用nslookup命令测试:

• 在Windows下更改网卡配置:

8.客户端配置和测试DNS解析(Linux)

vim /etc/resolv.conf
nameserver 20.0.0.11
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=20.0.0.11
systemctl restart network
host www.my.com
nslookup www.my.com

• 使用host或nslookup命令测试 DNS 解析是否成功:

• 或者在网络接口配置文件中添加 DNS 服务器地址,修改后需重启网卡:

• 编辑客户端的/etc/resolv.conf文件,添加 DNS 服务器地址:

三、配置反向解析

本节环境

主服务器:20.0.0.11

客户端:Windows 10 或 Linux

1.配置反向区域

`vim /etc/named.rfc1912.zones`

在此文件中定义 IP 地址段的区域信息。同样复制模版修改。

配置示例

zone"0.0.20.in-addr.arpa"IN {
 # 此处 20.0.0.0 反向为 0.0.20
 # 再如:192.168.10.0 反向则是 10.168.192

 typemaster;
 # 定义主区域
 
  file"my.com.zone.local";
 # 反向解析的数据文件
 
  allow-update { none; };
 # 禁止自动更新
};









![]()

• 编辑区域配置文件/etc/named.rfc1912.zones,添加反向解析区域:

2.配置反向区域数据文件

cd/var/named/
cp-p my.com.zone my.com.zone.local
vim my.com.zone.local

数据文件中通常包含 IP 地址与域名的映射。

配置示例

$TTL1D
@ IN SOA my.com. rname.invalid. (
# 点.必须加上,否则报错,下同
  0    ; serial # 序列号
 # 更新序列号,10位以内数字,用于主从同步,主服务器这个数值要大于从服务器否则无法同步
 
  1D   ; refresh # 刷新时间
  1H   ; retry  # 重试时间
  1W   ; expire # 过期时间
  3H )  ; minimum # 最小TTL
NS my.com.
100 IN PTR www.my.com. 
# 将IP地址的最后一段(100)解析为www.my.com

200 IN PTR mail.my.com. 
# 将IP地址的最后一段(200)解析为mail.my.com

# 20是192.168.10.20的意思
# RTP反向指针 功能:反向解析









![]()

• 创建或修改反向区域数据文件:

3.启动 BIND 服务

`systemctl restart named`

• 启动或重启 BIND 服务:

4.测试反向解析(Windows)以Windows为例,确保网卡配置信息无误:

# 以我的网络环境为例,做如下配置
IP   20.0.0.120 # 同网段即可
NETMASK 255.255.255.0
GATEWAY 20.0.0.11 # 指向DNS服务器
DNS   20.0.0.11
nslookup 20.0.0.100 # 解析末段为 100 IP地址的域名
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:www.my.com
Address:20.0.0.100

nslookup 20.0.0.200 # 解析末段为 200 IP地址的域名
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:mail.my.com
Address:20.0.0.200








![]()

可以看到返回服务器地址和域名信息,测试成功

• cmd使用nslookup命令测试:

5.测试反向解析(Linux)

`host 20.0.0.100`

若没问题将会反向解析出域名www.my.com。

• 使用host命令测试反向解析,测试IP地址是否正确解析为域名:

四、配置主从 DNS 服务器及自动同步

本节环境

主服务器:20.0.0.11

从服务器:20.0.0.12

客户端:Windows 10 或 Linux

1.主服务器配置

options {
  listen-on port 53 { any; };
  allow-query { any; };
};

zone"my.com"IN {
 typemaster;# 类型为主区域
  file"my.com.zone";
  allow-transfer { 20.0.0.12; };
};       # 设置从服务器地址 

# 反向解析没有配置,这段关系不大
zone"0.0.20.in-addr.arpa"IN {
 typemaster;
  file"my.com.zone.local";
  allow-transfer { 20.0.0.12; };
};









![]()
cd/var/named/
cp-p name.localhost my.com.zone
vim /var/named/my.com.zone

配置示例(只有正向解析,无反向解析)

$TTL1D                      #有效解析记录的生存周期
@ inSOA my.com. rname.invalid ( 
#“@"符号表示当前的DNS区域名
     
     0  ; serial 
     #更新序列号,可以是10位以内的整数
     1D  ; refresh     
     #刷新时间,重新下载地址数据的间隔
     1H  ; retry      
     #重试延时,下载失败后的重试间隔
     1W  ; expire      
     #失效时间,超过该时间仍无法下载则放弃#
          3H) ; minimum     
         #无效解析记录的生存周期
         
    NS   my.com.          
   #记录当前区域的DNS服务器的名称
   
    A   20.0.0.11         
   #记录主机IP地址

IN  MX 10  mail.my.com.      
#MX为邮件交换记录,数字越大优先级越低

www IN A   20.0.0.11
#记录正向解析www.benet.com对应的IP

mail IN A   20.0.0.22       
#MX为邮件交换记录,数字越大优先级低

ftp IN CNAME www         
#CNAME使用别名,ftp 是www的别名

*  IN A  20.0.0.30
#泛域名解析,“*"代表任意主机名,给一个不存在的地址









![]()

• 配置正向区域数据文件my.com.zone,带属性拷贝编辑:

• 编辑区域配置文件/etc/named.rfc1912.zones,添加从服务器地址:

• 修改/etc/named.conf,允许所有网段查询:

2.从服务器配置

yum install -ybind
vim /etc/named.conf

#编辑后可以使用named-checkconf语法检查,后面参数可省
named-checkconf -z /etc/named.conf

配置示例

options {
  listen-on port 53 { 20.0.0.12; };
 # 监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
 
 #listen-on-v6 port 53 { ::1; };  
 # ipv6行如不使用可以注释掉或者删除
 
  directory"/var/named";
 # 区域数据文件的默认存放位置
 
  dump-file"/var/named/data/cache_dump.db";      
 # 域名缓存数据库文件的位置
 
    statistics-file"/var/named/data/named_stats.txt";    
   # 状态统计文件的位置

    memstatistics-file"/var/named/data/named mem_stats.txt";  
   # 内存统计文件的位置
 
  allow-query { any; };
 # 允许使用本DNS解析服务的网段,也可用any代表所有
}; 









![]()
`vim /etc/named.rfc1912.zones`

配置示例

zone"my.com"IN {
 typeslave;# 类型为从区域
  file"slaves/my.com.zone";
 # 下载的区域数据文件保存到slaves/目录下
 
 #allow-update { none; };
 # 此行必须删掉,用于配置主服务器的动态更新DNS记录
 
  masters { 20.0.0.11; };
}; # 设置主服务器地址

zone"0.0.20.in-addr.arpa"IN {
 typeslave;
  file"slaves/my.com.zone.local";
  masters { 20.0.0.11; };
};











![]()

• 编辑从服务器的区域配置文件:

• 安装 BIND 并修改配置文件:

3.启动服务并验证

systemctl restart named
ls-1 /var/named/slaves/

• 主从都重启 BIND 服务,并检查从服务器的区域数据文件是否成功下载:

4.测试(Windows)

nslookup www.my.com # 解析www域名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:www.my.com
Address:20.0.0.11

nslookup ftp.my.com # 解析ftp的别名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:www.my.com
Address:20.0.0.11

nslookup mail.my.com# 解析mail域名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:mail.my.com
Address:20.0.0.22

nslookup aa.my.com # 解析泛域名对应的IP地址
# 输出:
服务器:UnKnown
Address:20.0.0.11
名称:aa.my.com
Address:20.0.0.30








![]()

经测试,全部一一对应,是成功的

• 在cmd下使用nsloopup命令分别测试:

5.测试(Linux)

`echo"nameserver 20.0.0.11">> /etc/resolv.conf` 
host 20.0.0.12
host www.my.com
nslookup 20.0.0.11

• 测试

• 在Linux的域名解析配置文件中添加从DNS服务器地址

6.模拟故障

`systemctl stop named`

注意:在Windows端需将从DNS服务器IP设置为首选DNS,否则无论是重启还是中断主DNS服务器网络,Windows系统都只认首选,备选不会选择,暂时未解决。Linux未测试。

• 再在Windows端测试

• 停止主服务器的服务,模拟主服务器故障

链接: https://blog.csdn.net/qq_44421043/article/details/141304442

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信