晚上好,我是老杨,今天和你聊聊DNS。
我们知道,TCP/IP提供了通过IP地址来连接到设备的功能。
但对用户来讲,记住某台设备的IP地址是相当困难的,因此,有人专门设计了一种字符串形式的主机命名机制,这些主机名与IP地址相对应。
在IP地址与主机名之间需要有一种转换和查询机制,提供这种机制的系统就是域名系统DNS(Domain Name System)。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
可能还有小白对DNS的概念有那么一点不清晰,老杨今天这篇文章就从DNS是啥、DNS配置、好用DNS服务器推荐这仨方面入手,都说道说道。
01 到底啥是DNS?一句话解释DNS功能:
DNS就相当于电话簿, 电话簿可以根据人名查找对应的电话号码,而DNS可以根据域名查找对应的IP地址。
有小白可能会问:为啥非要整个IP地址,就域名不行吗?这就要从互联网通信协议相关知识讲起。
简单的讲,IP地址是每一个计算机的唯一标识, 就像每个人的身份证号一样是独一无二的, 只有通过IP地址才来唯一确定一台计算机。
但是由于IP地址一连串的数字, 记忆麻烦,因此就产生了域名, 域名相当于IP地址的昵称,但它和IP地址是一对多的关系,即一个域名可能对应多个IP地址, 用户访问时,只会被导向其中一个。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
所以,通过DNS查询IP地址是必要的。那DNS到底是怎么工作的?
简单举个例子来说明DNS的工作流程,就用www.baidu.com为例吧:
com被称为”顶级域名“(top-level domain);
baidu和被称为”次级域名“(second-level domain);
www被称为主机名, 也叫做“三级域名”。
常见的域名往往只显示了三个层级, 比如上面所说的www.baidu.com。这是因为所有域名的最后一个根域名都是一样的都是.root, 所以平时都省略了。
实际上应该是:www.baidu.com.root
因此,域名实际上是一个拥有四个层级的层级结构,即:
主机名.次级域名.顶级域名.根域名,也就是host.sld.tld.root
DNS解析域名时就是按照层级结构, 从根域名开始逐级向下分级查询,比如咱们来查查www.baidu.com。
首先访问根域名服务器, 查询.com(顶级域名)由哪一个顶级域名服务器维护;
根据返回结果, 访问顶级域名服务器, 查询.baidu(次级域名)由哪一个次级域名服务器维护;
根据返回结果, 访问次级域名服务器, 查询www(主机名)的IP地址;
上述的查询流程是由本地的DNS服务器完成, 而并非本地主机。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
本地主机通过浏览器访问一个域名时:
首先会查询本地主机的/etc/hosts文件, 查看是否进行了域名和IP映射自定义设置 (比如在/etc/hosts文件中将www.baidu.com映射成了127.0.0.1, 那么浏览器访问www.baidu.com时访问的将是本地主机)
如果没有相应的自定义设置, 则会访问本地DNS服务器。
本地DNS服务器的IP地址可查看/etc/resolv.conf文件
本地DNS服务器会先查看本地缓存, 是否有对应域名和IP的映射,如果有则直接返回给本地主机,如果没有则进行上述查询流程。
02 华为路由器咋配置DNS?光说不练假把式,咱们来手把手操作试试,最好是转发到你的朋友圈收藏一波,方便之后有空时随时打开操作。
01组网需求
编辑
添加图片注释,不超过 140 字(可选)
由于IP地址难于记忆,用户希望通过DNS域名请求方式访问网络服务器。用户希望输入域名部分字段,DNS服务器就可以正确解析,达到用户访问正确网络服务的效果。
例如DNS客户端在访问该服务器huawei.com时,用户只需要输入“huawei”即可。对于一些常用的域名,用户希望能够快速访问,提高域名解析的效率。
02配置思路DNS的配置思路如下:
(1)在RouterA上配置静态DNS表项,实现与服务器B和服务器C进行通信的功能。
(2)在RouterA上配置动态DNS功能,实现RouterA以动态DNS查询方式与网络服务器进行通信的功能。
(3)在RouterA配置域名后缀,实现RouterA可以实现域名后缀列表功能。
(4)配置Router上的OSPF路由,实现Router的路由可达。
03操作步骤(1)配置设备RouterA
# 配置GE1/0/0接口的IP地址。
<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ip address 10.1.1.2 255.255.0.0
[RouterA-GigabitEthernet1/0/0] quit
# 配置OSPF。
[RouterA] ospf
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.255.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
# 配置静态DNS表项。
[RouterA] ip host serverB 10.4.1.1
[RouterA] ip host serverC 10.4.1.2
# 使能DNS域名解析功能。
[RouterA] dns resolve
# 配置DNS服务器的IP地址。
[RouterA] dns server 10.3.1.2
# 配置域名后缀net。
[RouterA] dns domain net
# 配置域名后缀com。
[RouterA] dns domain com
[RouterA] quit
说明:
若要完成对域名的解析,还需要在RouterB和RouterC上配置ospf,以保证设备之间路由可达。
(2)验证配置结果
# 在设备RouterA上执行ping serverB命令,可以ping通,且对应的目的地址为10.4.1.1。
<RouterA> ping serverB
PING serverB (10.4.1.1): 56 data bytes, press CTRL_C to break
Reply from 10.4.1.1: bytes=56 Sequence=1 ttl=126 time=4 ms
Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=126 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=3 ttl=126 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=4 ttl=126 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=5 ttl=126 time=1 ms
# 在设备RouterA上执行ping huawei.com命令,可以ping通,且对应的目的地址为10.2.1.3。
<RouterA> ping huawei.com
Trying DNS server (10.3.1.2)
PING huawei.com (10.2.1.3): 56 data bytes, press CTRL_C to break
Reply from 10.2.1.3: bytes=56 Sequence=1 ttl=126 time=6 ms
Reply from 10.2.1.3: bytes=56 Sequence=2 ttl=126 time=4 ms
Reply from 10.2.1.3: bytes=56 Sequence=3 ttl=126 time=4 ms
Reply from 10.2.1.3: bytes=56 Sequence=4 ttl=126 time=4 ms
Reply from 10.2.1.3: bytes=56 Sequence=5 ttl=126 time=4 ms
# 在设备RouterA上执行ping huawei命令,可以ping通,且对应的域名变为huawei.com,目的地址为10.2.1.3。
<RouterA> ping huawei
Trying DNS server (10.3.1.2)
PING huawei.com (10.2.1.3): 56 data bytes, press CTRL_C to break
Reply from 10.2.1.3: bytes=56 Sequence=1 ttl=126 time=6 ms
Reply from 10.2.1.3: bytes=56 Sequence=2 ttl=126 time=4 ms
Reply from 10.2.1.3: bytes=56 Sequence=3 ttl=126 time=4 ms
Reply from 10.2.1.3: bytes=56 Sequence=4 ttl=126 time=4 ms
Reply from 10.2.1.3: bytes=56 Sequence=5 ttl=126 time=4 ms
# 在RouterA用display ip host命令可以查看到静态DNS表项中主机名和IP地址的对应关系。
<RouterA> display ip host
Host Age Flags Address
serverB 0 static 10.4.1.1
serverC 0 static 10.4.1.2
# 在RouterA用display dns dynamic-host命令可以查看到动态缓存区中的动态DNS表项信息。
<RouterA> display dns dynamic-host
Host TTL Type Address(es)
huawei.com 114 IP 10.2.1.3
03 6个好用的DNS服务器,哪个是你的菜?01阿里 DNS (Alidns)这组 DNS 是由阿里巴巴提供的,国内连通性还是不错的,海外部分地区连通性不是特别好,具体可以测试一下。
阿里 DNS 同时提供了 IPv4/IPv6 DNS 和 DoT/DoH 服务。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
IPv4:
223.5.5.5 223.6.6.6
IPv6:
2400:3200::1 2400:3200:baba::1
DoH 地址:
https://dns.alidns.com/dns-query
DoT 地址:
dns.alidns.com
02腾讯 DNS (DNSPod)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
由 DNSPod 提供的公共免费 DNS,后来 DNSPod 被腾讯(Tencent)收购,现在属于腾讯公司所有,稳定性和连通性也是不错的,经测试海外也可以使用。
DNSPod 除了 IPv4,现在同时支持 IPv6 DNS 和 DoT/DoH 服务。
IPv4:
119.29.29.29
IPv6:
2402:4e00::
DoH 地址:
https://doh.pub/dns-query
DoH (国密 SM2,基于腾讯云政企国密解决方案) 地址:
https://sm2.doh.pub/dns-query
DoT 地址:
dot.pub
03Google Public DNSGoogle Public DNS 是最流行的免费DNS服务器之一,它的服务器托管在全球各地的数据中心,一旦连接到他们的IP地址,它会自动分配距离最近的服务器,能够为不同地区的人们都提供稳定和快速的访问体验
谷歌DNS拥有非常好记的IP地址 8.8.8.8,通过将你的默认DNS改为谷歌的公共DNS服务器,你可以拥有更快的浏览速度和更高的安全性,而且它提供了两个DNS服务器地址,你可以分别设置为自己的首选和备用DNS服务器
地址:
8.8.8.8
8.8.4.4
04360 安全 DNS360 提供的 DNS 服务,只提供了 IPv4 和 DoT/DoH 服务。
针对中国电信/铁通/移动的 IPv4:
101.226.4.6 218.30.118.6
针对中国联通的 IPv4:
123.125.81.6 140.207.198.6
DoH 地址:
https://doh.360.cn
DoT 地址:
dot.360.cn
中国电信 IPv6 DNS
如果用中国电信的宽带应该会自动分配这两个IP
240e:4c:4008::1 240e:4c:4808::1
中国联通 IPv6 DNS
如果用中国联通的宽带应该会自动分配这两个IP
2408:8899::8 2408:8888::8
中国移动 IPv6 DNS
中国移动宽带自动分配的两个IP
2409:8088::a 2409:8088::b
114DNS
114.114.114.114 114.114.115.115
05百度 DNS
编辑切换为居中
添加图片注释,不超过 140 字(可选)
中国最大的搜索引擎百度提供的公共 DNS,经测试海外连通性也是不错的,暂时百度只提供了一组 IPv4 和 IPv6 DNS 地址。
IPv4:
180.76.76.76
IPv6:
2400:da00::6666
06CNNIC DNS是由中国互联网信息中心 CNNIC 提供的免费公共 DNS,同时支持 IPv4 和 IPv6。
IPv4:
1.2.4.8 210.2.4.8
IPv6:
2001:dc7:1000::1
整理:老杨丨9年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
,