DNS-域名解析

DNS

介绍

概述

  • DNS(domain name system ) :域名管理系统

  • 域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。

  • IP地址比较隐晦,难以记忆;而域名更加便于人们记忆,可通过DNS服务器的key-value数据库,记录ip-域名的对应关系,从而将域名解析为IP地址,用于通信。

  • DNS作用:

    • 域名的正向解析:将主机域名转换为对应的IP 地址(域名——>IP),A记录
    • 域名的反向解析:将主机的IP地址转换为对应的域名(IP——>域名),PTR记录
  • DNS 的域名解析基于udp/53 ;主从之间的数据传输基于tcp/53

  • 本地的DNS解析文件**/etc/hosts** 这个文件是运维人员自定义的用于域名-ip强制解析(优先级高于/etc/resolv.conf)

  • /etc/resolv.conf 该文件填入的是互联网dns服务器的地址

[root@server1 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 114.114.114.114  <--中国DNS服务器地址
nameserver 223.5.5.5   <--阿里云dns域名服务器地址

DNS结构

在这里插入图片描述

例如域名www.baidu.com
完整DNS结构www.baidu.com.

说明(DNS从右向左解析):

. 根域:
	全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在	美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

.com 一级域名:也叫顶级域,国家域。
	.com :商业公司
	.net :互联网公司
	.edu :教育(中小学、高中、大学....gov :政府
	.io  :存储设备,如redis
	.cn  :中国域名(国家域)
	.hk  :中国香港
	.org :非盈利组织
	
.baidu.com(baidu) 二级域名, 自己购买,先到先得(购买网站:新网,万网)

www 万维网

解析流程

  1. 浏览器发起域名解析,首先查询浏览器缓存,如果没有,就查询hosts文件,如果也没有就提出域名解析请求
  2. 客户机提出域名解析请求,并将该请求发送给本地的DNS服务器。
  3. 当本地的DNS服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
  4. 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个查询到的顶级域名服务器的地址。
  5. 本地服务器再向上一步返回的顶级域名服务器发送请求,顶级域名服务器查询自己的缓存,如果没有该纪录,则返回查询到的二级域名服务器的地址。
  6. 本地服务器再向上一步返回的二级域名服务器发送请求,二级域名服务器查询自己的缓存,返回域名对应的ip地址
  7. 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机

在这里插入图片描述

使用dig工具追踪DNS的解析过程
[root@server1 ~]# yum install -y bind-utils.x86_64
[root@server1 ~]# dig +trace www.itcast.cn

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> +trace www.itcast.cn
;; global options: +cmd
.			163	IN	NS	i.root-servers.net.
.			163	IN	NS	h.root-servers.net.
.			163	IN	NS	c.root-servers.net.
.			163	IN	NS	a.root-servers.net.
.			163	IN	NS	f.root-servers.net.
.			163	IN	NS	m.root-servers.net.
.			163	IN	NS	l.root-servers.net.
.			163	IN	NS	d.root-servers.net.
.			163	IN	NS	j.root-servers.net.
.			163	IN	NS	e.root-servers.net.
.			163	IN	NS	k.root-servers.net.
.			163	IN	NS	b.root-servers.net.
.			163	IN	NS	g.root-servers.net.
;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 8 ms

cn.			172800	IN	NS	a.dns.cn.
cn.			172800	IN	NS	b.dns.cn.
cn.			172800	IN	NS	c.dns.cn.
cn.			172800	IN	NS	d.dns.cn.
cn.			172800	IN	NS	e.dns.cn.
cn.			172800	IN	NS	f.dns.cn.
cn.			172800	IN	NS	g.dns.cn.
cn.			172800	IN	NS	ns.cernet.net.
cn.			86400	IN	DS	57724 8 2 5D0423633EB24A499BE78AA22D1C0C9BA36218FF49FD95A4CDF1A4AD 97C67044
cn.			86400	IN	RRSIG	DS 8 1 86400 20210911050000 20210829040000 26838 . SZO+lMEsYEFAY4O2wppjQALIBeOa4DrZkv0tveyy4CMbXS0lqL3ftSov /RHL99svQo5v4ubDwdTtpAliftyI16T4vFBxocCrzEHIX2NxxTbNbmMD F1hxwDS42wqLguBe84VqU/Jcss47bsctYdwcYAhaWLpdrDOh7TGXPVfk vj32/+anH0YXOKRhllbZ7L+fur3OG4/IX/jd3KjxAnKwIst3QV3OvUJL 65g9RfFwOA9ZSd+YyJ/JCwkgF4PptIv/lbxew0Bi/3rGb2d3QW65+trM 1EDqUusygzbRBK2ADSsuIyfnZDIbjwKjf1i4L8WACp8ZCXYplGxL0z66 r5Jpzw==
;; Received 704 bytes from 199.7.83.42#53(l.root-servers.net) in 26 ms

itcast.cn.		86400	IN	NS	f1g1ns1.dnspod.net.
itcast.cn.		86400	IN	NS	f1g1ns2.dnspod.net.
3QDAQA092EE5BELP64A74EBNB8J53D7E.cn. 21600 IN NSEC3 1 1 10 AEF123AB 3QM14FQ32F1CJFTP8D3J5BCTNP5BIELO NS SOA RRSIG DNSKEY NSEC3PARAM
3QDAQA092EE5BELP64A74EBNB8J53D7E.cn. 21600 IN RRSIG NSEC3 8 2 21600 20210908124222 20210809121236 38388 cn. nXOGveGOhga527rJ5/ZvNX/ugVImY1A8PjrW8onAXwJ44ePmOUiYsIdM G3fRXiBWBrxxwdNTixPbbse/OVRrz1ZRSMrqZdz00HVoPzTujm37u/pF MtUs7AkvoiwKRy5/W/YND5h2fM6k4GinNIGAmZwUJwdT9iOAM0ixSWLs El4=
PCJUFA22UPNLQBBUDUAEB59JVUT20EP2.cn. 21600 IN NSEC3 1 1 10 AEF123AB PEM7KR3N4VHJTU3R5P738A35805JIF1I CNAME RRSIG
PCJUFA22UPNLQBBUDUAEB59JVUT20EP2.cn. 21600 IN RRSIG NSEC3 8 2 21600 20210908131644 20210809124446 38388 cn. DHK4ijI1CRa5xmYCLc2H+j4e8UCUw5hnTbknvWVkYYDlFBEc/X+x+XMU PoBCPj7/PrTe8e8t1y7IyewupfHU/a9EcuEf8B9pn/k2od2mOmwSicTT fXpIkdUkkUzzsIA5ns3fMMNXWZX3NE0v22er3DB7TPzoAb1I/pHyDAxd jiY=
;; Received 587 bytes from 203.119.29.1#53(e.dns.cn) in 37 ms

www.itcast.cn.		600	IN	A	39.105.180.218
itcast.cn.		86400	IN	NS	f1g1ns2.dnspod.net.
itcast.cn.		86400	IN	NS	f1g1ns1.dnspod.net.
;; Received 122 bytes from 129.211.176.224#53(f1g1ns2.dnspod.net) in 7 ms

dig其他用法
[root@server1 ~]# dig www.baidui.com #正向解析
[root@server1 ~]# dig -x 103.39.231.155 #反向解析

DNS劫持

客户端dns服务器地址被篡改,客户端通过域名访问网络,在dns服务器端有一个恶意的域名解析,这样就会给客户端返回一个错误的ip,造成客户端看到错误的网址内容。

域名解析记录

  • A:记录地址,返回的域名所指向IP地址

  • NS:域名服务器,返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址

  • MX:邮箱记录,返回接收电子邮箱的服务器地址

  • CNAME:规范名称记录,返回另一个域名,即当前查询的域名是另一个域名的跳转

  • PTR:逆查域名,只用于IP地址查询域名

  • TXT:用来做SPF(反垃圾邮箱)

  • AAAA:用来指定主机名(或域名)对应的IPv6记录。 SRV:记录哪台计算机提供哪个服务。格式:服务 名字、点、协议的类型。

  • 显性URL:从一个地址301重定向另一个地址的时候。 隐性URL:类似显性URL、区别在于隐形URL不会改变地址中的域名。

服务端软件Bind

  • Bind是一款开放源码的DNS服务器软件,全名为Berkeley Internet Name Domain,它是目前世界上使用最为广泛的DNS服务器软件

  • 支持各种unix平台和windows平台。

  • IND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

查看域名-ip的解析关系

ping

  • 可通过域名,查看对应的ip

nslookup

[root@server1 ~]# yum install -y bind-utils.x86_64 
[root@server1 ~]# nslookup www.baidu.com   <--非交互式
Server:		114.114.114.114
Address:	114.114.114.114#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 36.152.44.96
Name:	www.a.shifen.com
Address: 36.152.44.95
[root@server1 ~]# nslookup   <--交互式
> www.baidui.com
Server:		114.114.114.114
Address:	114.114.114.114#53

Non-authoritative answer:
Name:	www.baidui.com
Address: 103.39.231.155

DNS服务器搭建

基于Centos7

主机名称IP地址备注信息
client192.168.226.10client客户端,用于测试
dns192.168.226.20dns服务器,用于实现域名解析
web192.168.226.30web服务器,用于搭建内部web服务
基于bind(named)
正向解析
环境准备
[root@server1 ~]# hostnamectl set-hostname client
[root@server1 ~]# su
[root@server2 ~]# hostnamectl set-hostname dns
[root@server2 ~]# su
[root@server3 ~]# hostnamectl set-hostname web
[root@server3 ~]# su
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
setenforce 0
sed -i 's/enforced/disabled/' /etc/selinux/config
getenforce

安装bind
[root@dns ~]# yum install -y bind

拷贝配置文件
# /etc/named.conf 配置访问权限控制
# /etc/named.rfc1912.zones 主要定义域名如何解析
[root@dns ~]# cp /etc/named.conf /etc/named.conf.bak
[root@dns ~]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

修改配置文件
[root@dns ~]# vim /etc/named.conf
#修改
options {
    listen-on port 53 { 127.0.0.1;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; }; #允许其他主机访问
---------------------------------------------------------
[root@dns ~]# vim /etc/named.rfc1912.zones
#追加 
zone "gaoxueya.cluster" IN {
    type master;
    file "gaoxueya.cluster.zone";
    allow-update { none; };
};

创建文件gaoxueya.cluster.zone
[root@dns ~]# cd /var/named
[root@dns named]# cp named.localhost gaoxueya.cluster.zone -p #-p:保留文件原有属性
[root@dns named]# vim gaoxueya.cluster.zone 
$TTL 1D #缓存的生存周期
@   IN SOA  @ rname.invalid. (
                    0   ; serial #更新序列号	
                    1D  ; refresh #更新间隔(一天)
                    1H  ; retry #失败重试(一小时)
                    1W  ; expire #区域文件的过期时间(一周)
                    3H )    ; minimum #缓存的最小生存周期
    NS  @
    A   127.0.0.1 #ipv4
    AAAA    ::1   #ipv6
www A   192.168.226.30 

检查语法
[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones
[root@dns named]# named-checkzone gaoxueya.cluster.zone gaoxueya.cluster.zone 
zone gaoxueya.cluster.zone/IN: loaded serial 0
OK

启动服务
[root@dns named]# systemctl start named
[root@dns named]# systemctl status named

web搭建
[root@web ~]# yum install -y httpd
[root@web ~]# systemctl start httpd
[root@web ~]# echo 'DNS Test ...' > /var/www/html/index.html

client添加DNS服务器(临时,永久需修改网卡配置文件)
[root@client ~]# echo 'nameserver 192.168.226.20' >> /etc/resolv.conf 

测试
[root@client ~]# nslookup www.gaoxueya.cluster
Server:		192.168.226.20
Address:	192.168.226.20#53

Name:	www.gaoxueya.cluster
Address: 192.168.226.30
[root@client ~]# curl http://www.gaoxueya.cluster 
DNS Test ...
反向解析
同正向解析(可不修改)
-----------------------------------------------
[root@dns ~]# vim /etc/named.rfc1912.zones
#追加
zone "226.168.192.in-addr.arpa" IN { #192.168.226网段需要从右向左写
    type master;
    file "192.168.226.zone";
    allow-update { none; };
};

[root@dns ~]# cd /var/named/
[root@dns named]# cp -p named.loopback 192.168.226.zone
[root@dns named]# vim 192.168.226.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.
30  PTR www.gaoxy.com #追加

[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones
[root@dns named]# named-checkzone 192.168.226.zone 192.168.226.zone 
zone 192.168.226.zone/IN: loaded serial 0
OK

[root@dns named]# systemctl start named
[root@dns named]# systemctl status named

[root@client ~]# echo 'nameserver 192.168.226.20' > /etc/resolv.conf 
[root@client ~]# nslookup 192.168.226.30
30.226.168.192.in-addr.arpa	name = www.gaoxy.com.226.168.192.in-addr.arpa.

主从部署
  1. master和slave的系统时间保持一致
  2. slave服务器上安装相应的软件(系统版本、软件版本保持一致)
  3. 根据需求修改相应的配置文件
  4. 核心是slave同步master上的区域文件(zone文件)
[root@server4 ~]# hostnamectl set-hostname dns_slave
[root@server4 ~]# su
[root@dns_slave ~]# systemctl stop firewalld.service
[root@dns_slave ~]# systemctl disable firewalld.service
[root@dns_slave ~]# systemctl status firewalld.service
[root@dns_slave ~]# setenforce 0
[root@dns_slave ~]# sed -i 's/enforced/disabled/' /etc/selinux/config
[root@dns_slave ~]# getenforce

更改主服务器,允许从服务器同步资源
[root@dns ~]# vim /etc/named.conf
#添加
allow-transfer  {192.168.226.40; };
[root@dns ~]# systemctl restart named

从服务器安装bind
[root@dns_slave ~]# yum install -y bind

修改配置文件
[root@dns_slave ~]# vim /etc/named.conf 
options {
    listen-on port 53 { 127.0.0.1;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; }; #修改

修改zone文件
[root@dns_slave ~]# vim /etc/named.rfc1912.zones 
#追加
zone "gaoxueya.cluster" IN {
    type slave;
    file "slave/gaoxueya.cluster";
    masters { 192.168.226.20; };
};

启动服务
[root@dns_slave ~]# systemctl start named

基于dnsmasq
环境准备(同上)
[root@server1 ~]# hostnamectl set-hostname client
[root@server1 ~]# su
[root@server2 ~]# hostnamectl set-hostname dns
[root@server2 ~]# su
[root@server3 ~]# hostnamectl set-hostname web
[root@server3 ~]# su
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
setenforce 0
sed -i 's/enforced/disabled/' /etc/selinux/config
getenforce

安装
[root@dns ~]# yum install -y dnsmasq

修改主配置文件
[root@dns ~]# vim /etc/dnsmasq.conf 
#指定上游dns服务器地址
resolv-file=/etc/resolv.dnsmasq.conf
#自定义域名解析到某个IP地址上
address=/baidu.com/192.168.226.30
address=/taobao.com/192.168.226.30
#指定dnsmasq的监听地址(可填127.0.0.1(本机),想要所有人可以访问0.0.0.0)
listen-address=192.168.226.20,192.168.226.10
#指定本地域名配置文件(需要自定义域名激励)
addn-hosts=/etc/dnsmasq.hosts
#指定dns查询的日志
log-queries
#包含目录的语法
conf-dir=/etc/dnsmasq.d
conf-dir=/etc/dnsmasq.d,.bak
conf-dir=/etc/dnsmasq.d/,*.conf
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
[root@dns ~]# cat /etc/dnsmasq.conf |grep -Ev "^#|^$"
resolv-file=/etc/resolv.dnsmasq.conf
address=/baidu.com/192.168.226.30
address=/taobao.com/192.168.226.30
listen-address=127.0.0.1
addn-hosts=/etc/dnsmasq.hosts
log-queries
conf-dir=/etc/dnsmasq.d
conf-dir=/etc/dnsmasq.d,.bak
conf-dir=/etc/dnsmasq.d/,*.conf
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

添加相应的子配置文件
[root@dns ~]# echo '192.168.226.30 www.gxy.com' >> /etc/dnsmasq.hosts
[root@dns ~]# cat /etc/dnsmasq.hosts 
192.168.226.30 www.gxy.com
[root@dns ~]# vim /etc/resolv.dnsmasq.conf
[root@dns ~]# cat /etc/resolv.dnsmasq.conf 
nameserver 119.29.29.29 #腾讯
nameserver 223.5.5.5    #阿里

启动dnamasq服务(若启动不成功,查看53端口是否被占用)
[root@dns ~]# systemctl start dnsmasq.service 
[root@dns ~]# systemctl status dnsmasq.service 

web搭建
[root@web ~]# yum install -y httpd
[root@web ~]# systemctl start httpd
[root@web ~]# echo 'DNS Test ...' > /var/www/html/index.html

client添加DNS服务器(临时,永久需修改网卡配置文件)
[root@client ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.226.20

测试
[root@client ~]# nslookup www.gxy.com
Server:		192.168.226.20
Address:	192.168.226.20#53

Name:	www.gxy.com
Address: 192.168.226.30
Name:	www.gxy.com
Address: 2606:4700:20::681a:41a
Name:	www.gxy.com
Address: 2606:4700:20::ac43:4691
Name:	www.gxy.com
Address: 2606:4700:20::681a:51a

[root@client ~]# curl http://www.gxy.com
DNS Test ...
[root@client ~]# curl http://www.baidu.com
DNS Test ...

基于cisco

在这里插入图片描述

主机名ip地址其他作用
R1192.168.12.1,192.168.13.1环回接口1.1.1.1dns服务器
R2192.168.12.2默认路由–>R1
R3192.168.13.3静态路由–>R1
R1-R3初始化
no
en
conf t
no cdp run
interface range e0/0 -3
duplex full
no ip do lo
line co 0
exec-t 0
logg sy
ho R

配置ip地址,给R1配置一个环回接口地址1.1.1.1,给R2配置默认路由R1,给R3配置静态路由(保证路由互通)
R1(config)#int e0/0
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int e0/1
R1(config-if)#ip add 192.168.13.1 255.255.255.0 
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int lo0                          
R1(config-if)#ip add 1.1.1.1 255.255.255.0


R2(config)#int e0/0
R2(config-if)#ip add 192.168.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.1


R3(config)#int e0/0
R3(config-if)#ip add 192.168.13.3 255.255.255.0  
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.13.1

在R1上配置dns
R1(config)#ip dns server
R1(config)#ip host www.r3.com 192.168.13.3
R1(config)#ip domain lookup

在R2上指定dns服务器地址为1.1.1.1
R2(config)#ip name-server 1.1.1.1            
R2(config)#ip domain looku

测试
R2(config)#do ping www.r3.com
Translating "www.r3.com"...domain server (1.1.1.1) [OK]
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值