Centos 搭建DNS服务

简介

由于dns服务的运行过程网络上有很多,随便搜搜就能找到dns的工作流程,在这里就不多做赘述了,主要是讲怎么配置
使用Centos搭建dns服务需要使用bind服务,所以我们需要先使用yum安装bind

系统

主机 IP地址
Centos7(Server) 192.168.31.148
Ubuntu(Client) 192.168.31.234

配置

yum install -y bind //安装bind服务

如果安装失败可能是因为yum源的原因,可以试试更换yum源为国内源,配置文件在/etc/yum.repos.d/下
bind服务会产生一些文件 /etc/named.conf /etc/named.rfc1912.zones 这两个文件是dns的配置文件

options {
        listen-on port 53 { localhost; };  // 监听本地端口53  localhost代表本地所有IP地址
        directory       "/var/named"; 		// 域名解析配置文件地址
        allow-query     { localhost; any; };	// 允许查询地址  为了方便设置为any,可以设置单个IP使用分号;分割
  
        recursion yes;   // 客户机是否可以查询其他DNS服务器 我觉得最好写yes

        dnssec-enable no;  // 是否支持dnssec
        dnssec-validation no;  // 是否进行dnssec确认开关
};
// 在此配置文件中 zone 代表一个域区
zone "." IN {  // 根域
        type hint;
        // master:表示定义的是主域名服务器 
		// slave :表示定义的是辅助域名服务器 
		// hint:表示是互联网中根域名服务器 
        file "named.ca";
};
include "/etc/named.rfc1912.zones"; // 域配置文件

有一些配置因为并没有什么改动或者是不需要详细说明的就没有展示出来,不要认为这就是named.conf文件的全部了,也不要去删除这里没有的语句,保持原样就好
我们在 /etc/named.rfc1912.zones 里配置域区

正向解析

通过域名解析到IP地址
IP --> FQDN

在named.rfc1912.zones里添加下面的配置完成域区配置

zone "myjinji.top" IN {  // 声明myjinji.top域
        type master;   // 主域名服务器
        file "myjinji.top.zone";  // 域配置文件
};

因为 named.conf include的原因,其实在named.conf里配置域区也是可以的,但是推荐在专门的文件里配置,这样显得更规范
那么域区已经声明完毕了,光声明不行,我们还得告诉客户端,如果你想访问 myjinji.top 就去找哪个IP
在上面的 named.conf 里,我们设置了域解析文件目录在 /var/named/下,所以我们需要进入这个文件夹内,配置我们的域解析文件

cd /var/named/
cp -p named.localhost myjinji.top.zone

因为我个人比较懒,不想重头开始写,于是就拷贝一份默认的配置文件然后进行修改,注意后面的文件名一定要和前面声明域区时的文件 保持一致 不然会导致无法解析,因为bind不知道myjnji.top的域解析文件在哪

myjinji.top.zone 文件是这样的 ↓

$TTL 1D  // 生命缓存一天 全局继承
// 在zone文件中注释是以 “;”开始的
// SOA为起始授权记录 
// 第一个@表示当前域myjinji.top
// 第二个@表示dns服务器 rname.invalid.为邮箱服务器  注意主机名后面必须有.
@       IN SOA  @ rname.invalid. ( 
                                        0       ; serial  // 序列号
                                        1D      ; refresh // 刷新时间
                                        1H      ; retry // 重试时间
                                        1W      ; expire // 过期时间
                                        3H )    ; minimum // 否定答案的TTL值
// 一条完整的语句应该是 @ 时间 IN NS @这样的 因为zone文件的规则是,上一句写了后面的就可以不写,继承上一句的属性
// DNS解析服务器
        NS      @
        A       127.0.0.1 // A记录
        AAAA    ::1  // IPv6

我们需要修改一下 myjinji.top.zone 使它满足我们的需求

$TTL 1D
@       IN SOA  ns.myjinji.top. rname.invalid. ( // dns解析服务器就是我们自己
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns // 承接上面的ns
@       A       192.168.31.148  // 将当前域解析到192.168.31.148 也就是myjinji.top
www     A       192.168.31.148  // 其实这是一种简写 应该是这样的www.myjinji.top.
ns      A       192.168.31.148 // 定义 NS ns
demo    CNAME    www // CNAME别名 在解析demo时转发到www上

就这样正向解析就完成了,我们需要使用两个命令检查我们的配置是否有误

测试

named-checkzone myjinji.top /var/named/myjinji.top.zone  // 检查与myjinji.top对应的域解析文件

named-checkconf  // 检查配置文件

如果都没有问题的话我们就可以重启服务验证是否正确了
换到客户端Ubuntu上,注意一定要配置dns服务器为本地服务器,否则会解析不到我们的测试地址 修改/etc/resolv.conf nameserver 为192.168.31.148
使用nslookup命令解析myjinji.top
ceshi

反向解析

通过IP解析到域名
FQDN --> IP
还是在/etc/named.rfc1912.zones里配置我们的反向域配置

// 格式为IP地址.in-addr.arpa 注意IP地址一定要反着写
// 比如 我的IP地址是192.168.31.148/24 所以格式就应该是 31.168.192.in-addr.arpa
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
添加一个
zone "31.168.192.in-addr.arpa" IN {
		type master;
		file "192.168.31.zone";
};

接着在/var/named/文件夹下复制named.loopback

// 注意这个文件也得和named.rfc1912.zones里声明的文件名一致
cp -p /var/named/named.loopback /var/named/192.168.31.zone

于是复制好的192.168.31.zone文件内容应该是这样的:

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost. // PTR反向解析

修改为:


$TTL 1D
@       IN SOA  ns.myjinji.top. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.myjinji.top.    // 注意后面都需要 .
148		PTR		ns.myjinji.top.  // 192.168.31.148 解析了ns.myjinji.top.
148     PTR     www.myjinji.top.  // 192.168.31.148 解析了www.myjinji.top.
148		PTR		demo.myjinji.top. // 192.168.31.148 解析了demo.myjinji.top.

测试

named-checkzone "31.168.192.in-addr.arpa" 192.168.31.zone

在这里插入图片描述

在这里插入图片描述

总结

自己学习的时候网上的教程五花八门,配置起来很麻烦,于是我自己琢磨了一天才搞明白这个服务到底是怎么运转的
在学习的时候遇到了很多问题,比如zone文件的编写 SOA NS A 这些都挺奇怪的,还有@所代表的含义,配置好几次都不成功,气的我想捶桌子(;´д`)ゞ 不过还好,我静下心来仔细琢磨,终于成功了。
所以说学技术的时候一定不能急躁

个人笔记,不喜勿喷(`・ω・´)

# Linux  Service  DNS 

标题:Centos 搭建DNS服务
作者:bogendihong
地址:https://myjinji.top/articles/2020/04/02/1585800289945.html

评论

取消