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

news2024/10/7 12:19:23

目录

一、什么是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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 每日一题 牛客网 11.13 Day17

找零 Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币&#xff0c;以及面值1024元的纸币。 现在小Y使用1024元的纸币购买了一件价值为N(0 < N≤1024)的商品&#xff0c;请问最少他会收到多少硬币&#xff1f; 思路 运用if语句进行判断分类 代码实现 int main() {…

Android Glide transform圆形图CircleCrop动态代码描边绘制外框线并rotateImage旋转,Kotlin

Android Glide transform圆形图CircleCrop动态代码描边绘制外框线并rotateImage旋转&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <FrameLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app&q…

基于SSM的校园预点餐系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

PayPal的CISO谈GenAI如何提高网络安全

在最近一个季度(2023财年第二季度)&#xff0c;PayPal报告收入为73亿美元&#xff0c;同比增长7%&#xff0c;5%的交易增长和37%的增值服务收入增长带来了强劲的季度业绩。截至2022年&#xff0c;PayPal的营收为275亿美元。 在进入PayPal之前&#xff0c;Keren创建了两家网络安…

leetCode 25.K 个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。k 是一个正整数&#xff0c;它的值小于 或 等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值&a…

【优化版】DOSBox及常用汇编工具的详细安装教程

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、图解数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. dosbox的介绍、下载和安装1.1 dosbos简介1.2 dosbox的下载1.2.1 方式一&a…

AI工具-PPT-SlidesAI

SlidesAI 使用手册 https://tella.video/get-started-with-slidesai-tutorial-18yq 简介 SlidesAI 是一款快速创建演示文稿的AI工具&#xff0c;适用于无设计经验的用户。 开始使用 1. **安装与设置** - 访问 [SlidesAI官网](https://www.slidesai.io/zh)。 - 完成简单的设置…

【每日一题】区域和检索 - 数组可修改

文章目录 Tag题目来源解题思路方法一&#xff1a;分块方法二&#xff1a;线段树方法三&#xff1a;树状数组 写在最后 Tag 【树状数组】【线段树】【分块】【前缀和】【设计类】【2023-11-13】 题目来源 307. 区域和检索 - 数组可修改 解题思路 使用前缀和解决不行吗&#x…

【Git】第四篇:基本操作(理解工作区、暂存区、版本库)

Git 工作区、暂存区和版本库 工作区&#xff1a;就是我们创建的本地仓库所在的目录暂存区&#xff1a; stage或index&#xff0c;一般放在.git(可隐藏文件)目录下的index文件&#xff08;.git/index&#xff09;中&#xff0c;所以我们把暂存区有时候也叫做索引&#xff08;in…

DevChat:开发者专属的基于IDE插件化编程协助工具

DevChat&#xff1a;开发者专属的基于IDE插件化编程协助工具 一、DevChat 的介绍1.1 DevChat 简介1.2 DevChat 优势 二、DevChat 在 VSCode 上的使用2.1 安装 DevChat2.2 注册 DevChat2.3 使用 DevChat 三、DevChat 的实战四、总结 一、DevChat 的介绍 在AI浪潮的席卷下&#x…

不同优化器的应用

简单用用&#xff0c;优化器具体参考 深度学习中的优化器原理(SGD,SGDMomentum,Adagrad,RMSProp,Adam)_哔哩哔哩_bilibili 收藏版&#xff5c;史上最全机器学习优化器Optimizer汇总 - 知乎 (zhihu.com) import numpy as np import matplotlib.pyplot as plt import torch # …

北邮22级信通院数电:Verilog-FPGA(9)第九周实验(2)实现下降沿触发的JK触发器(带异步复位和置位功能)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 JK.v module JK (input clk,input J,input K,input…

在虚拟环境下安装python包

PyCharm可以自己给项目创建虚拟环境&#xff0c;示例如下&#xff1a; 首先通过File—>Setting—>Project&#xff1a;【项目名称】—>Project Interpreter—>设置—>add—>Virtuallenv Environment配置虚拟环境即可 添加解释器&#xff1a; 当创建虚拟环…

MATLAB Simulink和SMART PLC水箱液位高度PID控制(联合仿真)

SMART PLC 向导PID的详细介绍请查看下面文章链接: S7-200 SMART PLC PID向导详细介绍(如何实现P、PD、PID控制器)-CSDN博客文章浏览阅读1k次。这篇博客主要介绍SMART PLC PID向导的使用,PID控制相关的其它内容请查看专栏系列文章,常用链接如下:SMART PLC PID负压控制(过程…

python 使用pygame制作的打飞机小游戏

python基础使用pygame模块实现打飞机小游戏&#xff0c;有最高分记录&#xff0c;每次游戏的分数都会和最高分进行比较然后记录下来。 基础代码实现&#xff1a; class Bullet:def __init__(self):# 初始化成员变量&#xff0c;x&#xff0c;y&#xff0c;imageself.x 0self…

说说React服务端渲染怎么做?原理是什么?

一、是什么 在SSR中,我们了解到Server-Side Rendering ,简称SSR,意为服务端渲染 指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程 其解决的问题主要有两个: SEO,由于搜索引擎爬

【Linux】你是否还在为安装虚拟机而烦恼?这篇博客将告诉你如何快速搭建Linux环境

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

【04】Istio的pilot流量分发机制

4.1 Pilot配置分发机制 Pilot负责网格数据平面相关配置信息的获取&#xff0c;生成&#xff0c;和分发&#xff0c;它通过Service Registry获取网格配置信息并将其转换为XDS接口的标准数据格式&#xff0c;而后经gRPC分发至相关的Envoy; Service Registry&#xff1a;服务注册表…

No195.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

智能优化算法(一):伪随机数的产生

文章目录 1.伪随机数介绍1.1.伪随机产生的意义1.2.伪随机产生的过程 2.产生U(0,1)的乘除同余法2.1.原始的乘同余法2.2.改进的乘同余法 3.产生正态分布的伪随机数4.基于逆变法产生伪随机数 1.伪随机数介绍 1.1.伪随机产生的意义 1.随机数的产生是进行随机优化的第一步也是最重要…