代码编织梦想


参考博客
https://blog.csdn.net/loukundeboke/article/details/80012231

知识点1 DNS服务

DNS( Domain Name System) 域名系统

前提:
我们网络中都是使用ip地址通信,无论是访问服务,还是不同主机间进行数据交换
ip地址非常多,如果每个服务都通过ip地址来登录的话,用户就需要记住这些很复杂的ip地址,不方便用户使用

就像保存在手机里的电话号码一样,会有一个备注,通过这个备注 就可以找到正确的相应联系人的电话
那域名解析跟这个实现差不多,在普通用户中,我们用域名来访问服务,域名就通过域名解析来获取到ip地址
dns服务就像电话簿,提供了可以查询的域名到ip地址的映射关系

#注:在浏览器中输入www.taobao.com,敲回车的一瞬间,先去解析域名

1、完全限定域名 FQDN

FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯一的;另外值得提到的一点是域并不是指诸如www.google.com这样的域名,而google.com才是域
#注:www.music.163.com/		163.com是域,前面是主机名


安装dns服务软件包bind
[root@cPen_B ~]# yum install bind
#注:安装后,数据存放在/var/named/下
[root@cPen_B ~]# cd /var/named/
[root@cPen_B named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

2、域的分类

一、根域(.) 全球13组根域名服务器以英文字母A到M依序命名,域名格式为“字母.root-servers.net”
在/var/named/name.ca文件中可以查看		# 注:标识为.
二、顶级域
顶级域:顶级域(Top Level Domain,简称TLD)分为三类
     1> 通用顶级域:诸如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等
     2> 国家顶级域:诸如 .cn(中国) .uk(英国) .us(美国) .jp(日本) .hk
     3> 反向域(基础建设顶级域):.arpa,即从IP到FQDN的反向解析	# 注:反向查找
#注:正向域:从域名到ip; 反向域:从ip到域名
三、
二级域
三级域
www.sc.163.com	--> 顶级域.com  -->二级域163.com  -->三级域sc.163.com
#注:前面的www是它的主机名

3、DNS解析

正向解析	域名 --> ip
反向解析	ip --> 域名
常用命令域名解析命令:
1、Ping
[root@cPen_A ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=16.3 ms
#注:ping命令只能返回1个ip

2、host
安装bind-utils软件包
yum install bind-utils
[root@cPen_A ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.#注:为www.a.shifen.com取别名www.baidu.com
www.a.shifen.com has address 14.215.177.38	#注:ip地址
www.a.shifen.com has address 14.215.177.39

3、dig					#注:看的比较详细,推荐
[root@cPen_A ~]# dig www.baidu.com
;; ANSWER SECTION:
www.baidu.com.		34	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	216	IN	A	14.215.177.38
www.a.shifen.com.	216	IN	A	14.215.177.39

4、nslookup
[root@cPen_A ~]# nslookup www.baidu.com
www.baidu.com	canonical name = www.a.shifen.com.	#注:查询的时候会加上根域,平时感觉不到
Address: 14.215.177.38
Address: 14.215.177.39

#注:可以拿DNS实现分流的作用。将新机器的域名地址解析成2个ip
#注:负载均衡:把很多机器当做1台机器使用。DNS可以做到负载均衡,把流量分发的很多机器
#注:高可用:1台机器去服务 它跪掉了,高可用就是这台机器跪掉了,把流量引导其他机器
#注:高可用	避免单点故障
#注:运维思想:备份、高可用。比如系统盘2块,其中1块跪掉了,另外一块还能继续服务
#注:负载均衡和高可用 一般一起存在
DNS服务软件:bind
默认端口 upd协议 53号端口
[root@cPen_A ~]# less /etc/services 
domain          53/udp

示例:修改/etc/hosts文件

[root@cPen_A ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@cPen_A ~]# ping localhost			#注:解析成127.0.0.1
PING localhost (127.0.0.1) 56(84) bytes of data.
[root@cPen_A ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   www.baidu.com baid.com		#注:添加这一行
[root@cPen_A ~]# ping www.baidu.com
PING www.baidu.com (127.0.0.1) 56(84) bytes of data.	#注:解析成127.0.0.1
[root@cPen_A ~]# ping baid.com
PING www.baidu.com (127.0.0.1) 56(84) bytes of data.	#注:解析成127.0.0.1
#注:/etc/hosts文件 解析时 优先级最高

示例:解析网址

[root@cPen_A html]# pwd
/usr/share/nginx/html
[root@cPen_A html]# vim index.html
hello world
cPen
[root@cPen_A html]# ip a
inet 192.168.0.19/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
#Windows机器上
Windows:C:\Windows\System32\drivers\etc\hosts
#注:hosts文件里
# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
192.168.0.39 www.ldj.com				#注:添加这一条
这样在浏览器查找 www.ldj.com 就会访问到linux机器上的网址。www.ldj.com被解析成192.168.0.39

知识点2 DNS解析过程

DNS解析过程:
#注:面试题:当敲入www.baidu.com 发生什么事情

1、先查找本地hosts文件,linux:/etc/hosts;  Windows:C:\Windows\System32\drivers\etc\hosts
可以解析就直接返回地址
2、hosts文件不能解析,去看本地缓存。如果有,则返回结果,没有就进行下一步查找
linux下域名缓存:nscd服务
[root@cPen_A html]# yum install nscd
[root@cPen_A html]# service nscd restart		#注:清除缓存 (重启服务就是清除缓存)
缓存会有缓存时间,缓存多久可以指定的
#注:设置了DNS服务,但是设置了没有生效,考虑1、缓存 清除缓存和2、/etc/hosts是否写死
3、本地缓存没有找到,就会去请求本地的域名服务器,本地域名服务器有 就返回查询结果
Linux下指定域名解析服务器文件 /etc/resolv.conf  (配置本地域名服务器ip地址的文件)
第1个指定的nameserver就是首选dns服务器,剩下的都是备选dns服务器
[root@cPen_A html]# vim /etc/resolv.conf 
# Generated by NetworkManager
nameserver 114.114.114.114						#注:可以指定多个ip 去解析ip
nameserver 192.168.0.1							#注:用nameserver指定
[root@cPen_A html]# dig www.baidu.com
;; SERVER: 114.114.114.114#53(114.114.114.114)		#注:访问114.114.114.114 53号端口去解析ip
4、本地域名服务器没有找到相应记录,如果设置转发查找,就会去转发的服务器上去查询。如果没有设置转发,或者都没有找到,就会去根域查找 (迭代查找)
本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机
#注:面试题:当敲入www.baidu.com 发生什么事情 (DNS解析流程)
答:DNS解析流程
第1步 先去 本地hosts文件(/etc/hosts)去找 ip和域名的映射关系。有就返回。没有就去
第2步 本地DNS缓存 找…。有就返回。没有就去
第3步 本地的域名服务器 (/etc/resolv.conf)找…。有就返回。没有就
第4步 如果本地域名服务器 设置转发查找,就会去转发的服务器 上找…, 有就返回。
没有找到 或 没有设置 就去 根域查找,先在根域里找到顶级域的服务器ip地址 返回顶级域的ip地址给本地域名服务器
本地域名服务器再去顶级域名服务器 找,没有找到就返回二级域服务器的ip地址,本地域名服务器去二级域里找,没有找到 返回三级域的ip地址给本地域名服务器……迭代查找,直到找到整个域名才返回
或者说 去根域查找,迭代查找,  直到找到为止

知识点3 dns服务的类型

1、缓存域名服务器
2、主域名服务器
这上面定义了真正的ip到域名的映射关系
3、从域名服务器
上面的数据域名映射 从主域名服务器获取
1、缓存域名服务器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录 
将域名查询结果缓存到本地,提高重复查询时的速度
3、主域名服务器
特定DNS区域的官方服务器,具有唯一性,权威性 
负责维护该区域内所有域名->IP地址的映射记录
3、从域名服务器
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器

知识点4 域名服务器配置

1、安装bind、bind-utils

域名解析主程序
[root@cPen_B etc]# which named
/usr/sbin/named

2、配置文件

如果没有安装bind-chroot软件包
主配置文件: /etc/named.conf   数据文件位于:/var/named/目录
[root@cPen_B etc]# less /etc/named.conf 

3、修改配置

1、 vim /etc/named.conf					# 注:全局配置文件
options {
        listen-on port 53 { 127.0.0.1; };	
        listen-on port 53 { any; };			# 注:将监听地址改成any,设置监听在本机的任意ip上
        allow-query     { localhost; };		# 注:允许访问服务的主机 
        allow-query     { any; };			# 注:将权限设置为any,允许任何人来查询
zone "." IN {				# 注:定义根域
        type hint;			# 注:指定根域
        file "named.ca";	# 注:在named.ca里去找 /var/named/named.ca
};
include "/etc/named.rfc1912.zones";			# 注:定义其他域
include "/etc/named.root.key";
2、域配置文件 /etc/named.rfc1912.zones
添加域配置:
[root@cPen_B ~]# vim /etc/named.rfc1912.zones
zone "sc.com" IN {						# 注:添加sc.com域的解析
        type master;					# 注:主域名服务器
        file ""sc.com"";				# 注:域名配置存放文件 (域的解析从哪里文件里去找)
        allow-update { none; };
};

4、配置指定域的解析文件

目录:/var/named
#注:注意权限, named用户要可读
#注:注意属组
[root@cPen_B named]# cp named.empty sc.com
[root@cPen_B named]# pwd
/var/named
[root@cPen_B named]# vim sc.com 
$TTL 3H							; 注:缓存时间
@       IN SOA   sc.com. (			; 注:修改的地方
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
;注:A记录	正向解析记录	
dns A 192.168.136.129			;注:dns服务器的IP地址
www A 192.168.136.129			;注:www服务器的IP地址
*    A  192.168.136.123			;注:配置泛域名解析
;mail MX 192.168.136.129		;注:分号注释
;dns  IN 600 A  192.168.136.129	;注:配置A记录解析 缓存时间为600s
[root@cPen_B named]# service named restart	# 注:重启服务
[root@cPen_B named]# lsof -i:53				# 注:端口起来了
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
named   1839 named   21u  IPv4  42519      0t0  TCP localhost:domain (LISTEN)
named   1839 named   22u  IPv4  42521      0t0  TCP cPen_B:domain (LISTEN)
named   1839 named   23u  IPv6  42523      0t0  TCP localhost:domain (LISTEN)
[root@cPen_B named]# dig www.sanchuang.com
;; SERVER: 192.168.136.2#53(192.168.136.2)
[root@cPen_B named]# cat /etc/resolv.conf 	# 注:指定本机的DNS服务器
# Generated by NetworkManager
search localdomain
nameserver 192.168.136.2
[root@cPen_B named]# dig www.sc.com @192.168.136.129		# 注:用192.168.136.129去解析
;; QUESTION SECTION:
;www.sc.com.			IN	A

;; ANSWER SECTION:
www.sc.com.		10800	IN	A	192.168.136.129		# 注:解析成功

;; AUTHORITY SECTION:
sc.com.			10800	IN	NS	sc.com.
#设置反向域
[root@cPen_B named]# vim /etc/named.rfc1912.zones
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

[root@cPen_B named]# pwd
/var/named
[root@cPen_B named]# less named.loopback 

知识点5 资源记录类型

(1)A记录(Address)正向解析
A记录是将一个主机名(全称域名FQDN)和一个IP地址关联起来。这也是大多数客户端程序默认的查询类型。
(2)PTR记录(Pointer)反向解析
PTR记录将一个IP地址对应到主机名(全称域名FQDN)。这些记录保存在in-addr.arpa域中。
(3)CNAME记录(Canonical Name)别名
别名记录,也称为规范名字(Canonical Name)。这种记录允许您将多个名字映射到同一台计算机。
(4)MX记录(Mail eXchange)
MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。
      当有多个MX记录(即有多个邮件服务器)时,则需要设置数值来确定其优先级。通过设置优先级数字来指明首选服务器,数字越小表示优先级越高。
(5)NS记录(Name Server)
NS(Name Server)记录是域名服务器记录,也称为授权服务器,用来指定该域名由哪个DNS服务器来进行解析。
将网站的NS记录指向到目标地址,在设置NS记录的同时还需要设置目标网站的指向,否则NS记录将无法正常解析
NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/cPen_web/article/details/110405214

RabbitMQ 系列(1) —— RabbitMQ的安装-爱代码爱编程

Rabbit MQ 的安装 Step1: 下载 Erlang 在安装 Rabbit MQ 之前,我们需要先安装 Rabiit MQ 所需要的的环境 Rabbit MQ 是由 Erlang 语言编写的,因此在安装 Rabbit MQ 之前需要安装 Erlang。 Erlang 的下载地址 https://www.erlang.org/downl

Linux之系统管理(System management)-爱代码爱编程

系统基础管理和维护1.常用命令 放大终端 : “ctrl”+“shift”+"+"(有的电脑"ctrl"+"+") 切换目录: cd ~ 查看当前目录: pwd 显示 链接文件的真实路径: pwd -P 查看当前目录的文件和子目录: ls 显示所有文件包括隐藏文件: ls -a 显示影藏文件: ls -A 显示的是链接路径下的真实文件: ls -L 清屏:

Linux开机自启java服务脚本(可配置)-爱代码爱编程

基于shell脚本编写的服务自启程序: 1.主程序代码(autoboot-2.0.sh): #! /bin/sh echo "in autoboot-2.0.sh" cd /autoboot while read line do basepath=$line cd $basepath jarStartSh=$(ls $basepath|grep s

线程学习开端之 线程与进程-爱代码爱编程

目录 1、线程与进程线程与进程==区别==:2、线程相关API1、创建2.退出 pthread_exit()3.等待4. 线程ID获取完整代码验证线程间共享内存代码 1、线程与进程    线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,

Linux 设备驱动的软件架构思想(二)(摘录)-爱代码爱编程

Linux 设备驱动的软件架构思想(二)(摘录) 将 globalfifo 作为 platform 设备 前面章节的 globalfifo 驱动挂接到 platform 总线上,这要完成两个工作。 1 )将 globalfifo 移植为 platform 驱动。 2 )在板文件中添加 globalfifo 这个 platform 设备。 为完成将 glo

Linux文本编辑器vim使用-爱代码爱编程

文章目录 一、vim是什么?二、vim的基本操作1、 vim之三种模式转换2、vim之快捷键(一般模式下)三、总结 一、vim是什么? vim可以看作是linux系统内建vi文本编辑器的升级版,可以以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译等方便编程的功能比较丰富,在程序员中被广泛使用。 二、vim的基本操作 1、 vim之

docker网络(三) ------------ 端口与DNS-爱代码爱编程

容器网络 容器使用的网络类型对于用户而言是透明的,无论底层是网桥,overlay,macvlan或者使用特定的网络插件.从容器的视角看,它有一个自己的IP地址,自己的网络接口,网关,路由表,DNS服务器以及其它与网络相关的细节. 发布端口 默认情况下,当使用docker create或者docker run创建一个容器时,它不会向外界发布任何端口.要

dns域名解析过程-爱代码爱编程

DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。比如:上网时输入的www.baidu.com会自动转换成为2

golang:第三方库,dns解析库miekg/dns-爱代码爱编程

文章目录 一、dns解析库miekg/dns1.1 dns查询 一、dns解析库miekg/dns 第三方dns库miekgmiekg/dns 可以做dns查询、可以做local dns、可以做授权dns。 由于下载不到:golang.org/x/crypto/ed25519,需要将代码中相关的代码删除掉,做dns查询时不会用到该部分代码。

DNS用的是TCP协议还是UDP协议-爱代码爱编程

DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议? DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。 DNS区域传输的时候使用TCP协议: 1.辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因

网络-DNS域名系统详解与DNS攻击-爱代码爱编程

目录 简介 互联网域名结构 顶级域名 二级域名 域名服务器 根域名服务器 顶级域名服务器 权限域名服务器 本地域名服务器 DNS查询 报文格式 查询 DNS攻击实战 域名劫持 DNS欺骗 DNS防范 参考 简介 DNS(Domain Name System,域名系统)是互联网使用的命名系统,是一个分布式数据库,用来把域

bind服务12---分离解析-爱代码爱编程

一、分离解析 什么是分离解析? 简单来说就是根据客户端的解析请求, DNS服务器能够区分客户端的来源ip,为不同的用户类型提供不同的解析结果。 比如说我在广州搭建了网站服务器,南方的朋友访问不会感觉到什么,但如果是北方或者海外的朋友访问,速度势必会比较慢。为了解决这个问题,可购买多个服务器部署在不同的地理位置,然后再使用DNS服务的分离解析功能,即可让位