域名系统DNS服务

news/2024/10/12 22:52:18

1 名字解析介绍和DNS

1.根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
2.一级域名:Top Level Domain: tld
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
com, edu, mil, gov, net, org, int,arpa
3.二级域名:wang.org
4.三级域名:study.wang.org
5.最多可达到127级域名

1.2 DNS服务工作原理

 权威dns: 存实际访问网站的ip地址

 

公网dns

在阿里云上域名解析,记录类型 A 将域名执行一个IPV4地址,最为常用
主机记录: <u>m49</u>.ldc.cn (FQDN开头端)    记录值: ip地址    TTL: 缓存
注意: 域名需要备案(中国特色)

 

公司内部dns

最常用的是bind

#bind服务装在 10.0.0.150
[root@rocky ~]# yum -y install bind
[root@rocky ~]# systemctl enable --now named
# 53端口 和 953端口(管理端口,不关注)   udp53查询域名用  tcp53主从同步用(同步udp53也要用)#查看自己当前dns
[root@rocky ~]# cat /etc/resolv.conf
#把网卡配置dns指向自己
[root@rocky ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
DNS1=127.0.0.1
[root@rocky ~]# nmcli connection reload
[root@rocky ~]# nmcli connection up ens33
#查看是否生效
[root@rocky ~]# cat /etc/resolv.conf 
nameserver 127.0.0.1#安装完dns,自己就有了解析能力
[root@rocky ~]# ping www.baidu.com
PING www.a.shifen.com (36.155.132.3) 56(84) bytes of data.
64 bytes from 36.155.132.3: icmp_seq=1 ttl=128 time=17.8 ms#修改监听端口,让其他主机也能使用本地的bind服务
[root@rocky ~]# vim /etc/named.conf
options {listen-on port 53 { localhost; };    #当前主机所有ip,也可把这一行删了或//注释
    ...allow-query     { localhost;any; };    #允许所有人,也可以注释//相当于any#检查语法
[root@rocky ~]# named-checkconf
#重启或通过rndc让bind重新加载(通过953端口)
[root@rocky ~]# rndc reload#另一台机器可以通过配置dns为10.0.0.150,使用对方的dns服务即可访问外网

设置内网域名

#nginx机器  10.0.0.152
[root@ubuntu ~]#apt update ;apt install nginx -y
[root@ubuntu ~]#vim /var/www/html/index.html
<h1>welcome to M49 website</h1>#bind服务机器
#域名和数据文件对应关系(数据文件记录了名称ip的解析关系)
[root@rocky ~]# vim /etc/named.rfc1912.zones
zone "wang.org" IN {    #不要加www,那是主机名,这里写的是域名type master;    #类型(主服务器)#文件后缀名叫什么无所谓,习惯性叫zonefile "wang.org.zone";    #路径在主配置named.conf中directory约定了,默认/var/named
};[root@rocky ~]# cd /var/named
#写入资源记录(里面对齐无所谓),参考下面资源记录
[root@rocky named]# vim wang.org.zone
$TTL 86400
@     IN     SOA  dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W )NS     dns1
dns1     A     10.0.0.150
www      A     10.0.0.152
db         A     10.0.0.153#修改权限保证安全
[root@rocky named]# chmod 640 wang.org.zone
#给组权限,因为bind是以named组启动的
[root@rocky named]# chgrp named wang.org.zone
#通过域名检查数据库语法是否符合要求
[root@rocky named]# named-checkzone wang.org /var/named/wang.org.zone#让配置生效
[root@rocky ~]# rndc reload#其他机器dns改成10.0.0.150,即可访问 www.wang.org(window修改VMnet8的dns)

2.6 各种资源记录

#/var/named/named.localhost为案例
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
1.SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
2.A:internet Address,作用,FQDN --> IP
3.NS:Name Server,专用于标明当前区域的DNS服务器
4.AAAA:FQDN --> IPv6
5.CNAME : Canonical Name,别名记录#资源记录定义的
name     [TTL]                 IN         rr_type     value缓存有效期(默认单位s)  固定写法 类型        ip地址
例:
$TTL 86400    #开头定义变量,下面TTL就不用在写86400
#SOA的value: 服务器名 邮箱名 (版本(主从通过该变化判断数据改变) 从库拉取主库配置时间间隔 前面拉取失败 重试时间间隔 同步一直失败多久就失效 如果不存在的记录缓存一段时间)
#同步有两种方式,一种主主动推到从(主资源版本变化),一种从定时从主拉数据
@(本域名简写,或写wang.org.)     IN     SOA  dns.wang.org.(服务器名,随便写) admin.magedu.com(管理者邮箱,没用) ( 2024101215 3H 10M 1D 1W )
#@(上面写了,这里可省略)    IN(上面写了,这里可省略)    NS    dns1(dns服务器名,下面要a记录解成ip;如果2个,写2行)
        NS    dns1
dns1    A    10.0.0.150
#www(简写,或写www.wang.org.)    86400(可省略)    IN(上面写了,这里可省略)    A    10.0.0.150
www     A    10.0.0.152
db        A    10.0.0.153

把bind做成主从

#再准备一台机器做备节点  10.0.0.156
[root@rocky ~]# yum -y install bind
#修改监听端口,让其他主机也能使用本地的bind服务
[root@rocky ~]# vim /etc/named.conf
options {listen-on port 53 { localhost; };    #当前主机所有ip,也可把这一行删了或//注释
    ...allow-query     { localhost;any; };    #允许所有人,也可以注释//相当于any#从节点也要维护和主节点一样的域名
[root@rocky ~]# vim /etc/named.rfc1912.zones
zone "wang.org" IN {type slave;    #类型(从)masters {10.0.0.150;};#会自动拷贝过来file "slaves/wang.org.slave.zone";    #一般放在slaves下,文件名随意
};[root@rocky ~]# systemctl enable --now named#查看,已经从主节点拷贝过来(非文本文件,无法查看)
[root@rocky ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 284 Oct 12 17:35 wang.org.slave.zone#此时其他机器可以通过从dns解析www.wang.org
[root@rocky ~]# dig www.wang.org @10.0.0.156#在新的服务器上    10.0.0.157
#修改dns配置,dns1和dns2分别对应一个主dns,一个从dns
[root@rocky ~]# dig www.wang.org
;; ANSWER SECTION:
www.wang.org.        86400    IN    A    10.0.0.152
;; AUTHORITY SECTION:
wang.org.        86400    IN    NS    dns1.wang.org.
;; ADDITIONAL SECTION:
dns1.wang.org.        86400    IN    A    10.0.0.150
;; Query time: 0 msec
;; SERVER: 10.0.0.150#53(10.0.0.150)
;; WHEN: Sat Oct 12 17:54:40 CST 2024
;; MSG SIZE  rcvd: 120#此时把10.0.0.150的主dns关闭,再次测试
[root@rocky ~]# dig www.wang.org
;; QUESTION SECTION:
;www.wang.org.            IN    A
;; ANSWER SECTION:
www.wang.org.        86400    IN    A    10.0.0.152
;; AUTHORITY SECTION:
wang.org.        86400    IN    NS    dns1.wang.org.
;; ADDITIONAL SECTION:
dns1.wang.org.        86400    IN    A    10.0.0.150
;; Query time: 2 msec
;; SERVER: 10.0.0.156#53(10.0.0.156)    #从dns返回
;; WHEN: Sat Oct 12 17:56:34 CST 2024
;; MSG SIZE  rcvd: 120#主节点修改    10.0.0.150
#主从同步还需要更改资源记录,追加从dns
[root@rocky named]# vim wang.org.zone
$TTL 86400
@     IN     SOA  dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W )NS     dns1NS  dns2
dns2     A     10.0.0.156    #这里上下顺序无所谓
dns1     A     10.0.0.150
www      A     10.0.0.152
db         A     10.0.0.153#让配置生效
[root@rocky ~]# rndc reload#现在只要修改wang.org.zone并修改版本号,从库就会跟着变更配置

清除bind服务缓存

[root@rocky ~]#rndc flush

 

4.8 启用DNS客户端缓存功能

在高并发的服务器场景中,对DNS的服务器查询性能有较高的要求,如果在客户端启用DNS缓存功能,可以 大幅减轻DNS服务器的压力,同时也能提高DNS客户端名称解析速度

4.8.1 CentOS 启用DNS客户端缓存

CentOS 默认没有启用DNS客户端缓存,安装nscd(Name Service Cache Daemon,名称服务缓存守护进 程)包可以支持DNS缓存功能

减少DNS服务器压力,提高DNS查询速度

#这个软件只要装上,服务一启,就不用管了,就可以做缓存了

[root@centos7 ~]#yum -y install nscd
[root@centos7 ~]#systemctl enable --now nscd#查看缓存统计信息
[root@centos7 ~]#nscd -g#清除DNS客户端缓存
[root@centos7 ~]#nscd -i hosts

4.8.2 Ubuntu 启用DNS客户端缓存

ubuntu 默认会启用DNS客户端缓存

[root@ubuntu1804 ~]#systemctl status systemd-resolved.service 

windows自带dns客户端缓存

 

5 实现反向解析区域 (了解)

7 实现子域

wang.org父域
两种情况:
wang.org    sh.wang.org        #子域和父域放在同一台dns,节约成本
bj.wang.org        #把bj.wang.org单独放在一个dns,从父域DNS告知子域DNS
#第一种情况,子域和父域放在同一台dns (从逻辑上来讲,只是一条记录)
#主dns
[root@rocky ~]cd /var/named
[root@rocky named]# vim wang.org.zone
$TTL 86400
@     IN     SOA  dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W )NS     dns1NS  dns2
dns2     A     10.0.0.156
dns1     A     10.0.0.150
www      A     10.0.0.152
db         A     10.0.0.153
www.sh     A     1.1.1.1    #追加

[root@rocky ~]# rndc reload#配了对应dns的客户端查看
[root@rocky ~]# dig www.sh.wang.org
www.sh.wang.org.    86400    IN    A    1.1.1.1
#第二种情况,父域和子域在不同DNS#主服务器上要做子域的委派,委派给另外的dns来管理
[root@rocky named]# vim wang.org.zone
$TTL 86400
@     IN     SOA  dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W )NS     dns1NS  dns2
bj         NS  bjdns    #分配给bjdns的dns
dns2     A     10.0.0.156
dns1     A     10.0.0.150
bjdns     A     10.0.0.158
www      A     10.0.0.152
db         A     10.0.0.153
www.sh     A     1.1.1.1[root@rocky ~]# rndc reload#在bjdns的dns搭建dns  10.0.0.158
[root@rocky ~]# bash install_dns.sh#这里客户端查询采用的是递归查询的方式,父域dns去查子域dns获取ip再返回客户端

 

8 实现 DNS 转发(缓存)服务器

8.2 转发方式

8.2.1 全局转发

客户端访问一台dns1,如果dns1没有,它会转发到dns2上,dns2上没有,会去外网查,如果有返回dns1,dns1返回客户端
如果dns2没找到,告诉dns1没有,dns1有两种策略:
first: 选择自己去外网查
only: 选择放弃直接返回#准备一台机器作为dns2,装dns    10.0.0.38#在dns1上
#修改主配置文件
[root@rocky named]# vim /etc/named.conf
options {forwarders { 10.0.0.38;};forward first;    #dns2查不到,它自己查#forward only;    #dns2查不到就算了
        ...dnssec-enable no;    #这两项安全dns验证用的,要关(不能注释,默认为yes)dnssec-validation no;[root@rocky named]#named-checkonf
[root@rocky named]#rndc reload#客户端测试
[root@centos7 ~]#dig www.x.com
#测试当中会有缓存,两台bind服务上可以清下缓存,看效果
[root@rocky named]# rndc flush

8.2.2 特定区域转发

仅转发对特定的区域的请求,比全局转发优先级高

zone "ZONE_NAME" IN {type forward;forward first|only;forwarders { ip;};
};
first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询
only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询

9 实现智能 DNS

9.2 CDN (Content Delivery Network)内容分发网络

 对用户来说,只要把网站地址改个别名(比如阿里域名解析设置别名),指向cdn供应商地址即可

9.2.3 CDN 案例

使用以下链接测试访问上面图片链接

站长之家
https://tool.chinaz.com/speedtest

9.3 智能DNS相关技术 (了解,正常都是花钱买)

9.3.1 bind中ACL

ACL:把一个或多个地址归并为一个集合,并通过一个统一的名称调用

注意:只能先定义后使用;因此一般定义在配置文件中,处于options的前面

acl acl_name {ip;net/prelen;……
};
#范例:
acl test_net {172.16.0.0/24;10.0.0.0/24;
};
acl test_net {192.168.10.0/24;
};

9.3.4 view 视图

9.3.4.1 View:视图,将ACL和区域数据库实现对应关系,以实现智能DNS

1.一个bind服务器可定义多个view,每个view中可定义一个或多个zone
2.每个view用来匹配一组客户端
3.多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
注意:
1.一旦启用了view,所有的zone都只能定义在view中
2.仅在允许递归请求的客户端所在view中定义根区域
3.客户端请求到达时,是自上而下检查每个view所服务的客户端列表
#范例
view test_view {    #view名称match-clients { test_net; };zone "wang.org" {    #这些可以写到include配置中
        type master;file "wang.org.zone.bj"; };include "/etc/named.rfc1912.zones.test";
};
view product_view {match-clients { product_net; };#zone "wang.org" {#    type master;#    file "wang.org.zone.sh"; #};include "/etc/named.rfc1912.zones.product";
};

 

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

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

相关文章

Python用CNN - LSTM、ARIMA、Prophet股票价格预测的研究与分析|附数据代码

全文链接: https://tecdat.cn/?p=37860 原文出处:拓端数据部落公众号 分析师:Sabrina Huang 股票市场的波动起伏一直备受投资者关注,准确预测股票价格对于投资者制定合理的投资策略至关重要。股票价格数据具有时间序列特性,近年来,随着机器学习和深度学习技术的发展,各…

方法的回顾

1.静态方法与非静态方法静态方法即在方法前面有static,更加方便调用非静态方法书写的方法前面没有static修饰符,需要使用new进行实例化才可进行调用 未使用new实例化:使用new实例化后:2.静态方法与非静态方法之间的调用 方法可以调用方法,静态方法是与类一同生成的,所以我…

第109天:免杀对抗-PowerShell混淆分离加载特征修改EXE生成填充替换

知识点 知识点: 1、Powershell-对变量数据做文章 2、Powershell-对Shellcode做文章 3、Powershell-对执行代码特征做文章 章节点: 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加壳花指令-资源…

第110天:免杀对抗-GOC#反VT沙盒逆向调试参数加载资源分离混淆加密

知识点 #知识点: 1、C#-混淆&分离&反调试 2、GO-混淆&分离&反调试 3、成品程序-包含反调试VT #章节点: 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加壳花指令-资源 代码加载…

2024-2025-1 20241413 《计算机基础与程序设计》第三周学习总结

作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标 数字分类与计数法 位置计数法 进制转换 模拟数据与数字数据 压缩与解压 数字化 信息安全---- -…

第108天:免杀对抗-Python混淆算法反序列化打包生成器Py2exeNuitka

知识点 #知识点: 1、Python-对执行代码做文章 2、Python-对shellcode做文章 3、Python-对代码打包器做文章 #章节点: 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加壳花指令-资源 代码加载面-…

107-免杀对抗-CC++溯源ShellCode上线混淆变异算法回调编译执行

知识点 #知识点: 1、ShellCode-分析&朔源&感知 2、ShellCode-混淆&编码&算法 3、回调执行解析-API&汇编&句柄 #章节点: 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加…