路由器的作用与类型
- 全称 domain name system域名系统
- 作用:将域名解析成ip地址
路由器的作用:
- 数据包转发:根据路由表将数据包从源地址转发到目标地址。
- 网络互连:连接不同网络(如LAN与WAN、IPv4与IPv6网络)。
- NAT(网络地址转换):将私有IP地址转换为公网IP地址。
- 流量控制:通过QoS(服务质量)策略管理带宽和优先级。
- 安全防护:支持防火墙、ACL(访问控制列表)过滤非法流量。
- 路由器的主要功能包括路由选择、数据转发、IP分配、地址转换(NAT)以及安全防护(如防火墙)。
路由器类型:
- 家用路由器:用于家庭或小型办公室,通常具有较少的端口和功能。
- 企业级路由器:用于大型企业,具有更强的处理能力、更多的端口和高级功能,如VPN支持、QoS(服务质量)等。
- 核心路由器:用于大型网络的核心部分,负责高速路由和大流量数据处理。
- 边缘路由器:连接内网与外网,处理网络的边缘流量。
- 虚拟路由器:以软件形式存在,通常在云计算环境中使用。
解释域名域IP得作用
IP地址的由来
- IP(Internet Protocol,互联网协议)地址是用于标识网络中每一台设备的唯一数字标识符。
- 最初,互联网的规模较小,早期的网络设备通过一个叫做ARPANET的系统连接。
- 随着网络的扩大,设备数量激增,IP地址成为了必须用来确保每个设备能够通过网络相互识别和通信的关键。
- 最初,IP地址是由网络专家通过静态配置的方式进行分配,随着互联网的逐步扩展,使用了标准化的协议来确保每个设备都拥有一个独一无二的IP地址。
- 现如今,IP地址的形式分为IPv4(如:192.168.0.1)和IPv6(如:2001:0db8:85a3:0000:0000:8a2e:0370:7334)两种版本。
域名的由来
- 域名是对IP地址的一个可读的映射,旨在方便人类记忆和使用。当互联网规模扩大时,用户访问网站时必须记住一串复杂的数字(即IP地址)。
- 为了更方便地进行访问,域名系统(DNS)应运而生。
- DNS(Domain Name System)是一个将域名映射到IP地址的系统。
- 通过将可读的域名映射到具体的数字IP地址,用户只需记住网站的域名,而无需记住数字形式的IP地址。
- 例如,网站的IP地址是
192.168.0.1
,那么你可以通过域名www.example.com
来访问它。
Host文件电话本
- 在计算机网络中,Hosts文件被称为“域名电话本”,因为它是一个本地文本文件,用于将域名映射到IP地址。
- 它的作用类似于DNS,但优先级高于DNS查询。
- 以下是关于Hosts文件的详细解释,包括其数据关联、作用、以及与DNS的关系。
- windows里面就是C:\Windows\System32\drivers\etc\hosts文件
Hosts文件的位置
- Windows:
- 路径:
C:\Windows\System32\drivers\etc\hosts
- 需要管理员权限编辑。
- 路径:
- Linux/macOS:
- 路径:
/etc/hosts
- 使用
sudo
权限编辑。
- 路径:
DNS的由来
- ip地址这个东西其实很难记得住,一个两个还行,多了根本记不住。
- 而且如果某个网站的ip地址变了,那么就要重新记忆一下这个ip地址,导致ip地址这个东西其实轻易不能变,变了别人找不到你的网站了。
- 后来就有个人开发了一套程序,这个程序就类似于一个电话本,网站姓名 对应的ip地址baidu.com 111.22.31.2 bilibili.com 221.22.13.1 …
- 然后它访问某个网站的时候,就让浏览器自动来读取这个电话本,自动帮他找到名字对应的ip地址来进行访问。
- 这个电话本至今还保留着,后来他就把这个电话本程序分享了出来,所有人都可以使用它这个程序来访问网站了,再也不用记网站的ip地址了。
- 所以现在我们的电脑上都有了这个电话本程序和他对应的文件hosts,而且在特定的目录下面。
- 并且网上有几个专门的网站提供最新的hosts文件,比如8.8.8.8这个网站【指定DNS解析域名】,我们就可以去这个网站下载最新hosts文件来替换我们自己电脑的hosts文件,那么最新的网站就都可以通过名字来访问了。
- 但是通过更新hosts文件的方式并不是太好,所有用户都要自行去下载最新的hosts文件来更新,而且也不知道什么时候更新,要经常去下载,并且如果hosts文件比较大,下载也慢。
所以就出现了我们说的dns服务器
常用的DNS服务器地址
常见的DNS服务器地址(示例):
提供商 | DNS服务器地址 |
8.8.8.8, 8.8.4.4 | |
Cloudflare | 1.1.1.1, 1.0.0.1 |
OpenDNS | 208.67.222.222, 208.67.220.220 |
Quad9 | 9.9.9.9 |
DNS解析简要分析
- 用户输入域名:触发DNS解析请求。
- 本地缓存查找:查询本地DNS缓存,看是否已经解析过此域名。
- 查询递归DNS:如果本地没有结果,则向配置的递归DNS发起请求。
- 递归查询根域名服务器:查询根DNS服务器,获取TLD服务器的地址。
- 查询TLD服务器:获取负责特定顶级域(如.com)的DNS服务器地址。
- 查询权威DNS服务器:获取域名的最终IP地址。
- 返回结果:将最终的IP地址返回给用户设备。
DNS解析过程详解
- 本机
hosts
文件:- 路径:Windows的
hosts
文件位于C:\WINDOWS\system32\drivers\etc\hosts
。 - 作用:该文件用于静态映射域名与IP地址之间的关系,通常用于本地开发或临时域名映射。
- 路径:Windows的
- 浏览器DNS缓存:
- 浏览器会定期缓存DNS记录以加速访问。
- 通过在浏览器地址栏输入
chrome://netinternals/#dns
,可以查看Chrome的DNS缓存记录。
- 操作系统DNS缓存:
- 如果浏览器缓存中没有找到对应的DNS记录,操作系统将会查找其缓存。
- 使用命令
ipconfig /displaydns
查看操作系统的DNS缓存。 - 使用
ipconfig /flushdns
命令清除操作系统DNS缓存,刷新后的记录只包含一些固定的DNS缓存。
- 路由器DNS缓存:
- 路由器本身也会存有DNS缓存,能够加速局域网内设备的域名解析过程。
- 查询本地DNS服务器:
- 若以上缓存中都找不到相应的DNS记录,将会查询本地DNS服务器。常见的如企业内部DNS、阿里云DNS、百度DNS等。
- 查询根域名服务器:
- 如果本地DNS服务器无法解析,则向根域名服务器发起查询请求。
- 全球有13台根域名服务器,当我们访问例如
www.hc39.com
时,后面的“点(.)”代表根域名。通过执行nslookup
www.hc39.com
.
可以查询到根域名服务器的记录(注意,根域名的“点”通常被省略)。
- 向顶级域名服务器查询:
- 如果根域名服务器无法解析目标域名,它会将查询请求下发至相应的顶级域(TLD)服务器。
- 例如,如果查询的是
.com
域名,根域名服务器会指向.com
顶级域名服务器。
- 查询权威DNS服务器:
- 如果顶级域名服务器无法直接返回结果,它会提供下一级的DNS服务器地址,通常是目标域名的权威DNS服务器。
- 比如,在查询
hc39.com
时,.com
顶级域名服务器会指向hc39.com
的权威DNS服务器进行查询。
- 缓存结果并返回:
- 查询结果返回到本地DNS服务器,再由本地设备(如电脑、路由器)缓存这些记录,以便下次查询时直接使用缓存,避免重复执行长时间的解析流程,从而提高访问速度。
DNS解析总结
- DNS解析流程概述
- 上面描述的DNS解析过程是递归查询的一种方式,但实际上,DNS解析还可以采用迭代查询方式。通常,递归查询和迭代查询是结合使用的。这里不做过多展开,了解基本的递归查询流程即可。
- DNS服务器的解析权力
- 每个DNS服务器的解析权限都是由其上级DNS服务器授权的,最终的权限来自根服务器。根服务器有权回收这些授权,并独立完成解析。
- 举个历史案例:在美军攻打伊拉克时,曾通过篡改DNS解析,将所有伊拉克网站的域名指向错误的IP地址,使得全球无法访问这些网站。这一事件充分展示了DNS解析的权力及其潜在风险。
- 根域名服务器
- 全球共有13台根域名服务器,负责管理所有域名的解析
- 其中1台是主根服务器,位于美国,由美国互联网机构Network Solutions运作。
- 其余12台为辅根服务器,分布在全球多个地点:
- 9台位于美国
- 2台位于欧洲(英国和瑞典)
- 1台位于亚洲(日本)
- 全球共有13台根域名服务器,负责管理所有域名的解析
- IPv6根服务器的部署
- 在现有的IPv4根服务器架构基础上,”雪人计划”于2016年在全球16个国家部署了25台IPv6根服务器。
- 这一举措使得全球的根服务器数量由13台增加到38台,形成了原有13台根服务器和新增加的25台IPv6根服务器的新格局,为构建更加民主、透明的国际互联网治理体系奠定了基础。
- 中国也在此进程中部署了4台根服务器,其中1台为主根服务器,3台为辅根服务器,打破了中国过去没有根服务器的困境,进一步推动了IPv6的推广。
域名解析与分段
- 域名类型
- 国家和地区顶级域名(ccTLDs)每个国家或地区根据ISO 3166标准分配了自己的顶级域名。例如:
- 中国的顶级域名为
.cn
- 日本的顶级域名为
.jp
- 英国的顶级域名为
.uk
等等。
- 中国的顶级域名为
- 国际顶级域名(gTLDs)这些域名没有地域限制,通常与行业或性质相关。常见的国际顶级域名包括:
.com
(商业公司).net
(网络服务提供商).org
(非盈利组织).edu
(教育机构) 等等。
- 新顶级域名(New gTLDs)新近推出的顶级域名种类繁多,涵盖了各种类别和特征。例如:
.xyz
(通用性强).top
(代表“高端”).red
(代表“红色”).men
(代表“人”)目前已有超过一千种新顶级域名。
- 国家和地区顶级域名(ccTLDs)每个国家或地区根据ISO 3166标准分配了自己的顶级域名。例如:
- 域名的分段解释:以
www.baidu.com
为例
从技术角度来看,一个完整的域名由多个部分组成,各部分通过“.”分隔。
- 顶级域名(TLD):最后一个“.”右侧的部分,通常是域名的后缀。例如,在
www.baidu.com
中,.com
是顶级域名。 - 二级域名:紧接在顶级域名左侧的部分,例如
.baidu
是二级域名。 - 三级域名:位于二级域名左侧的部分,通常为
www
,表示具体的网站服务。例如,在www.baidu.com
中,www
是三级域名。
- 前缀与后缀的理解
- 后缀:也称为顶级域名(TLD),例如
.com
、.cn
、.net
等。这是域名的最后部分。 - 前缀:由数字和字母组成,通常表示某个品牌、公司或服务。例如,
www
是常见的三级域名前缀。
- 后缀:也称为顶级域名(TLD),例如
举例:中科三方的官网是 http://www.sfn.cn
.cn
是顶级域名(后缀部分)。.sfn
是二级域名部分,代表中科三方。www
是三级域名,通常代表该品牌的官网。
- 域名的层级管理与扩展
二级域名的扩展:二级域名的拥有者可以随意定义三级及更高级别的域名。
例如,小米公司购买了 mi.com
这个二级域名后,可以在此基础上创建无限个三级域名或更高层级的域名。
- 例如:
- 小米云服务
http://i.mi.com
- 小爱开放平台
http://xiaoai.mi.com
- 小米IoT开发者平台
http://iot.mi.com
- 小米云服务
DNS解析
首先,我们来看一下我在阿里云上的域名配置。
- 大家可以在阿里云或腾讯云购买域名,但需要注意的是,域名备案通常需要几个月的时间才能完成。
- 如果暂时不打算购买域名,也没关系,大家可以通过学习理解流程即可。
- 如果购买了域名,再购买ECS主机时,系统会默认分配一个公网IP。
- 通过域名解析到这个公网IP,就可以通过域名访问主机了。
- 为了方便演示,ECS主机(CentOS 7.8系统)上安装并启动了Nginx,并在ECS安全组中添加了80端口的入站规则。
- 配置好后,访问80端口就能看到相关的页面效果。
DNS解析记录 是域名系统(DNS)用来映射域名与IP地址之间关系的数据。每当你访问一个网站时,DNS解析记录会被用来将你输入的域名(如:www.example.com)转换为对应的IP地址,以便客户端能够与服务器通信。
在安全领域,DNS解析记录的作用是多方面的,包括身份验证、防御、以及攻击的载体。通过操控这些记录,攻击者可以进行多种网络攻击。
域名解析
域名解析本质上是将域名指向一个IP地址,配置了域名与IP地址的对应关系后,我们就完成了所谓的DNS记录配置。其中常见的DNS记录类型包括:
DNS解析记录类型
记录类型 | 作用 | 描述 |
A记录 | 映射域名到IPv4地址 | 例如,example.com 解析到 192.0.2.1 |
AAAA记录 | 映射域名到IPv6地址 | 例如,example.com 解析到 2001:0db8:85a3:0000:0000:8a2e:0370:7334 |
MX记录 | 邮件交换记录,指定邮件服务器地址 | 例如,example.com 的邮件服务器是 mail.example.com |
CNAME记录 | 别名记录,将一个域名映射到另一个域名 | 例如,www.example.com 被重定向到 example.com |
NS记录 | 指定域名的权威名称服务器 | 例如,example.com 使用 ns1.exampledns.com 作为名称服务器 |
TXT记录 | 存储任意文本数据,用于多种验证和配置目的 | 例如,验证域名所有权或配置SPF、DKIM等 |
PTR记录 | 反向DNS解析记录,从IP地址映射回域名 | 用于反向查找,通常用于邮件服务器的反垃圾邮件措施 |
利用DNS解析记录的攻击手法
攻击类型 | 攻击方式描述 | 影响 | 防御措施 |
DNS欺骗(DNS Spoofing) | 攻击者伪造DNS响应,将受害者的请求重定向到恶意服务器。 | 使受害者访问恶意网站,可能导致数据泄露或恶意软件下载。 | 使用DNSSEC加密DNS通信,验证DNS记录的真实性;启用DNS缓存保护。 |
DNS放大攻击(DNS Amplification) | 攻击者利用公开的DNS服务器进行反射式DDoS攻击,通过发送小量请求引发大量响应,从而放大攻击流量。 | 使目标服务器过载,导致拒绝服务(DoS)攻击。 | 配置防火墙来限制DNS请求来源,禁用开放解析,部署DDoS防护。 |
DNS隧道(DNS Tunneling) | 攻击者通过DNS查询和响应通道传递恶意数据,绕过防火墙或网络监控。 | 绕过防火墙进行数据泄露或远程命令执行。 | 配置DNS流量监控,阻止非正常DNS流量,使用DNS隧道检测工具。 |
域名劫持 | 攻击者修改域名的DNS记录(如A记录、MX记录)将流量重定向到恶意服务器或伪造邮件服务器。 | 数据泄露,邮件被截取或篡改,用户访问恶意网站。 | 配置强密码和双因素认证,定期检查域名注册和DNS记录,启用域名保护服务。 |
缓存投毒(Cache Poisoning) | 攻击者向DNS缓存中插入恶意或伪造的DNS记录,使得合法域名解析到恶意IP地址。 | 用户访问恶意网站或服务。 | 启用DNSSEC,验证缓存记录的完整性,使用防毒DNS解析服务。 |
DNS回溯攻击 | 攻击者通过反向DNS解析(PTR记录)获取目标网络中的详细信息,例如邮件服务器的实际IP地址或特定主机信息。 | 攻击者可以基于这些信息发起进一步的攻击。 | 使用反向DNS记录隐私保护,定期审查PTR记录,配置反向查询限制。 |
DNS泄露 | 攻击者通过非加密通道获取DNS请求内容,泄露目标用户访问的域名信息,可能暴露用户行为或敏感信息。 | 泄露用户上网行为,可能引发隐私泄露。 | 启用DNS加密(如DNS over HTTPS或DNS over TLS)。 |
DNS域名查询命令(Linux和Windows)
在不同的操作系统上,可以使用不同的工具来查询DNS记录。
- Linux:
Linux系统通常使用dig
(Domain Information Groper)和nslookup
命令来执行DNS查询。
dig命令
dig
命令是Linux系统中最强大的DNS查询工具之一,提供了大量的选项,支持查询各种类型的DNS记录。
基本命令格式:
dig <域名> [查询类型]
常见查询类型:
A
:查询IPv4地址AAAA
:查询IPv6地址MX
:查询邮件交换服务器NS
:查询域名的权威DNS服务器CNAME
:查询域名的别名TXT
:查询TXT记录(用于SPF、DKIM等)
示例:
- 查询
example.com
的IPv4地址:
digexample.comA
- 查询
example.com
的邮件交换服务器:
dig example.com MX
- 查询
example.com
的权威DNS服务器:
dig example.com NS
- 查询
example.com
的所有DNS记录(ANY查询):
dig example.com ANY
- 查询特定DNS服务器的记录:
dig @<DNS服务器IP> example.com
- 逆向查询(从IP地址查询域名):
dig -x <IP地址>
附加选项:
+short
:输出简洁的查询结果。
dig example.com +short
+trace
:从根域名服务器开始追踪整个DNS解析过程。
dig example.com +trace
nslookup命令
nslookup
是一个相对较旧但常用的命令行工具,可以用于查询DNS记录。
基本命令格式:
nslookup <域名> [DNS服务器]
常见示例:
- 查询
example.com
的IPv4地址:
nslookup example.com
- 查询
example.com
的邮件交换服务器:
nslookup -query=MX example.com
- 查询特定DNS服务器的记录:
nslookup example.com <DNS服务器>
- 查询IPv6地址:
nslookup -query=AAAA example.com
- Windows:
在Windows系统中,nslookup
是最常用的DNS查询工具。Windows还支持Resolve-DnsName
(PowerShell命令)来进行DNS查询。
nslookup命令
nslookup
命令在Windows中与Linux中的用法相似,可以用于查询DNS记录。
基本命令格式:
nslookup <域名> [DNS服务器]
常见示例:
- 查询example.com的IPv4地址:
nslookup example.com
- 查询example.com的邮件交换服务器:
nslookup -query=MX example.com
- 查询example.com的权威DNS服务器:
nslookup -query=NS example.com
- 查询特定DNS服务器的记录:
nslookup example.com <DNS服务器>
- 查询IPv6地址:
nslookup -query=AAAA example.com
Resolve-DnsName命令(PowerShell)
在Windows的PowerShell中,Resolve-DnsName
提供了更灵活和详细的DNS查询功能。
基本命令格式:
Resolve-DnsName <域名> [-Type <记录类型>] [-Server <DNS服务器>]
常见示例:
- 查询example.com的A记录(IPv4地址):
Resolve-DnsName example.com -Type A
- 查询example.com的MX记录(邮件交换服务器):
Resolve-DnsName example.com -Type MX
- 查询example.com的CNAME记录(别名):
Resolve-DnsName example.com -Type CNAME
- 查询特定DNS服务器的记录:
Resolve-DnsName example.com -Server <DNS服务器>
- 查询example.com的所有DNS记录:
Resolve-DnsName example.com -Type ANY
总结:
操作系统 | 命令 | 示例命令 | 说明 |
Linux | dig | dig example.com A | 查询example.com的A记录(IPv4地址) |
dig example.com MX | 查询example.com的MX记录(邮件交换) | ||
dig example.com +short | 简洁模式查询 | ||
dig @8.8.8.8 example.com | |||
Linux | nslookup | nslookup example.com | 查询example.com的IPv4地址 |
nslookup -query=MX example.com | 查询example.com的MX记录 | ||
Windows | nslookup | nslookup example.com | 查询example.com的IPv4地址 |
nslookup -query=MX example.com | 查询example.com的MX记录 | ||
Windows | Resolve-DnsName | Resolve-DnsName example.com -Type A | 查询example.com的A记录(IPv4地址) |