分布式系统 - DNS域名设计与实践(上)

前言

随着互联网的不断发展,分布式系统已经成为每个开发者必须了解的技术栈了。

本系列内容是自己学习分布式系统架构设计的一些学习笔记。可能开始笔记会乱等回过头来再整理。

分布式系统DNS

概念:DNS是 全称Domain Name System即域名系统。在网络上主要作为域名与IP地址的相互映射系统,能够使用户更方便的访问网站。

域名转换为IP:
我们ping一下www.baidu.com 就会发现 解析到 61.135.169.121。

直接访问ip,可读性较差。而且ip可能经常变动。

在这里插入图片描述
在这里插入图片描述

DNS应用场景

  • 浏览器访问网站
  • 服务器以域名的形式对外暴露

在这里插入图片描述

域名访问方案

  • HOST文件
    文件位置:
    linux: /etc/hosts
    windows: C:\Windows\System32\drivers\etc\hosts
    host文件里面保存了:域名与ip的映射,浏览器访问网站的时候也通过本地host来搜索ip。
    如:

127.0.0.1 kubernetes.docker.internal
访问kubernetes.docker.internal 网站时,对自动映射到127.0.0.1

host方式优劣势分析:
文件特点:
a)key:value格式存储
b)终端本地保存
c)访问速度快
缺点:
a)变更生效慢
b)host文件越来越大
c)没规定命令规则,主机名会冲突
d)维护映射关系代价高

基于以上分析host文件一般用在测试环境

  1. DNS域名解析系统
    在这里插入图片描述
    1)DNS域名系统分析
    服务器结构:类似数据库采用层级分散结构部署服务器。
    所有域名都通过域名服务器集群存储。本地host不必保存域名->ip映射关系。
    同时规定了命名规则,保证了不重复
    在这里插入图片描述
    备注:上图中baidu.com并是存的这一个域名,而是存了很多.com的域名。这里表示一个服务器集群
    域名完整写法:
    map.baidu.com.
    map.baidu.com域名结构
    www.sina.com.cn
    www.sina.com.cn域名结构

DNS解析过程

  1. 解析过程

解析原则:优先使用缓存(缓存时间可以根据Time to Live 设置)

Local DNS: (local name server)是客户端网络设置的一部分,要么是手工配置,要么从DHCP得到。一般local dns 在从网络上靠近客户端。即服务器或者本地电脑中网络设置的dns部分。可以选择如下:
在这里插入图片描述

  1. 不同查询方式分析:
  • DNS迭代查询
    解释:local DNS分别对根、顶级、二级域名发起请求。每次请求依赖上次请求结果。
    DNS迭代查询
  • DNS递归查询
  • 解释:Local DNS首先向根发起请求,然后根服务器向二级发起请求,二级向三级发送查询请求。。。查询到结果后原路返回
    DNS递归查询

DNS详解

  1. 解析路径查询
    通过dig www.csdn.net +trace 命令查询从根域名到指定域名所经历过的所有域名服务器。
    win不支持dig 可通过wsl使用。
    wsl具体配置方式参考https://blog.csdn.net/LMFranK/article/details/100214551

    ww.csdn.net dns解析路径
    dig命令参考:
    https://blog.csdn.net/reyleon/article/details/12976889
  2. 查询域名信息
    使用 dig www.baidu.com 查询域名信息
    在这里插入图片描述
    DNS数据库中每一个条目称作为一个资源记录(ResourceRecord,RR),也就是一条解析记录
    ANSWER SECTION:各字段解释
;; ANSWER SECTION:
www.baidu.com.          423     IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       18      IN      A       111.206.223.172
www.a.shifen.com.       18      IN      A       111.206.223.173

第一列:owner: 指示拥有资源记录的DNS域名
第二列:TTL:指明其他DNS服务器在期满放弃该记录信息之前对其 缓存多长时间
第三列:CLASS:IN(internet)
第四列:TYPE:资源记录类型(见下表描述)

类型描述
AIPv4主机地址
AAAAIPv6主机地址
NS权威名称服务器
CHAME别名
  1. DNS协议
    具体协议分析参考: https://blog.csdn.net/tianxuhong/article/details/53811842
    DNS协议报文格式
    ![DNS协议头-Transaction ID](https://img-blog.csdnimg.cn/20200414133751637.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMT ·IwODkwMzc=,size_16,color_FFFFFF,t_70)

协议正文:

请求数据:
	Queries 查询问题区域
应答数据:
	
	Answers 回答问题区域
	Authoritative nameservers 授权区域
	Additional recodreds 附加区域

Queries
	Name
	Type
	Class

Queries结构
例如 baidu.com
baidu.com 查询协议

资源记录:
资源记录
为什么DNS只有13个根?
请求头和查询体计算
Additional长度计算
12(Header) + 5(Question)+ 221(Answer) + 221(Additional) =SIZE = 459
采用UDP协议,做的512字节

DNS应用场景

  • 客户端请求服务端:客户端访问服务端通过域名访问
  • 企业内部DNS:线上服务之间访问通过DNS。服务方变更IP只需改DNS配置即可
  • 预留资源实现客户端无感知扩容;提前为节点规划多个域名,未来扩容无感知
  • 通过域名二级映射从而多个域名修改时一键完成
  • IP负载均衡

DNS选型

  1. 使用DNS Benchmark测试稳定性较高的

    用于确定本地和远程DNS名称服务器的确切性能

参考链接:https://www.grc.com/dns/benchmark.htm

  1. 优先使用大厂的,BAT,114DNS任选其二,国外Google、IBM,OPENDNS做备份
  2. 建议一主一备,高可用,使用付费版

DNS可能的问题

  1. 请求时间变长。请求链路变长,多一次解析
  2. 域名对应的IP生效不及时
  3. 域名被劫持:域名对应ip被篡改,导致访问服务不对

DNS劫持原因及技术分析

DNS劫持:通过攻击域名服务器(DNS),获取域名解析控制权,解析服务器(DNS)的方法,把目标网站域名解析到错误地址

  • DNS劫持原因
  1. 域名服务器负责用户解析域名请求
  2. 没有机制保证域名映射是否正确(UDP无连接协议,导致篡改结构可行性;监听53端口数据,发现匹配请求立即返回伪造结果)
  3. 域名服务器被黑客攻击,恶意篡改
  4. “流氓的域名服务器”更改一些域名的解析结果
  • DNS污染过程
  1. 用户端发出DNS请求后,等待应答
  2. 如果此时有一个看起来正确的应答包(拥有和DNS请求一样的序列号),TA信以为真,并抛弃稍晚到达的应答包
  3. 这个DNS欺骗的关键在于伪造一个特定序列号的应答包
  4. 伪造DNS应答包对个人难道答,对于拥有主干网络节点的组织很容易

如何快速检测DNS被劫持

  • 通过浏览器访问,查看网站的正确性
  • 通过nslookup 命令 + whois进行IP确认
  • APP端这里可以增加一个网路检测的功能

被劫持后快速恢复方案

  • 商务联系DNS服务商
  • 电话投诉DNS提供方
  • 切换备用DNS

技术解决方案见下篇 分布式系统 - DNS域名设计与实践(下)

文章部分内容图片引用NX教育 https://www.naixuejiaoyu.com/index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值