C|计算机网络|DNS

2021-11-22 11:30:38 浏览数 (1)

Content Distribution Newwork

尽管上篇文章讲的FS都已经做到了一定的scalability,但单个数据中心依然无法存放大量数据,因此必须进行content distribution。

Client Side

cache 本地副本

  • browser cache file
  • proxy cache url
  • DNS resolver cache record(URL->IP)
  • NFS client cache data

Server Side

CDN DNS

网站提供商将数据push到CDN,而DNS(Domain Name Service)会找最近的CDN,由这些CDN提供服务(同一个host name根据位置指向不同的server)。(例如谷歌的服务器基本遍布全球)

DNS Design

DNS实现了IP和域名的绑定

Why Domain Name?

  • IP是结构化的,以特定规则进行组织。无法自定义,而域名可以有自然语义。
  • IP不够用户友好,难以记忆。
  • 增加间接层,方便redirect(一个IP有多个域名,一个域名对应多个IP),例如上海使用上海服务器的ip.均摊压力。

我们需要存储这些映射关系。

本地存储-每个机器都有hosts.txt(没钱买和谐软件的时候就去博客找找改host,懂得都懂,然而大部分都是过期的IP哭了)。这种做法不具备scalability。

网络存储-伯克利本科生开发的BIND

由于域名的数量很大,因此我们使用分级委托(顺序从小到大,英文地址喜欢这么玩)。root不具有名称,因此这个.可以省略。

e.g.

http://xxx.sjtu.edu.cn,root - cn - edu - sjtu

http://zhuhu.com,root - com

实际查找时,从root处询问cn的IP,然后向cn询问edu的IP,以此类推。因此一旦上层dns崩溃,那么所有依赖的域名都会失效。因此一般同一个名称会对应多个NDS服务器,进行冗余备份。

解析顺序

  • 直接找IP /etc/hosts
  • 找对应的DNS /etc/resolv.conf
  • 问root服务器

Recursion

递归实现减少了Client开销,但是也对name server的算力提出了要求。

Cache

Client和Server都会对name的IP进行缓存,并设置了一个TTL(Time To Live),一旦超时,那么cache失效。

DNS Security

DNS 污染

通过使用错误的数据包,让DNS存储错误的cache,DNS服务器就会将域名解析到错误的ID,称为DNS缓存污染(GFW)。由于DNS本质是中心化的,如果对中心服务器进行了控制,就可以对域名解析进行篡改。例如把google网页重定向为交大官网,交大官网马上就会扑该。

这也是改hosts的原理,因为上文的解析顺序,我们可以通过改hosts越过原本的DNS服务器。不过不同于先前的DNS阻断,现在的GFW已经升级到了IP阻断,也就是说路由在寻址的时候就被终止,因此现在一些简单的改hosts已经凉了。

DNS DDOS

0 人点赞