学习DNS

news2024/11/21 2:33:07

文章目录

  • 一、DNS介绍
  • 二、DNS架构
  • 三、DNS的原理
  • 四、DNS软件安装和配置文件
    • 4.1、DNS正向解析
    • 4.2、DNS反向解析
    • 4.3、多域DNS
    • 4.4、DNS主从配置

一、DNS介绍

DNS(Domain name system)。

  • 域名:由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便的访问互联网,而不用记住被机器直接读取的IP地址。

  • DNS的正向解析,将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机。域名 —> IP,也称A记录。

  • DNS的反向解析,将主机的IP地址转换为对应的域名,以便网络程序能够通过IP地址查询到主机的域名。IP —> 域名,也称PTR记录。

二、DNS架构

在这里插入图片描述

域名:www.baidu.com
DNS结构:www.baidu.com.  从右向左解析

☆ 根域(.)

  • 在整个DNS系统的最上方,这个DNS服务器称为root,也叫“根域”
  • 根域全世界有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

☆ 一级域名<顶级域名|国家域>
com net edu gov org cc io | cn uk us ru ja ko
.com 商业公司
.net 互联网公司
.edu 教育机构
.gov 政府机构
.io 存储设备
.cn 中国域名

☆ 二级域名(自己购买管理)
qq.com baidu.com google.com

三、DNS的原理

1.递归查询:询问一次得到结果,比如用户计算机问DNS服务器,DNS服务器问根服务器,最后得到的结果返回给用户计算机。
2.迭代查询:询问多次得到结果,比如用户计算机问DNS服务器,DNS服务器说自己这里查不到,让用户计算机去根服务器查。

dig +trace www.baidu.com  追踪DNS的解析过程
dig @server www.baidu.com 正向解析查询
dig -x 192.168.0.1 反向解析查询

3.DNS的域名解析都是udp/53,主从之间的数据传输默认使用tcp/53。

四、DNS软件安装和配置文件

4.1、DNS正向解析

[root@localhost ~]# yum install -y bind     #软件安装

/etc/named.conf 用于配置访问控制(哪些IP或者哪些主机可以访问DNS服务)。
/etc/named.rfc1912.zones 定义域名如何解析(正向解析),解析到具体哪个IP地址。
1.修改主配置文件named.conf控制权限

options {
        listen-on port 53 { 127.0.0.1;any; }; #监听上加上any
        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     { localhost;any; }; #允许查询上加上any

2.修改子配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "test.ljj" IN {
        type master;
        file "test.ljj.zone";
        allow-update { none; };
};
#可以在末行模式使用 19,23 co 42 这种方式直接将19到23行复制到文件42行后面 

3.修改解析文件

[root@localhost named]# cp -p named.localhost test.ljj.zone
[root@localhost named]# vim test.ljj.zone
$TTL 1D  #缓存的生命周期
@       IN SOA  @ rname.invalid. (            #第一个@符号表示当前的域,IN表示互联网,SOA表示开始授权
                                        0       ; serial  # 更新序列号
                                        1D      ; refresh # 更新间隔
                                        1H      ; retry # 失败重试
                                        1W      ; expire # 区域文件的过期时间
                                        3H )    ; minimum #缓存的最小生命周期
        NS      @
        A       127.0.0.1
        AAAA    ::1
www     A       192.168.68.171

4.检查配置文件

[root@localhost ~]# named-checkconf /etc/named.conf
[root@localhost ~]# named-checkconf /etc/named.rfc1912.zones
[root@localhost named]# named-checkzone test.com.zone test.com.zone 
zone test.com.zone/IN: loaded serial 0
OK
[root@localhost named]# systemctl restart named

5.重新启动一台服务器安装web服务

[root@test yum.repos.d]# hostname set-hostname test.ljj
[root@test yum.repos.d]# yum install -y httpd
[root@test yum.repos.d]# echo "DNS Test..." >> /var/www/html/index.html
[root@test yum.repos.d]# systemctl restart httpd

6.重新启动一台服务器用做客户端来测试DNS服务器的正向解析

[root@localhost ~]# echo "nameserver 192.168.68.169" > /etc/resolv.conf  #添加DNS服务器,也可以直接vim编写文件
[root@localhost ~]# nslookup www.test.ljj
Server:		192.168.68.169
Address:	192.168.68.169#53

Name:	www.test.ljj
Address: 192.168.68.171
#可以使用elinks或者curl访问测试
[root@localhost ~]# curl http://www.test.ljj
DNS Test...

4.2、DNS反向解析

1.修改主配置文件named.conf控制权限

options {
        listen-on port 53 { 127.0.0.1;any; }; #监听上加上any
        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     { localhost;any; }; #允许查询上加上any

2.修改子配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "68.168.192.in-addr.arpa" IN {         #68.168.192这串数字是被解析网段192.168.68反着写的
        type master;
        file "192.168.68.zone";
        allow-update { none; };
};

3.修改解析文件

[root@localhost named]# cp -p named.loopback 192.168.68.zone
[root@localhost named]# vim 192.168.68.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.
174     PTR     www.test.ljj      #为什么是174呢,因为需要被解析的服务器是192.168.68.174,

4.检查配置文件

[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkconf /etc/named.rfc1912.zones
[root@localhost named]# named-checkzone 192.168.68.zone 192.168.68.zone 
zone 192.168.68.zone/IN: loaded serial 0
OK
[root@localhost named]# systemctl restart named

5.使用客户端服务器测试

[root@localhost ~]# echo "nameserver 192.168.68.173" > /etc/resolv.conf  #添加DNS服务器
[root@localhost ~]# nslookup 192.168.68.174
174.68.168.192.in-addr.arpa	name = www.test.ljj.68.168.192.in-addr.arpa.

4.3、多域DNS

1.修改主配置文件named.conf控制权限

options {
        listen-on port 53 { 127.0.0.1;any; }; #监听上加上any
        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     { localhost;any; }; #允许查询上加上any

2.修改子配置文件

[root@localhost named]# vim /etc/named.rfc1912.zones
zone "hello.ljj" IN {
        type master;
        file "hello.ljj.zone";
        allow-update { none; };
};
zone "world.ljj" IN {
        type master;
        file "world.ljj.zone";
        allow-update { none; };
};

3.修改解析文件

[root@localhost named]# cp -p named.localhost hello.ljj.zone
[root@localhost named]# vim hello.ljj.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
www     A       192.168.68.175

[root@localhost named]# cp -p named.localhost world.ljj.zone
[root@localhost named]# vim world.ljj.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
bbs     A       192.168.68.175

4.检查配置文件

[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkconf /etc/named.rfc1912.zones
[root@localhost named]# named-checkzone hello.ljj.zone hello.ljj.zone 
zone hello.ljj.zone/IN: loaded serial 0
OK
[root@localhost named]# named-checkzone world.ljj.zone world.ljj.zone 
zone world.ljj.zone/IN: loaded serial 0
OK
[root@localhost named]# systemctl restart named

5.使用客户端服务器测试

[root@localhost ~]# echo "nameserver 192.168.68.173" > /etc/resolv.conf
[root@localhost ~]# nslookup www.hello.ljj
Server:		192.168.68.173
Address:	192.168.68.173#53

Name:	www.hello.ljj
Address: 192.168.68.175

[root@localhost ~]# nslookup bbs.world.ljj
Server:		192.168.68.173
Address:	192.168.68.173#53

Name:	bbs.world.ljj
Address: 192.168.68.175

[root@localhost ~]# curl http://www.hello.ljj
DNS Test...
[root@localhost ~]# curl http://bbs.world.ljj
DNS Test...

4.4、DNS主从配置

1.主服务器修改主配置文件/etc/named.conf

[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1;any; }; #监听上加上any
        listen-on-v6 port 53 { ::1; };
        allow-transfer { 192.168.68.182; };  #允许从服务器同步资源
        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     { localhost;any; }; #允许查询上加上any

2.从服务器修改主配置文件/etc/named.conf

[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1;any; }; #监听上加上any
        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     { localhost;any; }; #允许查询上加上any

3.从服务器修改/etc/named.rfc1912.zones

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "hello.ljj" IN {
        type slave;
        file "slaves/hello.ljj";
        masters { 192.168.68.185; };
};
zone "world.ljj" IN {
        type slave;
        file "slaves/world.ljj";
        masters { 192.168.68.185; };
};

4.客户端测试

[root@localhost ~]# nslookup www.hello.ljj
Server:		192.168.68.182
Address:	192.168.68.182#53

Name:	www.hello.ljj
Address: 192.168.68.184

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

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

相关文章

[FUNC]判断窗口在哪一个屏幕上

#Requires AutoHotkey v2.0#z:: { ToolTip "Notepad窗口所在显示屏是&#xff1a;" GetMonitor() } GetMonitor() {CoordMode("Mouse", "Screen"); MouseGetPos &mx, &myWinGetPos &mx, &my,,,"ahk_class Notepad"…

记一次移动云不同机器下的对等网络使用

1、清单 机器1的VPC&#xff1a; 子网&#xff1a;172.16.16.0/24 机器2的VPC 子网&#xff1a;172.27.27.0/24&#xff08;子网不能与机器1的子网相同&#xff0c;否则对等网络无法成功建立&#xff09; 2、添加对等网络 添加链接&#xff1a;https://console.ecloud.1008…

二叉树展开为链表的三种写法

二叉树展开为链表 链表头节点法 新建一个树形链表&#xff0c;前序遍历这个树&#xff0c;遍历到一个节点就往里插 class Solution {TreeNode dummyNode new TreeNode(0,null,null);TreeNode p dummyNode;public void flatten(TreeNode root) {if(root null) return;//线序…

机器学习---EM算法

1. 极大似然估计与EM算法 极大似然估计是一种常用的参数估计方法&#xff0c;它是以观测值出现的概率最大作为准则。关于极 大似然估计&#xff0c;假设现在已经取到样本值了&#xff0c;这表明取到这一样本的概率L(θ) 比较 大。我们自然不会考虑那些不能使样本出现的θ作为…

Unity中Shader指令优化(编译后指令解析)

文章目录 前言一、我们先创建一个简单的Shader二、编译这个Shader&#xff0c;并且打开1、编译后注意事项2、编译平台 和 编译指令数3、顶点着色器用到的信息4、顶点着色器计算的核心部分5、片元着色器用到的信息6、片元着色器核心部分 前言 我们先读懂Shader编译后代码&#…

Pytorch——多卡GPU训练与单卡GPU训练相互切换

部分深度学习网络默认是多卡并行训练的&#xff0c;由于某些原因&#xff0c;有时需要指定在某单卡上训练&#xff0c;最近遇到一个&#xff0c;这里总结如下。 目录 一、多卡训练1.1 修改配置文件1.2 修改主训练文件1.3 显卡使用情况 二、单卡训练2.1 修改配置文件2.2 显卡使…

Linux 磁盘分区处理

最近实施过程中遇到客户提供给我们的服务器操作系统和Docke容器环境都已经安装完成&#xff0c;但磁盘的分区没有进行整理好。磁盘总共270G&#xff0c;系统安装分配了60G&#xff0c;剩余未创建分配需要处理。由于分区情况每家不一样&#xff0c;但大致流程都是相同的&#xf…

100.有序数组的平方(力扣)

代码解决一 class Solution { public:// 函数接受一个整数数组&#xff0c;返回每个元素平方值排序后的结果vector<int> sortedSquares(vector<int>& nums) {int len nums.size(); // 获取数组的长度vector<int> v; // 创建一个新的数组&#xff0c;用…

Redis基础系列-安装Redis

Redis基础系列-安装Redis 文章目录 Redis基础系列-安装Redis1. 环境要求2. 下载redis3. 安装4. 配置5 参考与感谢 1. 环境要求 &#xff08;安装C语言编译环境&#xff09;redis是用C语言开发的&#xff0c;所以需要安装C语言编译环境,中途可能会出现询问你是否需要可以安装&a…

SpringBoot——Quartz 定时任务

优质博文&#xff1a;IT-BLOG-CN 一、Scheduled 定时任务 【1】添加Scheduled相关依赖&#xff0c;它是Spring自带的一个jar包因此引入Spring的依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-context-su…

Maven无法拉取依赖/构建失败操作步骤(基本都能解决)

首先检查配置文件&#xff0c;确认配置文件没有问题(也可以直接用同事的配置文件(记得修改文件里的本地仓库地址)) 1.file->Invalidate Caches清除缓存重启(简单粗暴&#xff0c;但最有效) 2.刷新maven以及mvn clean&#xff0c;多刷几次&#xff0c;看看还有没有报红的依赖…

FastDFS文件系统本地部署结合Nginx与内网穿透实现远程访问本地服务器

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

Python按要求从多个txt文本中提取指定数据

基本想法 遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件&#xff0c;并从每一个文本文件中&#xff0c;找到我们需要的指定数据&#xff0c;最后得到所有文本文件中我们需要的数据的集合 举例 如现有名为file一个文件夹&#xff0c;里面含有大量的.txt格…

Git修改远程仓库名称

1、先直接在远程点仓库名&#xff0c;然后左侧菜单栏找settings-general&#xff0c;然后直接修改工程名&#xff0c;保存即可。 2、还是在settings-general下&#xff0c;下拉找到Advanced点击Expand展开&#xff0c;然后下拉到最底部 在Change path里填入新的项目名称&#x…

C语言错误处理之 “strerror和perror函数以及断言处理方式”

目录 前言 perror函数 strerror函数 断言处理方式 前言 在错误处理一中&#xff0c;我们解释了C语言三种处理方式中的错误号处理方式&#xff0c;这一篇我们在基于上一篇的基础上加入了strerror函数与perror函数&#xff0c;以及断言处理方式的内容...... perror函数 包…

四大视角看EMC设计:滤波、接地、屏蔽、PCB布局

电磁干扰的主要方式是传导干扰、辐射干扰、共阻抗耦合和感应耦合。对这几种途径产生的干扰我们应采用的相应对策&#xff1a;传导采取滤波&#xff0c;辐射干扰采用屏蔽和接地等措施&#xff0c;就能够大大提高产品的抵抗电磁干扰的能力&#xff0c;也可以有效的降低对外界的电…

DAPP开发【02】Remix使用

系列文章目录 系列文章在DAPP开发专栏 文章目录 系列文章目录使用部署测试网上本地项目连接remix本地项目连接remix 使用 创建一个新的工作空间 部署测试网上 利用metaMask连接测试网络 添加成功&#xff0c;添加时需要签名 即可进行编译 即可部署 本地项目连接remix 方…

C# 动态编译代码并执行

写在前面 本文采用动态编译的方式&#xff0c;对目标文件code.txt中的C#代码进行实时编译并调用&#xff1b;当然也可以直接在代码中直接装配或读取已有的代码文本&#xff0c;动态编译可以用于很多需要热更新的场景&#xff0c;实现无需重启程序也能达到更新代码的需求。 代…

【web安全】ssrf漏洞的原理与使用

前言 菜某对ssrf漏洞的总结。 ssrf的作用 主要作用&#xff1a;访问外界无法访问的内网进行信息收集。 1.进行端口扫描&#xff0c;资源访问 2.指纹信息识别&#xff0c;访问相应的默认文件 3.利用漏洞或者和payload进一步运行其他程序 4.get类型漏洞利用&#xff0c;传参数…

FO-like Transformation in QROM Oracle Cloning

参考文献&#xff1a; [RS91] Rackoff C, Simon D R. Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[C]//Annual international cryptology conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 1991: 433-444.[BR93] Bellare M…