【Linux网络】本地DNS服务器搭建

目录

一、什么是DNS,相关介绍

1、dns是什么:

2、域名的分类:

3、服务器的类型

二、DNS解析的过程

三、DNS的相关配置文件学习

1、本地主机有关的DNS文件学习

2、本地的DNS缓存服务器的文件

3、bind软件的相关配置文件:

4、学习数据库文件的语法 :

四、实操(正向解析+反向解析+主从复制)

第一步:先关闭安全机制和防火墙,两台机器都需要关闭!!!

第二步:主服务器的配置:

1、先修改主服务器的DNS缓存服务器地址,指向本机并重启网络;

2、到配置文件中修改主配置文件;

3、修改区域配置文件,明确域名服务器与数据库文件的对应;

4、创建数据库文件,设置数据库文件中域名与ip的对应关系;

5、启动named服务

第三步:slave服务器配置

1、先修改slave服务器的DNS缓存服务器地址(DNS1指向主,DNS2指向本机),重启网络;

 2、修改主配置文件

3、修改区域配置文件,明确域名服务器与数据库文件的对应;

4、启动named服务

第四步:验证结果

1、先用主服务器解析一下

2、用从服务器解析一下

3、当主服务器down,再检查一下从服务器

4、找来第三台Linux和一台Windows验证一下

五、源代码记录

1、主服务器配置

2、从服务器配置

六、总结(排错思路)

1、是否关闭安全机制与防火墙;

2、明确一下当前本地的DNS服务器是谁!!这与验证结果相关,查看/etc/resolv.conf;最好是DNS1为主,DNS2为从

3、查看一下区域配置文件的文件名与数据库的名称是否一致(标点符号都要一一对应!!)

4、查看数据库文件的属性,需要保留权限从named.local复制;

5、检查一下数据库文件的语法;

6、用好named-checkconf和named-checkzone两个语法检测命令,可以排错一部分,并显示错的行数;

7、最后重启还是不对,请看日志:/var/log/messages


一、什么是DNS,相关介绍

1、dns是什么:

DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构;

每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。

该应用程序的端口,对应:53/udp, 53/tcp

UDP的53端口用于解析(需要速度快)

TCP的53端口用于连接服务器,slave从master服务器中拉取数据(需要可靠)

2、域名的分类:

根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本

根域:用“.”表示

顶级域(一级域):一般代表一种类型的组织机构或国家区域,如.net,.com,.edu等

二级域:用来标明顶级域下面的的一个特定组织,国家顶级域下面的二级域名由国家安全部门统一管理,比如:.com.cn,.net.cn,.edu.cn

三级域(子域):由二级域创建的一般为子域,一般是由各个组织自己申请的

主机:如www和mail等表示主机名称

3、服务器的类型

master域名服务器:一般来说主域名服务器会有自己构建的一部分域名对应数据库,另外还有“.”的信息;是主域名服务器的一种,也称为主服务器、主域名服务器,负责维护一个区域的所有域名信息,这些信息一般存储在文本文件中,如zone文件或hosts文件1。Master域名服务器本身含有域名的数据文件(就是zone),这个配置文件就是设置正解或反解的“数据库”,包含各种记录,所以它本身具有提供查询Internet查询所需的数据。

slave域名服务器:会获取主服务器的数据库信息,放在/var/named/slaves文件夹中加密,当主服务器down的时候,slave服务器可以继续使用;

缓存域名服务器:只提供域名解析的缓存功能,目的是为了可以更高效的查询,但没有域名数据库,是从远程服务器取得每次域名服务器查询的结果,放在高速缓存中,以后查询相同的信息的时候响应更快;远程域名服务器不是权威性服务器

转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

二、DNS解析的过程

域名解析的过程(如图):

递归查询:

本主机向本地域名服务器的查询,一般是采用递归查询;

迭代查询:

本地域名服务器向跟服务器的查询,一般是迭代查询:

 本地正向解析域名的步骤:(以www.baidu.com为例)

第一步:先去问/etc/hosts文件,有就直接回复;

第二步:再去问本地dns缓存服务器,有就直接回复;

第三步:再去问根域名服务器,根域名服务器(.只能解析x.中的x,也就是说根只能解析出顶级域名.com),知道顶级域后,再去顶级域服务器(顶级域只能解析x.com.中的x为baidu),再去二级域服务器,查询到主机名为www,最终获得到www.baidu.com,获取到最终的域名地址,告诉缓存服务器;(看上面的流程图。类似)

第四步:缓存服务器最后告诉客户端,dns会把解析服务器会缓存结果,递归查询结束;

三、DNS的相关配置文件学习

1、本地主机有关的DNS文件学习

/etc/hosts  
##记录了本地个性化设置的ip地址域主机名的映射关系,包括相关主机名的别名
##只对当前主机有效
##好处:可以减少DNS的查询过程,可以加快速度

##这个文件的优先级高于DNS服务器,是由/etc/nsswitch.conf文件规定的
[root@localhost ~]#vim /etc/nsswitch.conf
 39 hosts:      files dns myhostname

 Windows中的hosts文件位置:

2、本地的DNS缓存服务器的文件

/etc/resolv.conf
##该文件是本地DNS缓存服务器
##该文件的内容是与网卡中的DNS配置相关的,注意主和从的配置
##该文件需要网卡修改后重启网络生效,建议不要单独修改该文件

3、bind软件的相关配置文件:

bind是软件名,named是服务名

/etc/named.conf  ##主配置文件
/etc/named.rfc1912.zones  ##区域配置文件,记录域名与数据文件的对应关系
/var/named/  ##区域数据配置文件(区域数据库文件夹),这个文件一定要注意权限

关于数据库文件夹的产生:

因为在安装bind软件的时候,系统会自动创建一个名为named的用户,然后程序用户的家目录在/var/named

根非常强大,可以解析所有,不用知道为什么,反正就是可以 

4、学习数据库文件的语法 :

$TTL 1D表示缓存时间为一天
@表示代替域名本身(比如我现在是xuexin.com.)
IN:表示互联网
SOA:表示开始权限记录,这个一定要有
xueyin.com.处写主域名服务器名称,也可以是@,还可以是master
admin.xueyin.com.处写区域文件管理员的邮件地址,随便写,也可用“.”代替,但是不能不写
NS表示记录域名记录,由哪一台主机服务器去解析当前所定义的域主机,可以是master,可以是全部名如“xueyin.com.”
MX表示邮件交换记录,后面写数字和接收邮件的服务器主机名字(10数字表示优先级,范围0-50,越小优先级越高)(可以不管,一般不用)


括号内参数:0 表示serial——更新序列号,标记新旧程度,可以是10位以内的整数
                      1D  表示refresh——刷新时间
                      1H 表示retry ——重试时间,连接不上时多长时间重试一次
                      1W 表示expire——失效时间,如果一直重连接不上,多长时间后就不再连接
                      3H 表示minimum——无效解析记录的缓存时间
CNAME别名,访问news.xueyin.com时,允许将news替换为mail
* 代表泛域名
@ 代表自己
PTR 表示反向解析

四、实操(正向解析+反向解析+主从复制)

第一步:先关闭安全机制和防火墙,两台机器都需要关闭!!!

第二步:主服务器的配置:

1、先修改主服务器的DNS缓存服务器地址,指向本机并重启网络;

2、到配置文件中修改主配置文件;

3、修改区域配置文件,明确域名服务器与数据库文件的对应;

[root@localhost named]#vim /etc/named.conf 
[root@localhost named]#vim /etc/named.rfc1912.zones 
[root@localhost named]#named-checkconf ##检查一下语法

4、创建数据库文件,设置数据库文件中域名与ip的对应关系;

[root@localhost named]#cd /var/named/
[root@localhost named]#ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves  xueyin.com.zone
[root@localhost named]#cp -a named.localhost xueyin.com.zone 
[root@localhost named]#vim xueyin.com.zone 

$TTL 1D
@       IN SOA  master admin.xueyin.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A    192.168.20.10
        NS      slave
slave   A    192.168.20.18
www     A    192.168.20.5
mail    A    192.168.20.4
test  CNAME  www
*       A    192.168.20.5
@       A    192.168.20.10
5      PTR   www.xueyin.com.
4      PTR   mail.xueyin.com.

[root@localhost named]#named-checkzone xueyin.com /var/named/xueyin.com.zone 
zone xueyin.com/IN: loaded serial 1
OK
[root@localhost named]#

 

 

5、启动named服务

##启动服务有两种方法,都可以
[root@localhost named]#systemctl restart named
[root@localhost named]#rndc reload
server reload successful

第三步:slave服务器配置

1、先修改slave服务器的DNS缓存服务器地址(DNS1指向主,DNS2指向本机),重启网络;

 2、修改主配置文件

[root@localhost slaves]#vim /etc/named.conf
[root@localhost slaves]#vim /etc/named.rfc1912.zones
[root@localhost slaves]#systemctl restart named

3、修改区域配置文件,明确域名服务器与数据库文件的对应;

4、启动named服务

第四步:验证结果

1、先用主服务器解析一下

2、用从服务器解析一下

3、当主服务器down,再检查一下从服务器

4、找来第三台Linux和一台Windows验证一下

 

 

五、源代码记录

1、主服务器配置

##先修改本机的DNS缓存服务器,指向本机
[root@localhost named]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DNS1=192.168.20.18

##重新启动网络
[root@localhost named]#systemctl restart network
##检验一下自己的本地DNS服务的文件
[root@localhost named]#cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.20.10  ##验证成功

##开始修改named服务的主配置文件
[root@localhost named]#vim /etc/named.conf 
 12 options {
 13         listen-on port 53 { any; }; ##这里可以是any,也可以是本服务器自己,也可以是注释删掉
 14         listen-on-v6 port 53 { ::1; };  ##ipv6,无关不用修改
 15         directory       "/var/named";  ##表明数据的文件夹位置,同时也是named程序的家目录,不用修改
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; }; ##这里允许被谁作为解析服务器,再生产环境中就是内网本身网段,这里改为any任意

##区域配置文件修改,将数据库文件与域名对应起来
[root@localhost named]#vim /etc/named.rfc1912.zones 
 13 zone "xueyin.com" IN {                 ##写明想要解析的域名
 14         type master;                   ##表明是主服务器
 15         file "xueyin.com.zone";        ##表明数据库的文件在/var/named/xueyin.com.zone
 16 }; 
 30 zone "20.168.192.in-addr.arpa" IN {    ##写明想要反向解析的ip地址
 31         type master;                   ##表明是主服务器
 32         file "xueyin.com.zone";        ##与正向解析的数据库文件一起记录
 33 };
 
 ##检查一下语法问题
[root@localhost named]#named-checkconf 

##添加数据,先进去named程序用户的家目录
[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 -a named.localhost xueyin.com.zone 
##语法前面已经讲过了,参考看吧
[root@localhost named]#vim xueyin.com.zone 
$TTL 1D
@       IN SOA  master admin.xueyin.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A    192.168.20.10
        NS      slave
slave   A    192.168.20.18
www     A    192.168.20.5
mail    A    192.168.20.4
test  CNAME  www
*       A    192.168.20.5
@       A    192.168.20.10
5      PTR   www.xueyin.com.
4      PTR   mail.xueyin.com.

##语法检测一下
[root@localhost named]#named-checkzone xueyin.com /var/named/xueyin.com.zone 
zone xueyin.com/IN: loaded serial 1
OK
##启动服务,有两种方法,都可以
[root@localhost named]#systemctl restart named
[root@localhost named]#rndc reload
server reload successful
[root@localhost named]#

2、从服务器配置

##先修改本机的DNS缓存服务器,指向主服务器和本机(从服务器)
[root@localhost /]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@localhost /]#systemctl restart network
[root@localhost /]#cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.20.10
nameserver 192.168.20.18

##从服务器的主配置文件修改
[root@localhost ~]#vim /etc/named.conf
 13 //      listen-on port 53 { 127.0.0.1; }; ##将13行注释掉,也可以根据自己的需求修改
 21 //      allow-query     { localhost; }; ##将13行注释掉,也可以根据自己的需求修改

##从服务器的区域配置文件修改
[root@localhost ~]#vim /etc/named.rfc1912.zones 
 13 zone "xueyin.com" IN {                  ##写明想要解析的域名              
 14         type slave;                     ##表明是从服务器
 15         file "slaves/xueyin.com.zone";  ##表明数据库的文件在/var/named/slaves/xueyin.com.zone
 16         masters { 192.168.20.10; };     ##表明认准主服务器是192.168.20.10
 17 };
 31 zone "20.168.192.in-addr.arpa" IN {    ##写明想要反向解析的ip地址
 32         type slave;                    ##表明是从服务器
 33         file "slaves/xueyin.com.zone"; ##跟正向解析一样,放在一起
 34         masters { 192.168.20.10; };    ##表明认准主服务器是192.168.20.10
 35 };

 ##检查一下语法问题
[root@localhost named]#named-checkconf 
##启动服务
[root@localhost named]#systemctl restart named

六、总结(排错思路)

1、是否关闭安全机制与防火墙;

2、明确一下当前本地的DNS服务器是谁!!这与验证结果相关,查看/etc/resolv.conf;最好是DNS1为主,DNS2为从

3、查看一下区域配置文件的文件名与数据库的名称是否一致(标点符号都要一一对应!!)

4、查看数据库文件的属性,需要保留权限从named.local复制;

5、检查一下数据库文件的语法;

6、用好named-checkconf和named-checkzone两个语法检测命令,可以排错一部分,并显示错的行数;

7、最后重启还是不对,请看日志:/var/log/messages

最后,终于写完了,希望感冒快点好,扛不住了!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/141318.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter执行接口自动化测试-如何初始化清空旧数据

需求分析: 每次执行完自动化测试,我们不会执行删除接口把数据删除,而需要留着手工测试,此时会导致下次执行测试有旧数据我们手工可能也会新增数据,导致下次执行自动化测试有旧数据 下面介绍两种清空数据的方法 一、通…

nginx代理docker容器服务

场景描述 避免暴力服务端口,使用nginx代理 一个前端,一个后端,docker方式部署到服务器,使用docker创建的nginx代理端口请求到前端端口 过程 1 docker 安装nginx 1.1 安装一个指定版本的nginx docker pull nginx#启动一个ngi…

vuejs - - - - - 移动端设备兼容(pxtorem)

pxtorem的使用 1. 依赖安装2. vue.config.js配置3. 动态设置html的font-size大小4. 效果如图: 1. 依赖安装 yarn add postcss-pxtorem -D 2. vue.config.js配置 module.exports {...css: {loaderOptions: {postcss: {plugins: [require("postcss-pxtorem&quo…

22.能被7整除,并且求和。

#include<stdio.h>int main(){int i ,sum0;printf("1-1000能被7整除的数字有&#xff1a;\n");for(i1;i<1000;i){if(i%70){printf("%d ",i);sumsumi;} }printf("\n");printf("能被7整除的数字的和是&#xff1a;%d ",sum);re…

这样书写Python代码的方式,实在是太优雅了~

文章目录 前言一、在Python中配合pipe灵活使用链式写法二 、pipe中常用的管道操作函数1.使用traverse()展平嵌套数组2.使用dedup()进行顺序去重3.使用filter()进行值过滤4.使用groupby()进行分组运算5.使用select()对上一步结果进行自定义遍历运算6.使用sort()进行排序 总结关于…

线性表->栈

文章目录 前言概述栈的初始化销毁压栈出栈判断栈为不为空栈的有效个数 前言 栈相对于链表&#xff0c;稍微简单一点&#xff0c;但是栈的难点在于通过栈去理解递归算法。 概述 **栈&#xff1a;**一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。…

Redis解决缓存问题

目录 一、引言二、缓存三、Redis缓存四、缓存一致性1.缓存更新策略2.主动更新 五、缓存穿透六、缓存雪崩七、缓存击穿1.基于互斥锁解决具体业务2.基于逻辑过期解决具体业务 一、引言 在一些大型的网站中会有十分庞大的用户访问流量&#xff0c;而过多的用户访问对我们的MySQL数…

初学UE5 C++①

游戏类 1.创建所需项的类 2.创建游戏模式类&#xff0c;在该类上实现所需项&#xff0c;引入头文件和构造函数时实例化 三种时间函数类型函数和提示类型 FName、FString、FText类型相互转化 FName用FName FString用ToString&#xff08;&#xff09; FText用FText&#xff1a;…

零代码搭建:无需编程基础,轻松搭建数据自己的能源监测管理平台

零代码搭建能源管理平台&#xff0c;其核心是通过使用图形用户界面和可视化建模工具&#xff0c;来减少编写代码的工作量以及技能要求。平台拥有丰富的预定义组件&#xff0c;可以帮助管理人员快速构建应用程序。并可自定义区域框架&#xff0c;在搭建自己区域时&#xff0c;能…

说说对React Hooks的理解?解决了什么问题?

一、是什么 Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性 至于为什么引入hook,官方给出的动机是解决长时间使用和维护react过程中常遇到的问题,例如: 难以重用和共享组件中的与状态相关的逻辑逻辑复杂的组件难以开…

Juniper PPPOE双线路冗余RPM配置

------------------ 浮动静态路由 set routing-options static route 0.0.0.0/0 next-hop pp0.0 qualified-next-hop pp0.1 preference 10 ----------------- RPM测试的内容,包括从哪个接口发起测试,测试ping等等 #指定探针类型用ICMP请求 #探测的目标地址 #探测间隔 #探测阈…

编译原理-语法分析-自上而下分析

文章目录 语法分析器的功能自上而下分析面临的问题LL&#xff08;1&#xff09;分析法左递归的消除直接左递归非直接左递归 消除左递归的算法消除回溯、提左因子FIRST提左因子FOLLOW集 LL(1)的分析条件LL(1)文法构造FIRST和FOLLOW集合构造每个文法符号的FIRST集合构造FOLLOW集合…

windows安装nginx

一、下载安装Nginx 1、官网下载地址&#xff1a;nginx: download 2、下载教程&#xff1a;选择最新的Stable version&#xff08;稳定版本&#xff09;下载到本地 3、下载完成后&#xff0c;解压放入本地非中文的文件夹中&#xff1a; 4、启动nginx&#xff1a;切勿直接双击n…

Django路由层

路由层&#xff08;urls&#xff09; Django的路由层是负责将用户请求映射到相应的视图函数的一层。在Django的MVT架构中&#xff0c;路由层负责处理用户的请求&#xff0c;然后将请求交给相应的视图函数进行处理&#xff0c;最后将处理结果返回给用户。 在Django中&#xff0c…

Redhat7设置国内可用yum源

问题&#xff1a; 因为最近安装了redhat7&#xff0c;在使用的时候提示系统未注册订阅&#xff0c;无法使用官方的yum源进行安装软件。为此&#xff0c;我使用centos7国内的yum源替换redhat的官方的yum源实现软件安装。 “This system is not registered with an entitlement …

机器学习算法实战实战案例代码详解

文章目录 1.问题建模数据预处理 结果分析数据探索特征工程特征选择模型融合 1.问题建模 导入库 import numpy as np import pandas as pd from sklearn.model_selection import KFold from sklearn.metrics import mean_squared_error from sklearn.preprocessing import One…

EtherCAT转Modbus网关的 EtherCAT从站配置案例

兴达易控EtherCAT转Modbus网关&#xff08;XD-MDEC20 &#xff09;是一款具备ETHERCAT从站功能的通讯网关&#xff0c;其主要作用是将ETHERCAT网络和MODBUS-RTU网络连接起来。该网关可作为ETHERCAT总线中的从站使用&#xff0c;同时也能够连接到MODBUS-RTU总线中&#xff0c;作…

Topk问题!(面试高频常考)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 剑指offer &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️什么是Top-k问题&#xff1f;&#x1f324;️常见的Top-K问题类型☁️寻找…

Halcon 练习(1):模板匹配

文章目录 前言相关视频链接模板匹配介绍Halcon平台使用动态区域截取代码优化固定选取位置添加打印信息添加匹配个数 个人能力不足 前言 Halcon平台的使用需要学习新的知识&#xff0c;这里专门开个新的专栏用来练习Halcon平台使用。 相关视频链接 WPF/HALCON机器视觉合集 模板…

Java16新增特性

前言 前面的文章&#xff0c;我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15 的特性进行了介绍&#xff0c;对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特性 今天我们来一起看一下…