千家信息网

CentOS7中搭建DNS域名解析服务

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,DNS系统的作用DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户机提供正向或反向的地址查询服务。正向解析:根据主机名称(域名)查找对应的IP地址
千家信息网最后更新 2025年02月04日CentOS7中搭建DNS域名解析服务

DNS系统的作用

DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户机提供正向或反向的地址查询服务。

  • 正向解析:根据主机名称(域名)查找对应的IP地址
  • 反向解析:根据IP地址查找对应的主机域名

DNS系统类型

缓存域名服务器

  • 也称为高速缓存服务器
  • 通过向其他域名服务器查询获得域名->IP地址记录
  • 将域名查询结果缓存到本地,提高重复查询时的速度

主域名服务器

  • 特定DNS区域的官方服务器,具有唯一性
  • 负责维护该区域内多有域名->IP地址的映射记录

从域名服务器

  • 也称为辅助域名服务器
  • 其维护的域名->IP地址记录来源于主域名服务器

BIND域名服务

BIND不是唯一能够提供域名服务的DNS程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux主机中。

安装BIND软件

[root@localhost ~]# yum install bind -y    //CentOS 7连接网络,可以直接使用yum安装

BIND服务端程序

  • 主要执行程序:/usr/sbin/named
  • 默认监听端口 53
  • 主要配置文件
    • /etc/named.conf
  • 保存DNS解析记录的数据文件
    • /var/named/

主要配置文件

  • 全局配置
    • 设置DNS服务器的全局参数
    • 包括监听地址/端口、数据文件的默认位置
    • 使用options{.....};的配置端
options{    listen-on port 53 {本地IP地址} ;                  //监听地址和端口        directory  "/var/named";                       //区域数据文件的默认存放位置    allow-query  {192.168.1.0/24;173.16.16.0/24;};  //允许使用本DNS服务的网段
  • 区域配置部分

    • 设置本服务器提供域名解析的特定DNS区域

    • 包括域名、服务器角色、数据文件名等

    • 使用zone "区域名"IN{。。。};的配置段
正向解析zone "yun.com" IN {                   //正向"yun.com"区域        type master;                  //区域类型为主区域        file "yun.com.zone";           //区域数据文件为"yun.com.zone"        allow-transfer {173.16.16.2};  //允许下载的从服务器地址};反向解析zone "16.16.173.in-addr.arpa" IN {     //反向"173.16.16.0/24"区域        type master;        file "173.16.16.arpa";         //区域数据文件为"173.16.16.arpa"        allow-update { none; };};
  • 区域数据配置文件

    全局TTL配置项及SOA记录 SOA:资源起始记录

$TTL 1D                                 //有效解析记录的生存周期@       IN SOA  @ rname.invalid. (      //SOA标记、域名、管理邮箱0       ; serial                        //更新序列号,可以是10位以内的整数1D      ; refresh                       //刷新时间,重新下载地址数据的间隔1H      ; retry                         //重试延时,下载失败后的重试间隔1W      ; expire                        //失效时间,超过该时间仍无法下载则放弃3H )    ; minimum                       //无效解析记录的生存周期

​ 域名解析记录

NS:域名服务器记录 (Name Service)MX:邮件交换记录 (Mail Exchange)A:地址记录,只用在正向解析区域中 (Address)CNAME:别名记录(Canonical Name)"*"  IN IP:泛域名解析PTR:指针记录,只用反向解析区域中记录的第一列指定IP地址中的主机地址部分即可

DNS配置文件

  • /etc/named.conf 主要配置文件 控制系统全局 (include 包含)

  • /etc/named.rfc1912.zones 区域配置文件 控制具体单个区域

  • /var/named/named.localhost 区域数据配置文件 区域信息

搭建DNS服务

正向解析配置

1、安装BIND软件

[root@localhost ~]# yum install bind -y已加载插件:fastestmirror, langpacksbase                                                                                                   | 3.6 kB  00:00:00     extras                                                                                                 | 3.4 kB  00:00:00     updates                                                                                                | 3.4 kB  00:00:00     (1/4): base/7/x86_64/group_gz                                                                          | 166 kB  00:00:00     (2/4): extras/7/x86_64/primary_db                                                                      | 215 kB  00:00:00 ...//省略部分内容...已安装:  bind.x86_64 32:9.9.4-74.el7_6.2                                                                                             作为依赖被升级:  bind-libs.x86_64 32:9.9.4-74.el7_6.2   bind-libs-lite.x86_64 32:9.9.4-74.el7_6.2  bind-license.noarch 32:9.9.4-74.el7_6.2   bind-utils.x86_64 32:9.9.4-74.el7_6.2 完毕!

2、查看配置文件的存放位置,方便我们编辑配置文件

[root@localhost named]# rpm -qc bind/etc/logrotate.d/named/etc/named.conf                 //主配置文件位置/etc/named.iscdlv.key/etc/named.rfc1912.zones        //区域配置文件位置/etc/named.root.key/etc/rndc.conf/etc/rndc.key/etc/sysconfig/named/var/named/named.ca/var/named/named.empty/var/named/named.localhost     //区域数据配置文件/var/named/named.loopback

3、更改主配置文件(此处主要修改缉监听地址和权限开发两处)

[root@localhost named]# vim /etc/named.conf ...//省略部分内容...// See the BIND Administrator's Reference Manual (ARM) for details about the// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions {        listen-on port 53 { 192.168.144.133; };     //修改地址为监听自己的本地地址        listen-on-v6 port 53 { ::1; };        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";        recursing-file  "/var/named/data/named.recursing";        secroots-file   "/var/named/data/named.secroots";        allow-query     { any; };                //权限放开,允许任何的主机都可以使用DNS服务        /*          - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.        ...//省略部分内容...        pid-file "/run/named/named.pid";        //进程文件的存放位置,不要改动        session-keyfile "/run/named/session.key";};logging {        channel default_debug {                file "data/named.run";                severity dynamic;        };};zone "." IN {                         //根域服务器的解析,不要改动        type hint;        file "named.ca";};include "/etc/named.rfc1912.zones";     //著配置文件包含的数据文件信息,不要更改include "/etc/named.root.key";

4、修改主配置文件包含的区域配置文件信息

[root@localhost named]# vim /etc/named.rfc1912.zones// named.rfc1912.zones://// Provided by Red Hat caching-nameserver package//// ISC BIND named zone configuration for zones recommended by// RFC 1912 section 4.1 : localhost TLDs and address zones// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt// (c)2007 R W Franks//// See /usr/share/doc/bind*/sample/ for example named configuration files.//zone "localhost.localdomain" IN {        type master;                   //正向解析文件的配置模板               file "named.localhost";              allow-update { none; };};                                       //正向解析区域配置文件位置zone "localhost" IN {        type master;        file "named.localhost";        allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {        type master;                     //ipv6解析文件的配置模板        file "named.loopback";        allow-update { none; };};                                       //反向解析区域配置文件位置zone "1.0.0.127.in-addr.arpa" IN {        type master;        file "named.loopback";         //反向解析文件的配置模板        allow-update { none; };
...//省略部分内容...// See /usr/share/doc/bind*/sample/ for example named configuration files.//zone "localhost.localdomain" IN {        type master;        file "named.localhost";        allow-update { none; };};zone "localhost" IN {        type master;        file "named.localhost";        allow-update { none; };};zone "kgc.com" IN {               //复制模板,更改区域名        type master;        file "kgc.com.zone";      //更改区域数据文件名        allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {        type master;        file "named.loopback";        allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN {        type master;      ...//省略部分内容...  

5、创建区域数据文件,使区域文件可以读取数据文件

[root@localhost named]# cd /var/named/    //进入区域数据文件存放目录[root@localhost named]# ls                //查看目录信息data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves[root@localhost named]# cp -p named.localhost kgc.com.zone  //递归复制,创建kgc.com.zone文件[root@localhost named]# ls    //查看是否创建kgc.com.zone文件data  dynamic  kgc.com.zone  named.ca  named.empty  named.localhost  named.loopback  slaves[root@localhost named]# vim kgc.com.zone   //编辑区域数据文件$TTL 1D@       IN SOA  kgc.com. admin.kgc.com. (            //更改域名、管理邮箱,主要后面的"."不能少                                        0       ; serial                                        1D      ; refresh                                        1H      ; retry                                        1W      ; expire                                        3H )    ; minimum        NS      kgc.com.            //更改域名服务器记录地址        A       192.168.144.133     //更改正向解析条目地址IN MX   10      mail.kgc.com.       //添加邮件交换记录地址www IN  A       192.168.100.99      //添加www域名的解析地址ftp IN  A       192.168.100.88      //添加ftp域名解析地址smtp IN CNAME   www                 //添加别名解析记录*  IN   A       8.8.8.8              //添加泛域名解析地址~                                                                                         ~                                :wq   //保存退出

6、关闭防火墙与增强安全功能,方便客户端访问,然后启动DNS服务。

[root@localhost named]# systemctl stop firewalld.service   //关闭防火墙[root@localhost named]# setenforce 0                       //关闭增强型安全更能[root@localhost named]# systemctl start named              //启动DNS服务[root@localhost named]# systemctl status named             //查看服务● named.service - Berkeley Internet Name Domain (DNS)   //DNS正常启动   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)   Active: active (running) since 四 2019-09-05 17:36:31 CST; 11s ago  Process: 7425 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)  Process: 7422 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 7427 (named)   CGroup: /system.slice/named.service           └─7427 /usr/sbin/named -u named -c /etc/named.conf9月 05 17:36:31 localhost.localdomain named[7427]: managed-keys-zone: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone 0.in-addr.arpa/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone kgc.com/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone localhost.localdomain/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0...ial 09月 05 17:36:31 localhost.localdomain named[7427]: zone localhost/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: all zones loaded9月 05 17:36:31 localhost.localdomain named[7427]: running9月 05 17:36:31 localhost.localdomain systemd[1]: Started Berkeley Internet Name Domain (DNS).Hint: Some lines were ellipsized, use -l to show in full.[root@localhost named]# echo "nameserver 192.168.144.133" > /etc/resolv.conf //覆盖域名解析地址文件信息,因为我们自己搭建的DNS服务器就要解析我们自己的地址,所以这边直接覆盖掉域名解析地址文件[root@localhost named]# cat /etc/resolv.conf nameserver 192.168.144.133      //以覆盖原信息

7、使用host命令常看DNS解析服务是否搭建成功

[root@localhost named]# host www.kgc.com     //解析域名www.kgc.comwww.kgc.com has address 192.168.100.99       //成功解析IP地址[root@localhost named]# host ftp.kgc.com     //解析域名ftp.kgc.com ftp.kgc.com has address 192.168.100.88       //成功解析IP地址[root@localhost named]# host aaa.kgc.com     //泛域名解析aaa.kgc.com has address 8.8.8.8              //成功解析IP地址[root@localhost named]# host smtp.kgc.com    //别名解析smtp.kgc.com is an alias for www.kgc.com.  www.kgc.com has address 192.168.100.99       //成功解析IP地址

反向解析配置

1、继续上面的配置,进入区域配置文件中更改区域配置反向解析区域模板

[root@localhost named]# vim /etc/named.rfc1912.zones...//省略部分内容...zone "kgc.com" IN {        type master;        file "kgc.com.zone";        allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {        type master;        file "named.loopback";        allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN {        type master;        file "named.loopback";       //复制此处模板        allow-update { none; };};zone "100.168.192.in-addr.arpa" IN {    //更改区域地址,反向填写        type master;        file "yun.com.local";           //更改区域数据文件名        allow-update { none; };};zone "0.in-addr.arpa" IN {        type master;        file "named.empty";...//省略部分内容...

2、进入区域数据文件存放目录建立区域数据文件,与区域文件中更给的区域数据文件名保持一致,并进入更改区域数据文件

[root@localhost named]# cd /var/named/     //进入目录[root@localhost named]# ls                //查看data  dynamic  kgc.com.zone  named.ca  named.empty  named.localhost  named.loopback  slaves[root@localhost named]# cp -p kgc.com.zone yun.com.local   //递归复制[root@localhost named]# vim yun.com.local       //进入编辑数据信息$TTL 1D @       IN SOA  yun.com. admin.yun.com. (        //此处kgc改为yun                                        0       ; serial                                        1D      ; refresh                                        1H      ; retry                                        1W      ; expire                                        3H )    ; minimum        NS      yun.com.            //此处kgc改为yun        A       192.168.144.133 99 IN   PTR     www.yun.com.        //更改为方向解析地址88 IN   PTR     ftp.yun.com.        //更改为方向解析地址    ...//省略部分内容...

3、重启DNS服务,并检测反向解析是否创建成功

[root@localhost named]# systemctl restart named          //重启服务[root@localhost named]# host 192.168.100.99       //解析IP地址99.100.168.192.in-addr.arpa domain name pointer www.yun.com.   //成功解析出域名[root@localhost named]# host 192.168.100.88       //解析IP地址   88.100.168.192.in-addr.arpa domain name pointer ftp.yun.com.    //成功解析出域名

配置从域名服务器

1、上面我们成功创建了主服务器,这个时候我们重新开启一台CentOS 7系统,作为DNS的从服务器,查看从服务器的IP地址,并关闭防火墙功能与增强性安全功能,使此服务器方便客户机与主服务器连接

[root@localhost ~]# ifconfig                   //查看网卡信息ens33: flags=4163  mtu 1500        inet 192.168.144.135  netmask 255.255.255.0  broadcast 192.168.144.255        inet6 fe80::a85a:c203:e2e:3f3c  prefixlen 64  scopeid 0x20        inet6 fe80::ad78:663f:1f02:22e4  prefixlen 64  scopeid 0x20        ether 00:0c:29:75:9f:c8  txqueuelen 1000  (Ethernet)        RX packets 1049  bytes 1282518 (1.2 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        ...//省略部分内容...[root@localhost ~]# systemctl stop firewalld.service    //关闭防火墙[root@localhost ~]# setenforce 0                        //关闭增强性安全功能

2、在从服务器中安装BIND软件,并更改DNS配置文件信息

[root@localhost ~]# yum install bind -y      //安装DNS服务软件BIND已加载插件:fastestmirror, langpacksbase                                                      | 3.6 kB  00:00:00   extras                                                    | 3.4 kB  00:00:00     updates                                                   | 3.4 kB  00:00:00     (1/4): base/7/x86_64/group_gz                             | 166 kB  00:00:00     (2/4): extras/7/x86_64/primary_db                         | 215 kB  00:00:00  ...//省略部分内容...[root@localhost ~]# vim /etc/named.conf      //进入编辑主配置文件//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.//// See the BIND Administrator's Reference Manual (ARM) for details about the// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions {        listen-on port 53 { 192.168.144.135; };     //更改监听地址为本机地址        listen-on-v6 port 53 { ::1; };        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";        recursing-file  "/var/named/data/named.recursing";        secroots-file   "/var/named/data/named.secroots";        allow-query     { any; };                   //权限放开,允许任何的主机都可以使用DNS服务        /*          - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.         - If you are building a RECURSIVE (caching) DNS server, you need to enable            recursion. ...//省略部分内容...[root@localhost ~]# vim /etc/named.rfc1912.zones    //修改区域配置文件// RFC 1912 section 4.1 : localhost TLDs and address zones// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt// (c)2007 R W Franks//// See /usr/share/doc/bind*/sample/ for example named configuration files.//zone "localhost.localdomain" IN {        type master;        file "named.localhost";        allow-update { none; };};zone "localhost" IN {        type master;        file "named.localhost";          //复制此模板        allow-update { none; };};zone "kgc.com" IN {                   //粘贴并更新域名与主服务器相同        type slave;                   //设置类型为slave        file "slaves/kgc.com.zone";   //区域数据文件地址我们将从主服务器同步到slaves目录中        masters { 192.168.144.133; }; //删除原条目更改为指向主服务器的地址};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {        type master;        file "named.loopback";        allow-update { none; };};...//省略部分内容...[root@localhost ~]# cd /var/named      //进入区域数据文件存放目录[root@localhost named]# ls             //查看确定目录内是否有slaves命令data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves[root@localhost named]# ls slaves/    //进入目录,查看是否有内容[root@localhost named]#               //目前还没有内容

3、回到主服务器,更改配置文件,使主服务器与从服务器同步,完成后重启DNS服务

[root@localhost named]# vim /etc/named.rfc1912.zones  //编辑主服务区域配置文件//zone "localhost.localdomain" IN {        type master;        file "named.localhost";        allow-update { none; };};zone "localhost" IN {        type master;        file "named.localhost";        allow-update { none; };};zone "kgc.com" IN {        type master;        file "kgc.com.zone";        allow-transfer { 192.168.144.135; };  //此处更改为指向从服务器的地址};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {        type master;        file "named.loopback";        allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN {        type master;...//省略部分内容...[root@localhost named]# systemctl restart named    //重启DNS服务

4、回到从服务器,启动DNS服务,查看slaves目录内是否有同步的区域数据文件,然后与主服务一样编辑内容覆盖域名解析地址文件信息。

[root@localhost named]# systemctl restart named   //启动DNS服务[root@localhost named]# ls slaves/kgc.com.zone[root@localhost named]# echo "nameserver 192.168.144.135" > /etc/resolv.conf [root@localhost named]# cat /etc/resolv.confnameserver 192.168.144.135

5、使用从服务解析域名,看是否可以解析、解析结果是否相同,如果相同表示我们建立的主从服务器成功。

[root@localhost named]# host www.kgc.com        //解析域名www.kgc.comwww.kgc.com has address 192.168.100.99          //解析地址与主服务器相同[root@localhost named]# host ftp.kgc.com        //解析域名ftp.kgc.comftp.kgc.com has address 192.168.100.88          //解析地址与主服务器相同[root@localhost named]# host aaa.kgc.com        //反域名解析aaa.kgc.com has address 8.8.8.8                 //解析地址与主服务器相同[root@localhost named]# host smtp.kgc.com       //别名解析smtp.kgc.com is an alias for www.kgc.com.www.kgc.com has address 192.168.100.99          //解析地址与主服务器相同
0