域名解析系统 域名解析到ip正向 ip解析到域名(反向解析)
网络通信ip地址不好记忆 所以开发出一套系统给人使用
dig +trace xinjiapo.sanchuangedu.cn 找出域名的完整DNS解析路径,直到获取其IP地址。
dns域名解析过程:以www..baidu.com为例 迭代查询
1.客户机向本地dns服务器发起dns请求,要求解析域名www.baidu.com的ip
2.本地的dns服务器会在缓存里查找对应的域名,如果有,里面返回给客户机ip地址,如果没有,就问根域名服务器要www.baidu.com对应的ip
3.根域名服务器返回com.的ip地址,告诉本地dns服务器,问com.服务器www.baidu.com的ip
4.本地dns服务器向com服务器发起请求,com服务器返回baidu.com域名对应的dns服务器的地址
5.本地dns服务器向baidu.com服务器发起请求,baidu.com 域名服务器返回www.baidu.com域名对应的ip地址
6.本地dns服务器缓存www.baidu.com对应的ip,然后告诉客户机
7.客户机去访问www.baidu.com对应的ip服务器
缓存:
浏览器缓存 .操作系统缓存 本地dns服务器里的缓存
DNS的记录类型
www 192.168.205.1
A 地址解析记录 address 将域名解析到ip ipv4
NS 域名服务器记录 name server 一个域名里有多台专门负责域名解析的服务器的ip
AAAA 记录(IPv6 Address Record)
MX 记录(Mail Exchanger Record): 指明哪些邮件服务器负责处理发往该域名的电子邮件。MX记录包含优先级字段,用于确定邮件的路由顺序。
CNAME 记录(Canonical Name Record): 定义一个域名是另一个域名的别名。CNAME记录用于将一个域名映射到另一个域名上,而不是直接指向IP地址。
- 浏览器请求 当你在浏览器地址栏输入一个URL并按下回车键时,解析过程开始。
- 查询缓存 浏览器首先检查自身缓存中是否已经有该域名的IP地址记录。如果没有,它将询问操作系统,操作系统的缓存或hosts文件中也可能保存有记录。
- 请求本地DNS服务器 如果上述缓存中没有找到记录,浏览器将请求本地DNS服务器(通常是ISP提供的DNS服务器)来解析域名。这个请求是通过DNS协议发送的。
- 本地DNS服务器查询 本地DNS服务器也会先检查自己的缓存。如果缓存中有记录,则直接返回;如没有,它将作为DNS递归查询的起点,向上级DNS服务器请求解析。
- 递归和迭代查询 本地DNS服务器将首先询问根域名服务器(Root DNS Server)。根域名服务器不会直接提供IP地址,而是告诉本地DNS服务器应该询问哪一个顶级域名(TLD)服务器,如.com、.org等。
- 顶级域名服务器查询 本地DNS服务器随后查询相应的顶级域名服务器,顶级域名服务器再指引它去询问具体的权威域名服务器。
- 权威域名服务器响应 权威域名服务器(Authority DNS Server)是直接管理特定域名的服务器,它会返回所请求域名的A记录(IPv4地址)或AAAA记录(IPv6地址)。
- CNAME重定向 在某些情况下,权威域名服务器可能返回一个CNAME记录,指示域名实际上是另一个域名的别名,这时需要对新的域名进行额外的查询。
- 返回结果 最终,本地DNS服务器会获得IP地址,并将其返回给最初发起请求的浏览器。同时,本地DNS服务器会缓存这个结果,以便后续相同的请求可以直接从缓存中读取。
- 建立连接 浏览器收到IP地址后,将使用此IP地址与目标服务器建立TCP/IP连接,并请求所需的网页或其他资源。
缓存域名服务器 --》路由器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器 --》qq.com 163.com jd.com didi.com --》可以写入的
特定DNS区域的官方服务器,具有唯一性,权威性
负责维护该区域内所有域名->IP地址的映射记录
从域名服务器 --->负责读数据,不能写数据
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
安装DNS服务器
- 安装软件bind,bind是历史非常悠久,而且性能非常好的dns域名系统的软件
[root@nfs-ansible-prom prom]# yum install bind bind-utils -y
启动named服务
[root@nfs-ansible-prom prom]# service named restart
Redirecting to /bin/systemctl restart named.service
设置named服务开机启动
[root@nfs-ansible-prom prom]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@nfs-ansible-prom prom]# ps aux|grep named 查看进程
named 14125 0.1 1.4 242032 57676 ? Ssl 16:34 0:00 /usr/sbin/named -u named -c /etc/named.conf
root 14151 0.0 0.0 112824 976 pts/0 S+ 16:35 0:00 grep --color=auto named
[root@nfs-ansible-prom prom]# netstat -anplut|grep named 查看开放udp 53号端口
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 14125/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 14125/named
tcp6 0 0 ::1:53 :::* LISTEN 14125/named
tcp6 0 0 ::1:953 :::* LISTEN 14125/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 14125/named
udp6 0 0 ::1:53 :::* 14125/named
域名解析时用的upd访问dns服务器 速度快效率高 (tcp是面向可靠连接)
测试DNS服务能否使用:把/etc/resolv.conf 文件改成127.0.0.1 默认情况下dns只给自己解析 不允许其他 nslookup www.baidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
- 修改配置文件,重启服务器允许其他电脑能过来查询dns域名
[root@nfs-ansible-prom prom]# vim /etc/named.conf
options {
listen-on port 53 { any; }; #修改
listen-on-v6 port 53 { any; }; #修改
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 { any; }; #修改
重新启动named服务
[root@nfs-ansible-prom prom]# service named restart
Redirecting to /bin/systemctl restart named.service
在其他机器上测试DNS服务器
修改本机和其他机器的dns服务器为自己搭建的dns服务器ip,添加2个DNS服务器地址,第1个DNS服务器地址优先级高
[root@nfs-ansible-prom prom]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.159.138
#nameserver 114.114.114.114
在web1服务器上修改DNS服务器的地址
[root@web1 ~]# vim /etc/resolv.conf
[root@web1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
#nameserver 114.114.114.114
nameserver 192.168.159.138
使用nslookup和ping、dig命令进行dns域名查询的测试
[root@nfs-ansible-prom prom]# nslookup www.baidu.com
Server: 192.168.159.138
Address: 192.168.159.138#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.2.172.42
[root@web1 ~]# ping www.baidu.com
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=128 time=25.2 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=128 time=25.2 ms
^C
在web1和db服务器上安装bind-utils工具包,可以获得nslookup和dig命令
增加自己项目的zone文件
给自己的web集群项目提供域名解析,我们使用scweb.com这个域名
1.修改配置文件,告诉named为scweb.com提供域名解析 /etc/named.conf(主要配置)
[root@nfs-ansible-prom prom]# vim /etc/named.rfc1912.zones(次要配置文件)
//添加下面的配置,增加一个scweb.com的域名
zone "scweb.com" IN {
type master;
file "scweb.com.zone";
allow-update { none; };
};
2./var/named/ 存放dns域名解析的数据文件scweb.com.zone 创建scweb.com的数据文件
[root@nfs-ansible-prom prom]# cd /var/named/
[root@nfs-ansible-prom named]# cp -a named.localhost scweb.com.zone
修改scweb.com.zone文件,添加我们自己的相关服务的A记录和别名记录
[root@nfs-ansible-prom named]# vim scweb.com.zone
[root@nfs-ansible-prom named]# cat scweb.com.zone
$TTL 1D
@ IN SOA ns1.scweb.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.scweb.com.
A 192.168.159.138
AAAA ::1
www A 192.168.205.188
nfs A 192.168.159.136
web CNAME www
luobiao CNAME nfs
* A 192.168.205.188
刷新named服务,让新的配置生效
[root@nfs-ansible-prom named]# service named restart
Redirecting to /bin/systemctl restart named.service
检查数据文件是否有错误
[root@nameserver data]# named-checkzone scweb.com /var/named/scweb.com.zone
zone sc.com/IN: loaded serial 0
OK
[root@nameserver data]# named-checkconf /etc/named.rfc1912.zones 检查配置文件
测试DNS服务器记录
在其他的服务器上进行测试,我们添加的A记录和别名记录,*泛域名解析记录 @本域名记录(scweb.com)
[root@web1 ~]# nslookup www.scweb.com
Server: 192.168.159.138
Address: 192.168.159.138#53
Name: www.scweb.com
Address: 192.168.205.188
[root@web1 ~]# nslookup nfs.swebc.com
Server: 192.168.159.138
Address: 192.168.159.138#53
[root@web1 ~]# nslookup web.sc.com
Server: 192.168.203.145
Address: 192.168.203.145#53
web.sc.com canonical name = www.sc.com.
Name: www.sc.com
Address: 192.168.203.144
[root@web1 ~]# dig NS scweb.com
;scweb.com. IN NS
;; ANSWER SECTION:
scweb.com. 86400 IN NS ns1.scweb.com.
;; ADDITIONAL SECTION:
ns1.scweb.com. 86400 IN A 192.168.205.188
[root@lb-1 conf]# nslookup luobiao.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
[root@lb-1 conf]# nslookup zhouqiang.scweb.com (*任意)
Server: 192.168.205.134
Address: 192.168.205.134#53
[root@lb-1 conf]# dig +short NS scweb.com
ns1.scweb.com.
问题:
hosts文件里的域名解析优先级比DNS服务器高
能解析出来不能ping通,不关dns服务器的事,是网络的问题或者相关服务器的问题
别名记录的作用,可以将流量导入到其他的地方---》CDN
当服务启动不了的时候,如何排错?
1.看日志 tail -f /var/log/messages
2.使用检测工具:检测配置文件和数据文件