原文:(https://www.myjinji.top/articles/2020/04/02/1585800289945.html)[https://www.myjinji.top/articles/2020/04/02/1585800289945.html]

简介

由于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

反向解析

通过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 这些都挺奇怪的,还有@所代表的含义,配置好几次都不成功,气的我想捶桌子(;´д`)ゞ 不过还好,我静下心来仔细琢磨,终于成功了。

所以说学技术的时候一定不能急躁

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

centos搭建dns服务的更多相关文章

  1. 如何搭建DNS服务

    继NTP时间服务器后,继续搭建DNS服务,鉴于昨晚撰写时间超过预期,这次改变策略,先把自己需要用到的部分写出来(主要是基于RAC的搭建,只涉及正向和反向DNS解析),后面再添加必要的说明和阐述. 试验 ...

  2. 如何搭建DNS服务(转)

    继NTP时间服务器后,继续搭建DNS服务,鉴于昨晚撰写时间超过预期,这次改变策略,先把自己需要用到的部分写出来(主要是基于RAC的搭建,只涉及正向和反向DNS解析),后面再添加必要的说明和阐述. 试验 ...

  3. 搭建DNS服务

    author:JevonWei 版权声明:原创作品 修改/var/named/下的数据库文件的数据时,需手动修改serial序列号 UDP协议53端口用于用户DNS查询,TCP协议53端口用于主从DN ...

  4. 使用unbound在RHEL7上搭建DNS服务

    1.概念:DNS (Domain Name Server)域名解析服务,使用TCP&UDP的53号端口(主从DNS之间用TCP,客户端查询使用UDP).它可以完成域名与IP地址的互换,可以通过 ...

  5. 一文详解CentOS6.5搭建DNS服务

    本文详细介绍DNS服务在Linux Operation System 中的搭建过程 一.DNS服务器的工作原理 客户机提出域名解析请求,并将该请求发送给本地的域名服务器.当本地的域名服务器收到请求后, ...

  6. centos 搭建 git 服务端和客户端

    centos 搭建git需要设置远程服务端和客户端.远程代码存放在服务端,多个客户端可以共享和维护服务端代码. 一.服务端主机 1.创建ssh,大部分默认已经安装,有ssh就跳过 yum instal ...

  7. Centos 搭建DNS服务器

    1:安装DNS服务 yum install bind -y 2:修改/etc/named.conf 配置文件 listen-on port 53 { any; }; listen-on-v6 port ...

  8. Windows server 2008 搭建DNS服务

    现在用Windows搭建DNS的已经很少了,感觉也只有一些公司的某块部分能用上,最近在捣鼓这个,索性直接写下来,以后可以看了直接用. 开始: ★★★配置静态IP地址 老样子,有关服务器功能的建立,都是 ...

  9. centos搭建dns服务器

    前言:搭建dns服务器,dns服务器我就不多说什么了,大家都懂,就是域名解析,就将ip装换为域名,域名就可以理解为类似这样的www.baidu.com网址,接下来我就直接上图了.这里面最重要的是修改u ...

随机推荐

  1. 19。删除链表倒数第N个节点

    class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next# 这道题还是很简单的,我们只 ...

  2. Nginx禁止html等缓存

    +++ date="2020-10-16" title="Nginx禁止html等缓存" tags=["nginx"] categories ...

  3. mysql8在生产环境中的配置

    一,配置文件的位置 [root@yjweb ~]# ll /etc/my.cnf -rw-r--r-- 1 root root 935 Mar 11 16:52 /etc/my.cnf 说明:通常我们 ...

  4. win10下使用命令行安装配置appium环境

    安装列表 安卓sdk目录,即ANDROID_HOME设置 关于sdk的安装配置此处略,参考之前文章<Appium+Java(一) Windows环境搭建篇> node运行环境 appium ...

  5. Linux配置阿里epl源

    去阿里云 有源仓库 阿里云镜像官方站点 https://developer.aliyun.com/mirror/ 先备份本机上的源 mv /etc/yum.repos.d/CentOS-Base.re ...

  6. Compareto方法

    很多时候我们写Compareto方法是用于排序,那么排序就涉及到数据位置交换. 所以要注意compareto返回值的含义,通过一个例子来看一下: 假设对象的num属性作为比较标准,对象为testVO ...

  7. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  8. jqgrid与bootstrap样式结合问题

    还有个问题,就是 <link rel="stylesheet" href="../boot/grid/ui.jqgrid.css" type=" ...

  9. 如何解决json返回的乱码

    方法一: 通过@RequestMaping的produces属性来实现,修改下代码 //produces:指定响应体返回类型和编码@RequestMapping(value = "/xxx& ...

  10. this.$nextTick的用法

    element-ui中有一个动态添加tag的组件,平常状态是按钮,点击后变成输入框:那么这里的话,希望按钮点击后,input输入框被选中 这里二者的切换依赖于inputVisible这个值,当按钮点击 ...