关于dns:四级域名解析2023年二

四级域名解析,应用坦克 NS (原名:坦克 DNS)部署四级域名解析服务器,依据本篇文字去实际,你能够实现相似域名sub.www.brand.com的解析。坦克 NS 是应用 Golang 开发的域名服务器利用,开发者是甘耀通。开发者也是坦克网络技术的创始人。也是这篇文字的作者。接下来,让我先做一个自我介绍。 守业这条路很难,我在东莞摆地摊卖衣服,卖早餐,卖小商品。开始的时候什么都不懂。在东莞流水线下班很辛苦,不停的换工作,不停的寻找前途,即便环境很艰巨,对我来说也没什么。有一次我在工厂有了个 Idea,想设计一个机器,这台机器能够代替人工进行作业,我把构想应用 3D 建模制作进去后交给下属,起初下属不器重。我来到了工厂。机器应用 MCU 管制。MCU 须要程序,所以我的 IT 之路也在这个构想中萌芽了。 先聊到这里,下次再聊。四级域名才是这篇文章的主题。 成绩IP应用上个步骤的成绩,IP:192.168.2.78。如果是公网,你的成绩必须是公网 IP。 阿里云域名解析域名解析原理都一样。就是先解析 NS记录,再把你的四级域名解析到这台 NS服务器,让你的NS服务器负责四级域名解析。所以咱们一共须要配置两条记录。 配置 NS主机记录(NS记录)增加一个 A 记录,把 ns1.tankprint.online 解析到你的成绩IP 192.168.2.78上来。 记住,这个 IP 肯定是你的公网IP,因为你执行DNS查问的时候,会达到阿里云域名解析,阿里云域名解析会查问这个 A记录,而后通过(递归或者迭代)持续查问,如果你的成绩IP是局域网,公网是拜访不了局域网的(能够看我的一篇文章理解坦克拜访入口之内网穿透)。所以,你只能应用公网IP(我的 IP 只是给你演示解析过程,没有理论作用)。 四级域名父域名假如你有一系列四级域名都要解析: a.www.tankprint.onlinegan.www.tankprint.onlineyao.www.tankprint.onlineton.www.tankprint.onlinecom.www.tankprint.onlinetec.www.tankprint.onlinebus.www.tankprint.online 那它的父域名就是www.tankprint.online,所以咱们须要把它交给本人 NS服务器 解析。在阿里云解析演示: 记录类型:ns 主机记录:www 记录值:ns1.tankprint.online 为什么是www,因为前面会主动加上tankprint.online。增加这条记录后,你的所有基于 www.tankprint.online 的四级域名阿里云的DNS服务器都会向你的DNS服务器收回递归(或者迭代)查问。比方:a.www.tankprint.online。前面,你只有在本人的DNS服务器下面增加记录就能够了。 测试到这里,你当初能够测试你的域名了,cmd执行命令: ping a.www.tankprint.online这个命令与上一篇文章的测试命令是不一样的: nslookup -type=a a.www.tankprint.online 192.168.2.78上一篇文章是指定本人的 DNS服务器,这篇文章是间接应用公共DNS服务器进行测试。如果测试胜利,就阐明你的四级域名解析胜利了。如果你没有看我的上一篇文章,请看四级域名解析(2023年)一。 总结阿里云解析域名就是先创立一个A记录到本人的 NS服务器,而后把四级域名的父域名的NS记录解析到本人的 NS服务器。只有这样,才可能胜利解决问题。上篇文章形容了解决装置 坦克NS 过程的问题。这篇文章形容解决域名解析的问题。

May 23, 2023 · 1 min · jiezi

关于dns:四级域名解析2023年一

四级域名解析,应用坦克 NS (原名:坦克 DNS)部署四级域名解析服务器,依据本篇文字去实际,你能够实现相似域名sub.www.brand.com的解析。坦克 NS 是应用 Golang 开发的域名服务器利用,开发者是甘耀通。开发者也是坦克网络技术的创始人。也是这篇文字的作者。接下来,让我先做一个自我介绍。 我是甘耀通,家在广西贵港市平南县大新镇,1989年11月出世,当初曾经33岁了,我的学习成绩不是很好,小学不晓得怎么过的,曾经遗记了,惟一记得的是小学写作文是流水账,以及淘气的日常。初中,我常常不学习,多科问题不合格,也常常回避考试,最初,我连初中都没有读完。我初三的时候,去了一间深圳的学校,说是什么半工半读,我感觉不是很好,于是两三个月后又回来读回高一。因为在社会体验过两三个月,我苏醒的意识常识的重要性。于是在读高一的期间我很努力学习,但不论如许致力,我的学习成绩都上不去,我粗浅意识到这是以前没有好好学习的结果,于是我高一没有读完,我来到了学校。 先聊到这里,下次再聊。四级域名才是这篇文章的主题。 我写这篇文章的目标是更新四级域名的解析办法,因为环境变了,阿里云的域名解析控制台曾经变了,变简略了。我的上一篇文章曾经过期了,CSDN博客链接:四级域名解析 我接下来形容整个部署过程。我尽量让你部署胜利。 大体流程本篇文章先说 坦克NS 的装置配置,再形容阿里云域名解析。与我上一篇文章相同,我置信这样更正当,你更容易了解。好了,咱们一起开始吧。 坦克NS服务器下载安装我的网站是动态网站,目前不可能通过惟一的链接取得最新版本的 坦克NS 软件,因为每次更新软件,都会更新下载链接。须要获取最新版本,只有拜访我的网站,复制下载链接,在网站复制的链接能够保障是最新的。请拜访地址:https://www.tankprint.online/坦克DNS软件/公布.html 点击右键复制链接,这条链接是最新版本的链接,拿到链接后,进入你的Linux服务器,而后创立并进入你想装置 坦克NS 的目录。我演示应用test目录。而后关上 terminal(终端),执行命令 mkdir testcd testwget https://www.tankprint.online/static/releases/tankns/server/v1.2.4/tankns期待下载完结,而后执行命令: chmod +x tankns下面这条命令是因为 Linux 平安机制默认不容许二进制文件运行的。须要加运行权限才能够( +x 就是增加运行权限的)。Linux还有一条平安机制,就是应用 1024 端口以下必须应用 root 用户运行,或者应用领有 sudo 权限的用户运行(简略了解 sudo 能够晋升普通用户的运行权限)。普通用户应用 sudo 运行命令与 root 用户不应用 sudo 运行命令是一样的。 坦克NS 反对 systemd , 但咱们当初不急着使它成为 systemd 的治理对象,咱们先把最小服务运行起来再说。任何一个 DNS 服务器都应用 53端口 运行的,坦克NS 也不例外。所以须要最高权限运行它。运行上面的命令后输出明码成为 root 用户: su运行命令先让服务运行起来初始化: ./tankns -run会输入: 欢送应用》》》》坦克名称服务器《《《《软件 开发者:甘耀通软件版本:v1.2.4官方网站:https://www.tankprint.online/激活信息:正版软件状态:软件正在运行中协定:udp端口:53退出:Ctrl + CWeb控制台已启动,地址:http://192.168.2.78:9100再按 Ctrl + C 退出。这样,服务初始化就实现了。 ...

May 23, 2023 · 1 min · jiezi

关于dns:一文读懂-DNS-解析

导读文章为“一文读懂域名与网站系列”第二篇,上篇文章次要介绍了域名的注册、建站和治理,通过本文你能够理解以下几个问题: 1.域名的构造、罕用解析记录的类型2.DNS 解析的过程3.DNS 解析拓展常识 家喻户晓,互联网中的地址其实是 IP 地址,有 IPV4 和 IPV6 两种类型,然而难以记忆,因而创造了有非凡含意的域名来让用户应用。用户输出的是域名,然而网络通信应用的却是 IP 地址,将域名解析为 IP 地址就是通过 DNS 解析实现的。 01 基础知识域名的形成下图为域名的构造。其实每个域名都是有根域的,如 www.volcengine.com 其实应该是 www.volcengine.com.,域名开端的点就是根域名,很多状况下根域名是能够省略掉的。在上述例子中,com 为顶级域名,volcengine.com 是二级域名或主域名,www.volcengine.com 是子域名或分域名。值得注意的是,顶级域名不肯定只由一个域名形成,也能够由两个域名形成。尽管.com、.cn 都是顶级域名,然而.com.cn 也是顶级域名。 解析记录的类型DNS 解析是将域名解析为 IP 地址的过程,那域名和 IP 地址的映射关系存在哪里呢?答案是 DNS 权威服务器。用户通过在 DNS 治理平台增加域名的解析记录,治理平台将该记录同步到权威 DNS 服务器,实现域名与最终 IP 地址的绑定。 值得注意的是,用户为域名增加的解析记录值除了 IP 地址外还能够是其余类型。DNS 记录有很多种,下图是 TrafficRoute 云解析 DNS 反对的局部记录类型,理解更多记录类型能够参看 https://www.volcengine.com/docs/6758/145121 02 DNS 解析的过程这是一个很经典的 DNS 解析流程图。 DNS 解析流程DNS 解析的过程能够分为本地查问(1、2)与线上查问(3-11)。 本地查问本地查问能够分为 host 文件查问与本地缓存查问。当用户在浏览器中拜访域名时,会先进行本地查问,若本地查问命中,则间接返回;未命中,则须要拜访线上的 DNS 服务器进行解析。 线上查问线上 DNS 解析次要蕴含:Local DNS 服务器、根域 DNS 服务器、顶级域 DNS 服务器、权威域 DNS 服务器。Local DNS 服务器不在客户端本地,个别为运营商提供的线上 DNS 服务器;权威 DNS 是特定域名记录在域名注册商处所设置的 DNS 服务器,用于特定域名自身的治理。 ...

May 9, 2023 · 2 min · jiezi

关于dns:vivo-短视频用户访问体验优化实践

作者:vivo 互联网运维团队- Hu Tao本文介绍了vivo短视频用户拜访体验优化的实际思路,并简略解说了实际背地的几点原理。 一、背景咱们平时在看抖音快手视频的时候,如果滑动到某个视频画面始终几s不动的时候,大概率就会划走了,所以在短视频我的项目中,画面卡顿是十分影响用户体验的,启播速度越快,就越能留住用户。 启播速度简略来说就是从调用开始播放到首帧上屏的工夫,大抵可分为两局部: 视频文件下载耗时视频解码耗时本文次要从运维排查问题的角度,从网络这部分的各个环节动手,联合vivo短视频的具体案例,给大家分享下优化过程。 二、用户拜访链路咱们先梳理下一次残缺的网络申请过程,以客户端视角为例,如下图所示: 在接入CDN的状况下,可分为几个阶段: DNS域名解析:获取服务器的IP地址。TCP连贯建设:与服务器IP建设连贯即tcp三次握手。TLS握手:客户端向服务器索要并验证服务器的公钥,单方协商生产「会话秘钥」并进行加密通信。CDN响应:将内容资源散发到位于多个地理位置机房中的服务器上并返回给客户端。针对以上阶段,别离讲下vivo短视频是如何进行优化的。 三、DNS域名解析咱们在上网的时候,通常应用的形式域名,而不是 IP 地址,因为域名不便人类记忆。那么实现这一技术的就是 DNS 域名解析,DNS 能够将域名网址主动转换为具体的 IP 地址。 3.1 域名的层级关系DNS 中的域名都是用句点来分隔的,比方 www.server.com,这里的句点代表了不同档次之间的界线。在域名中,越靠右的地位示意其层级越高。根域是在最顶层,它的下一层就是 com 顶级域,再上面是 server.com。 所以域名的层级关系相似一个树状构造: 根DNS服务器顶级域 DNS 服务器(com)权威 DNS 服务器(server.com) 根域的 DNS 服务器信息保留在互联网中所有的 DNS 服务器中。这样一来,任何 DNS 服务器就都能够找到并拜访根域 DNS 服务器了。 因而,客户端只有可能找到任意一台 DNS 服务器,就能够通过它找到根域 DNS 服务器,而后再一路顺藤摸瓜找到位于上层的某台指标 DNS 服务器。 3.2 域名解析的工作流程浏览器首先看一下本人的缓存里有没有,如果没有就向操作系统的缓存要,还没有就查看本机域名解析文件 hosts,如果还是没有,就会 DNS 服务器进行查问,查问的过程如下: 客户端首先会收回一个 DNS 申请,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。本地域名服务器收到客户端的申请后,如果缓存里的表格能找到 www.server.com,则它间接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能通知我 www.server.com 的 IP 地址吗?” 根域名服务器是最高档次的,它不间接用于域名解析,但能指明一条路线。根 DNS 收到来自本地 DNS 的申请后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域治理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”本地 DNS 收到顶级域名服务器的地址后,发动申请问“老二, 你能通知我 www.server.com  的 IP 地址吗?”顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析后果的原出处。为啥叫权威呢?就是我的域名我做主。权威 DNS 服务器查问后将对应的 IP 地址 X.X.X.X 通知本地 DNS。本地 DNS 再将 IP 地址返回客户端,客户端和指标建设连贯,同时本地 DNS 缓存该 IP 地址,这样下一次的解析同一个域名就不须要做 DNS 的迭代查问了。至此,咱们实现了 DNS 的解析过程。当初总结一下,整个过程画成了一个图。 ...

March 17, 2023 · 3 min · jiezi

关于dns:常见的DNS记录类型有哪些

域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器实现。由DNS构建起的域名与IP地址之间的对应关系,称之为DNS记录。通过设置不同的解析记录,能够实现对主机名不同的解析成果,从而满足不同场景下的域名解析需要。 所以,您须要依据不同场景设置不同的解析记录。常见的资源记录类型有A、CNAME、MX、NS、AAAA、CAA、TXT等。 A:address,地址记录,用来指定域名的IPv4地址(如:8.8.8.8),如果须要将域名(FQDN)指向一个IP地址,就须要增加A记录。 CNAME:别名记录,如果须要将域名指向另一个域名,再由另一个域名提供IP地址,就须要增加CNAME记录。 MX:mail exchanger,邮件交换器,用于表明域内邮件服务器的地址的记录。如果须要设置邮箱,让邮箱能收到邮件,就须要增加MX记录。 NS:name server,域名服务器记录,如果须要把子域名交给其余DNS服务商解析,就须要增加NS记录。 AAAA:address,地址记录,用来指定主机名(或域名)对应的IPv6地址(例如:aa51::c3)记录。解析到 IPv6 的地址。 CAA:CA证书颁发机构受权校验。CAA记录能够管制单域名SSL证书的发行,也能够管制通配符证书。当域名存在CAA记录时,则只容许在记录中列出的CA颁发针对该域名(或子域名)的证书。 TXT:TXT记录,个别指某个主机名或域名的标识和阐明。通过设置TXT记录内容能够使他人更不便地分割到你。TXT 记录罕用的形式还有做 SPF 记录(反垃圾邮件)和SSL证书的域名所有权验证。

December 23, 2022 · 1 min · jiezi

关于dns:一文读懂-DNS-解析的工作机制和优化挑战

数字时代,DNS(Domain Name System,域名零碎)是最重要的策略资源之一。关注【融云寰球互联网通信云】理解更多 就像咱们拜访好友须要晓得他的地址一样,拜访互联网也须要先获知“地址”。DNS 就是解析网址,将域名和 IP 地址互相映射的分布式数据库,可能使人更不便地拜访互联网。所以,DNS 的运行效率和稳定性,极大影响咱们的上网体验。 本文将详解 DNS 的工作流程,剖析传统 DNS 解析面临的问题并分享 DoH 的破局实际。 详解 DNSDNS 的层级构造DNS 的层级构造必须反对高可用、高并发以及分布式,呈树形,自上而下分为四层,别离是根 DNS 服务器、顶级域 DNS 服务器、权威 DNS 服务器以及最贴近用户侧的本地 DNS 服务器(LocalDNS)。另外,还有一类比拟非凡的 LocalDNS,被称为公共 DNS。根 DNS 服务器作用是返回顶级域 DNS 服务器的地址。 顶级域 DNS 服务器作用是返回权威 DNS 服务器地址。 权威 DNS 服务器作用是返回对应主机的域名所解析的 IP 地址。 本地 DNS 服务器尽管没有域名解析后果的决定权,但它代理了用户向权威 DNS 服务器获取域名解析后果的过程,同时具备缓存解析后果的能力。在缓存有效期内,LocalDNS 不须要反复向权威 DNS 发动查问申请,可间接返回缓存后果。 DNS 的查问过程以客户端拜访 www.rongcloud.cn 为例,看域名的残缺解析过程。 ① 客户端向 LocalDNS 发出请求,询问域名的 IP 地址。 ② LocalDNS 收到申请后,如发现缓存中有这个域名,则间接将对应后果返回给客户端;如没有,会向根 DNS 服务器收回询问申请。 ③ 根 DNS 服务器收到申请后,反馈该域名由 .cn 顶级域负责,遂告知 LocalDNS 顶级域 DNS 服务器地址。 ...

October 19, 2022 · 3 min · jiezi

关于dns:DNS-系列二DNS-记录及工作方式你了解吗

在上一篇《DNS 系列(一):为什么更新了 DNS 记录不失效?》中,咱们次要解说了 DNS 和 DNS 流传,晓得了网络通信次要通过 IP 地址来进行,而域名零碎(DNS)则是保障用户在浏览器中输出域名之后,能够拜访到对应的网站服务器。那这个过程到底是如何进行的呢? DNS 记录DNS 记录是位于权威 DNS 服务器中的指令,提供域和主机名相干的详细信息,包含哪些 IP 地址与该域关联,以及如何解决对该域的申请。 当咱们在浏览器中输出网站地址时,浏览器首先要会在计算机外部缓存中查找属于该域名的 IP 地址,如果没有再到网络提供商的数据库或其余 DNS 服务器中查找。 DNS 记录由一系列 DNS 语法编写的文本文件组成。每个 DNS 记录都有一个独自的行。记录通常遵循以下格局: <name> <ttl> <class> <type> <rdlength> <radata><name>:指域,即用户在浏览器中输出的名称<ttl>:TTL 代表 “生存工夫”,示意记录能够长期存储在缓存中的工夫(以秒为单位)<class>:实践上,DNS 记录有不同的类别。然而理论中,记录常是 Internet(即 IN),<type>:不同的记录类型<rdlength>:指定后续数据字段的大小(可选值)<rdata>:解析出的域名信息(例如 IP 地址)咱们能够应用 Dig 命令查问 DNS 记录信息,例如:www.example.com www.example.com. 69288 IN A 93.184.216.34这代表着该条记录能够在缓存中存储 69288 秒,它波及 Internet 上的 DNS 记录(IN),并指向了 A 类记录,同时域名被解析为 IP 地址(93.184.216.34)。 DNS 记录类型下面咱们提到了 DNS 记录有不同的类型,这其实是指记录中的信息类型,比拟常见的有以下几种: A 记录Internet 上大部分 DNS 解析都是通过 A 类记录进行的,并指向一个 IPv4 地址。通过这个记录,用户在浏览器中输出域名后,客户端向相应的 IP 地址发送 HTTP 申请。因为 IPv4 地址的大小始终为 4 个字节,因而 rdlength 的值始终为 4。 ...

August 25, 2022 · 2 min · jiezi

关于dns:DNS-系列一为什么更新了-DNS-记录不生效

咱们在上网时如果想要拜访到另一台机器上的内容,通常只须要间接输出一串地址,就可能精确拜访到本人想要拜访的网站。然而实际上这只是不便咱们记忆的字符模式网络标识,真正让咱们的机器和另一台机器进行沟通的是 IP 地址。只不过 IP 地址无论是输出还是记忆都十分麻烦,因而才诞生了域名零碎。那么域名是怎么连贯到那个服务器的 IP 呢?这就和咱们明天要说的域名零碎 DNS 无关了。 DNS 是什么?因为有意义的名字能够示意主机的账号、工作性质、所属的地区和组织等,从而便于记忆和应用。所以用户会更偏向于用名字来标识主机,DNS 就是为这种须要而开发的。DNS 代表域名零碎。该零碎会将域名翻译成理论的 IP 地址。 DNS 的逻辑构造是一个分层的域名树,由 Internet 网络信息中心(InterNIC)治理着域名树的根,称为 “根域”,根域用句号 “.” 示意,不过这个通常是省略的。须要留神的是全世界一共只有 13 台 IPv4 根域名服务器。 根域上面是顶级域(TLD),分为国家顶级域(ccTLD)和通用顶级域(gTLD)。国家顶级域应用国家和地区缩写代码,例如 “cn” 代表中国。通用顶级域就是咱们常见的 com/net/org 等。 顶级域上面是二级域,这是正式注册给组织和集体的惟一名称,例如 www.upyun.com 中的 upyun 就是又拍云注册的域名。在二级域之下,组织机构还能够划分子域,用于各分支部门应用。然而标准规定,一个域名的长度通常不超过 63 个字符,最多不能超过 255 个字符。 当然了,DNS 不仅仅能指向 IP 地址,同时还反对其余模式的记录。常见的 DNS 记录模式有: A 记录:域的 IPv4 地址的记录。AAAA 记录:域的 IPv6 地址的记录。CNAME 记录:别名,将一个域或子域转发到另一个域,不提供 IP 地址。MX 记录:将邮件定向到电子邮件服务器。TXT 记录:可使管理员在记录中存储文本正文。NS 记录:存储 DNS 条目标名称服务器。一个有特色的域名,能够让用户将公司品牌 “深深印在脑海里”。只管域名可能是永恒不变的,但记录指向的地址及应用的 DNS 服务器却会因为需要常常变动。有时咱们也会遇到批改了 DNS 记录后,理论拜访到的地址却没有更新的状况,这就波及到了 DNS 流传。 ...

August 25, 2022 · 2 min · jiezi

关于dns:DNS反连平台调研

一、基础知识A记录:是在通知域名零碎,“xxx.xxxx.xxx ”的IP地址是“xxx.xx.xx.xxx”。A记录是绑定IP的,个别的DNS劫持,都是被批改的这个地位,所以 当你搜寻百度的域名,会跳转到其余的页面,就是这里A事件被批改,解析页面被指向其余的页面。AAAA记录:用来指定主机名(或域名)对应的 IPv6 地址记录CNAME记录: 如果须要将域名指向另一个域名,再由另一个域名提供 ip 地址,就须要增加 CNAME 记录。NS记录:域名解析服务器记录,如果要将⼦域名指定某个域名服务器来解析,须要设置NS记录SOA记录: SOA叫做起始受权机构记录,NS⽤于标识多台域名解析服务器,SOA记录⽤于在泛滥NS记录中标记哪⼀台是主服务器MX记录:如果须要设置邮箱,让邮箱可能收到邮件,须要增加 MX 记录。TXT记录:可任意填写,可为空。⼀般做⼀些验证记录时会使⽤此项,如:做SPF(反垃圾邮件)记录DS,RRSIG记录:DNS 的原始设计不蕴含任何平安细节,域名系统安全扩大(DNSSEC)尝试在其中增加安全性,同时仍放弃向后兼容性。DNSSEC 旨在爱护应用程序,免受伪造或不当操纵的 DNS 数据所造成的影响(例如域名服务器缓存净化的数据)。来自 DNSSEC 保护区的所有答案都通过数字签名。通过测验数字签名,DNS 解析器能够核查信息是否与区域所有者公布的信息雷同(未修改和残缺),并确系理论负责的 DNS 服务器所提供。 新增三种资源记录类型:RRSIG (Resource Record Signature)、DNSKEY (DNS Public Key)、DS (Delegation Signer)。TTLTTL-⽣存工夫(Time To Live),表⽰解析记录在DNS服务器中的缓存工夫,TTL的工夫长度单位是秒,⼀般为3600秒。⽐如:在拜访www.itbilu.com时,如果在DNS服务器的缓存中没有该记录,就会向某个NS服务器发出请求,取得该记录后,该记录会在DNS服务器上保存TTL的工夫长度,在TTL有效期内拜访www.itbilu.com,DNS服务器会间接缓存中返回方才的记录。能够通过linux下命令行工具host -t ns sub.youdomain.com来确认NS服务器。也能够通过在线工具:https://myssl.com/dns_check.html (抉择NS类型)Xray的反向代理原理参考文档http://bendawang.site/2017/05... 三种形式https://blog.csdn.net/qq_3896... xray dns https://github.com/lanyi1998/... https://github.com/BugScanTea...

August 3, 2022 · 1 min · jiezi

关于dns:没错请求DNS服务器还可以使用UDP协议

简介之前咱们讲到了如何在netty中构建client向DNS服务器进行域名解析申请。应用的是最常见的TCP协定,也叫做Do53/TCP。 事实上除了TCP协定之外,DNS服务器还接管UDP协定。这个协定叫做DNS-over-UDP/53,简称("Do53")。 本文将会一步一步率领大家在netty中搭建应用UDP的DNS客户端。 搭建netty客户端因为这里应用的UDP协定,netty为UDP协定提供了专门的channel叫做NioDatagramChannel。EventLoopGroup还是能够应用罕用的NioEventLoopGroup,这样咱们搭建netty客户端的代码和罕用的NIO UDP代码没有太大的区别,如下所示: EventLoopGroup group = new NioEventLoopGroup(); Bootstrap b = new Bootstrap(); b.group(group) .channel(NioDatagramChannel.class) .handler(new Do53UdpChannelInitializer()); final Channel ch = b.bind(0).sync().channel();这里的EventLoopGroup应用的是NioEventLoopGroup,作为client端Bootstrap的group。 因为要应用UDP协定进行传输,所以这里的channel应用的是NioDatagramChannel。 设置好channel之后,传入咱们自定义的handler,netty client就搭建结束了。 因为是UDP,所以这里没有应用TCP中的connect办法,而是应用bind办法来取得channel。 Do53UdpChannelInitializer中蕴含了netty提供的UDP DNS的编码解码器,还有自定义的音讯处理器,咱们会在前面的章节中具体进行介绍。 在netty中发送DNS查问申请搭建好netty客户端之后,接下来就是应用客户端发送DNS查问音讯了。 先看具体的查问代码: int randomID = (int) (System.currentTimeMillis() / 1000); DnsQuery query = new DatagramDnsQuery(null, addr, randomID).setRecord( DnsSection.QUESTION, new DefaultDnsQuestion(queryDomain, DnsRecordType.A)); ch.writeAndFlush(query).sync(); boolean result = ch.closeFuture().await(10, TimeUnit.SECONDS); if (!result) { log.error("DNS查问失败"); ch.close().sync(); }查问的逻辑是先构建UDP的DnsQuery申请包,而后将这申请包写入到channel中,而后期待音讯处理完毕。 DnsQuery之前咱们曾经介绍过了,他是netty中所有DNS查问的根底类。 public interface DnsQuery extends DnsMessage DnsQuery的子类有两个,别离是DatagramDnsQuery和DefaultDnsQuery。这两个实现类一个示意UDP协定的查问,一个示意TCP协定的查问。 ...

July 25, 2022 · 2 min · jiezi

关于dns:Linux系统安装DNS服务

零碎版本:centos7首先安装文件而后批改主配置文件配置区域配置文件编辑区域配置文件反向区域配置文件开启服务短少查看端口的命令先装置查看端口上面切换到客户机装置服务上面验证后果上面是反向

July 22, 2022 · 1 min · jiezi

关于dns:DNS通过dig命令理解DNS

前一篇文章形象了解DNS 介绍了 DNS 的基本知识,本文介绍查问 DNS 的一个最通用工具 dig,通过它能够更好的了解 DNS,把握这个工具后,遇到和 DNS 无关问题时,就不会大刀阔斧了。 DNS 命令输入格局输出 dig rss.newyingyong.cn 命令,通常返回 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49814;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 17 ;; QUESTION SECTION:;rss.newyingyong.cn. IN A ;; ANSWER SECTION:rss.newyingyong.cn. 600 IN A 139.129.23.162 ;; AUTHORITY SECTION:newyingyong.cn. 86398 IN NS dns10.hichina.com.newyingyong.cn. 86398 IN NS dns9.hichina.com. ;; ADDITIONAL SECTION:dns9.hichina.com. 3490 IN A 140.205.81.15dns9.hichina.com. 3490 IN A 140.205.81.25 ;; Query time: 5 msec;; SERVER: 10.202.72.116#53(10.202.72.116);; WHEN: Sat Jul 01 11:00:38 CST 2017;; MSG SIZE rcvd: 369各个返回参数阐明下: ...

July 12, 2022 · 3 min · jiezi

关于dns:使用DNSLOG配置mysql的securefilepriv参数

1、本地phpstudy搭建的环境测试验证DNSlog 在PHPstudy外面的 文件外面新增一行secure_file_priv=''的行 之后重启mysql服务 就能够失常应用dnslog

January 27, 2022 · 1 min · jiezi

关于dns:理解-DNS-缓存

了解 DNS 缓存学渣出品,技术/英文学习记录,难免会有了解/翻译瑕疵甚至谬误,欢送斧正。倡议浏览原文: Understanding DNS cache当我第一次学习 DNS 解析 时,我被这个漫长和简单的过程惊到了。设想一下你每天要拜访多少网站,再想一下你每天要拜访多少次。当初设想一下你每次拜访时,在另一端的 ISP DNS 服务器必须反复整个递归过程,并查问递归链中的所有域名服务器。 以此为背景,设想一下你的手机。当你想跟你一个定期分割的敌人通个电话时,你很容易在最近通话中找到他们的名字并拨打。然而,如果这些信息并没有筹备好,你就得打 114 来去获取他们的号码,而后手动拨出。看起来是不是很繁琐? 实际上将域名转化为 IP 地址 须要大量步骤,并且要耗费大量工夫。侥幸的是,DNS 的设计者思考到了如何减速 DNS,并实现了缓存。DNS 缓存使得 DNS Server 或者 客户端本地存储 DNS 记录并在当前复用,缩小了对新 DNS 申请的查问需要。 域名零碎为每一条 DNS 记录实现了存活工夫(TTL)。TTL 指定了一条 DNS 记录在 DNS 服务器和客户端能够被缓存的秒数。当缓存中存在该 DNS 记录时,也会保留其存活时长。服务器会继续更新缓存中的 TTL ,以秒为单位倒计时。当它变为 0 时,该记录会从缓存中被删除或者革除。此时,如果缓存过期当前再次收到该记录的申请,DNS 服务器就必须启动解析流程。 要了解缓存,让咱们来看下上一篇文章中的例子,解析 www.google.com 。 当你在浏览器里输出 www.google.com 时,浏览器向操作系统询问 IP 地址。操作系统有 stub resolver 或者 DNS client (参考:什么是 DNS Server, resolver 以及 stub resolver),一个操作系统响应所有 DNS 查问的解析器。DNS 解析器会发送 DNS 申请(并开启递归查问标记)给特定的递归解析器(域名服务器)并依据其 TTL 值存储其 DNS 记录到缓存。 ...

December 25, 2021 · 2 min · jiezi

关于dns:内网搭建DNS服务器

DNS:Domain Name Service,域名解析服务监听端口:udp/53,tcp/53 应用程序:bind 根域:. 一级域: 组织域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .me, .tv 国家域:.cn, .us, .uk, .jp, .tw, .hk, .iq, .ir 反向域:.in-addr.arpa DNS 记录类型:DNS 域名数据库由资源记录和区文件指令组成。 SOA 记录:起始受权机构记录,SOA 备注阐明了泛滥 NS(name server)记录中谁是主名称服务器,不参加性能,然而不能短少。 NS 记录:域受权记录,当申请达到根域的时候,通过 NS 记录找到对应的域。 A 记录:当通过 NS 记录达到域当前,比方拜访 www.baidu.com,通过 NS 咱们找到了 baidu.com,此时就须要通过 A 记录找到 www。 MX:将该域下的所有邮件服务器地址指向邮件服务器。 AAAA 记录:A 记录解决 IPV4,AAAA 解决 IPV6。 PTR 记录:反向解析,将 IP 解析成域名。 CNAME:别名记录,容许多个名字映射到另外一个域名。比方咱们 ping 百度的时候能够发现返回其实是 www.a.shifen.com 这个域名返回。所有 www.baidu.com 其实是个别名。 装置dns服务并配置[root@jhr-hub ~]# yum -y install bind-utils bind bind-devel bind-libs[root@jhr-hub ~]# vim /etc/named.rfc1912.zones[root@jhr-hub ~]# [root@jhr-hub ~]# [root@jhr-hub ~]# [root@jhr-hub ~]# tail -n 10 /etc/named.rfc1912.zoneszone "chenby.cn" IN { type master; file "chenby.cn.zone"; };[root@jhr-hub ~]# [root@jhr-hub ~]# cd /var/named/[root@jhr-hub named]# lsdata dynamic named.ca named.empty named.localhost named.loopback pakho.zone slaves[root@jhr-hub named]# [root@jhr-hub named]# cp named.localhost chenby.cn.zone[root@jhr-hub named]# [root@jhr-hub named]# chown named.named chenby.cn.zone[root@jhr-hub named]# [root@jhr-hub named]# vim chenby.cn.zone[root@jhr-hub named]#查看配置文件[root@jhr-hub named]# named-checkconf /etc/named.conf[root@jhr-hub named]# [root@jhr-hub named]# [root@jhr-hub named]# named-checkzone chenby.cn /var/named/chenby.cn.zone zone chenby.cn/IN: loaded serial 0OK[root@jhr-hub named]#启动服务,并设置开机自启[root@jhr-hub named]# systemctl restart named[root@jhr-hub named]# [root@jhr-hub named]# systemctl enable namedCreated symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.[root@jhr-hub named]# 测试是否可行[root@jhr-hub named]# dig @3.7.191.1 www.chenby.cn; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> @3.7.191.1 www.chenby.cn; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5275;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;www.chenby.cn. IN A;; ANSWER SECTION:www.chenby.cn. 86400 IN A 3.7.191.1;; AUTHORITY SECTION:chenby.cn. 86400 IN NS chenby.cn.;; ADDITIONAL SECTION:chenby.cn. 86400 IN A 127.0.0.1chenby.cn. 86400 IN AAAA ::1;; Query time: 0 msec;; SERVER: 3.7.191.1#53(3.7.191.1);; WHEN: Thu Dec 09 14:44:51 CST 2021;; MSG SIZE rcvd: 116[root@jhr-hub named]#附录:1.name.conf文件详解options {listen-on port 53 { 127.0.0.1; }; //设置named服务器监听端口及IP地址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";allow-query { any; }; //容许DNS查问客户端allow-query-cache { any; };};logging {channel default_debug {file "data/named.run";severity dynamic;};};view localhost_resolver {match-clients { any; };match-destinations { any; };recursion yes; //设置容许递归查问include "/etc/named.rfc1912.zones";};2.区域配置文件/etc/named.rfc1912.zoneszone "." IN { //定义了根域type hint; //定义服务器类型为hintfile "named.ca"; //定义根域的配置文件名};zone "localdomain" IN { //定义正向DNS区域type master; //定义区域类型file "localdomain.zone"; //设置对应的正向区域地址数据库文件allow-update { none; }; //设置容许动静更新的客户端地址(none为禁止)};zone "localhost" IN {type master;file "localhost.zone";allow-update { none; };};zone "0.0.127.in-addr.arpa" IN { //设置反向DNS区域type master;file "named.local";allow-update { none; };};3.根域配置文件named.ca根域配置文件设定根域的域名数据库,包含根域中13台DNS服务器的信息。简直所有零碎的这个文件都是一样的,用户不须要进行批改。 ...

December 23, 2021 · 2 min · jiezi

关于dns:面对DNS劫持只能坐以待毙吗

简介: 借助 ARMS-云拨测,咱们可实时对网站进行监控,实现分钟级别的监控,及时发现 DNS 劫持以及页面篡改。 作者:白玙 DNS 劫持作为最常见的网络攻击形式,是每个站长或者运维团队最为头疼的事件。苦心经营的网站受到 DNS 劫持后,不仅会影响网站流量、权重,还会让用户置身于危险之中,泄露隐衷造成财产损失。 就是这样一个简略到不能再简略的攻击方式,在 2009 年制作了轰动寰球的“银行劫持案”,导致巴西最大银行 Banco Bradesco 银行近 1% 客户受到攻打而导致账户被盗。黑客利用宽带路由器缺点对用户 DNS 进行篡改——用户浏览黑客所制作的 Web 页面,其宽带路由器 DNS 就会被黑客篡改,因为该 Web 页面设有奇妙设计的恶意代码,胜利躲过安全软件检测,导致大量用户被 DNS 钓鱼欺骗。 网站被黑、被恶意镜像、被植入垃圾代码,景象不足为奇,其危害还包含: 钓鱼欺骗网上购物,网上支付有可能会被歹意指向别的网站,更加加大了个人账户泄密的危险; 网站内呈现歹意广告; 轻则影响网速,重则不能上网。 但面对DNS劫持时,只能束手就擒吗? 知己知彼,什么是 DNS?DNS 即 Domain Name System 的缩写,域名零碎以分布式数据库的模式将域名和 IP 地址互相映射。简略的说,DNS 是用来解析域名的,在失常环境下,用户的每一个上网申请会通过 DNS 解析指向到与之相匹配的 IP 地址,从而实现一次上网行为。DNS 作为应用层协定,次要是为其余应用层协定工作的,包含不限于 HTTP、SMTP、FTP,用于将用户提供的主机名解析为 IP 地址,具体过程如下: (1)用户主机(PC 端或手机端)上运行着 DNS 的客户端; (2)浏览器将接管到的 URL 中抽取出域名字段,即拜访的主机名,比方 http://www.aliyun.com/ , 并将这个主机名传送给 DNS 利用的客户端; (3)DNS 客户机端向 DNS 服务器端发送一份查问报文,报文中蕴含着要拜访的主机名字段(两头包含一些列缓存查问以及分布式 DNS 集群的工作); ...

November 19, 2021 · 2 min · jiezi

关于dns:史上最严重Facebook-遭遇全球宕机近-7-小时后重新上线股价下跌5

刚刚,Facebook 在经验了继续近 7 个小时的寰球宕机后从新上线。这期间,该公司股价应声上涨 5%,市值蒸发百亿。 据悉,本次 Facebook 长时间的宕机始于周二(美国工夫 4 日)凌晨 4 点左右。受此影响,其旗下的 WhatsApp、Instagram 等平台也无法访问,用户刹时话题探讨量集中,导致 Spark 和 Vodafone 的通话量也激增。 总部位于悉尼的 Facebook 女发言人安东妮亚·桑达(Antonia Sanda)为中午前的宕机赔罪,并示意“as we come back online(当咱们从新上线时)”申请客户能急躁期待。 4 日当天早些时候,电信巨头 Spark 和 Vodafone 别离就此次 Facebook 宕机事件公布了录音信息以表态。 Vodafone 发言人 Nicky Preston 示意,他们正在通过 Twitter 来分享信息。 Spark 发言人埃莉·克罗斯(Ellie Cross)示意,很多客户在无奈登录 Facebook 后打电话给 Spark,认为他们的宽带连贯可能有问题。 周二,新西兰工夫凌晨 4 点左右,Facebook 及其 Instagram 照片共享网站和 Whataps 音讯服务也在寰球范畴内离线。 美国新闻网站《新闻周刊》报道称,Facebook 员工无法访问电子邮件,他们的员工拜访卡也生效了,阻止了他们进入办公楼。 前《华盛顿邮报》记者布赖恩·克雷布斯(Brian Krebs)在推特上示意, Facebook 的域名 Facebook.com 已“短暂上市待售”,并在推特上公布了一个屏幕截图。 对于此次 Facebook 史上最重大宕机事件的起因,外界纷纷热议。有人猜想是受到歹意攻打,还有人示意会不会是 Facebook.com 的域名解析服务除了问题。不少用户更是纷纷转移至“竞争对手” Twitter 上调侃此事,一时间该事件间接被吐槽“出了圈”。 ...

October 5, 2021 · 1 min · jiezi

关于dns:DNS-故障导致大规模断网一小时Steam银行PSN等受影响

本周四,寰球最大 CDN(内容散发网络)提供商 Akamai 呈现故障,导致大规模互联网中断,中断工夫达一小时。PSN、Steam、银行、Airbnb、Fidelity 等大量罕用网站、app 和互联网服务受到影响,多家航空公司网站受到波及,包含 Delta、英国航空、西南航空。在线网站速度检测工具 Pingdom 的实时地图显示,这次中断造成了全球性影响。 Akamai 公布的事变报告显示,其 Edge DNS 服务呈现问题,Edge DNS 旨在保障网站、app 和服务平安流畅地运行。 目前,该问题曾经解决,相干服务已复原。 银行、游戏、航空、媒体等均受影响此次受影响的网站包含银行网页、证券公司、游戏服务、航空公司网站等。在服务中断期间,用户无法访问 Ally Bank、Fidelity、索尼 PSN、Airbnb 等服务,Delta、英国航空、西南航空的网站要么解体,要么登机等重要性能无奈应用。 其中游戏服务受到重大影响。网络情况检测网站 DownDetector 公布报告,称超过 4 万名用户在应用 PSN 时呈现问题,Steam 商店也呈现性能问题。此外,《堡垒之夜》(Fortnite)和《使命号召》(Call of Duty)等游戏也呈现问题。索尼 PSN 状态页显示:PlayStation Network 遭逢内部的互联网问题,可能影响您的应用体验。 事变起因系软件配置更新触发 bug,并非网络攻击至于事变起因,Akamai 通过推特示意: 软件配置更新触发了 DNS 零碎的 bug,导致服务中断,进而对 Akamai 客户的网站造成可用性方面的影响。这次中断继续时长一小时,在软件配置更新回退后,服务恢复正常。Akamai 确认此次事变与网络攻击无关。 参考链接: https://www.theverge.com/2021...https://techcrunch.com/2021/0...https://edgedns.status.akamai...

July 23, 2021 · 1 min · jiezi

关于dns:DNS域名解析

一、域名零碎1.域名零碎概述域名零碎DNS(Domain Name System)是因特网应用的命名零碎,用来把便于人们应用的机器名字转换成为IP地址。域名零碎其实就是名字零碎。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名零碎中应用了许多的“域(domain)”,因而就呈现了“域名”这个名词。“域名零碎”明确地指明这种零碎是利用在因特网中。 咱们都晓得,IP地址是由32位的二进制数字组成的。用户与因特网上某台主机通信时,显然不违心应用很难记忆的长达32位的二进制主机地址。即便是点分十进制IP地址也并不太容易记忆。相同,大家违心应用比拟容易记忆的主机名字。然而,机器在解决IP数据报时,并不是应用域名而是应用IP地址。这是因为IP地址长度固定,而域名的长度不固定,机器解决起来比拟艰难。 因为因特网规模很大,所以整个因特网只应用一个域名服务器是不可行的。因而,早在1983年因特网开始采纳档次树状构造的命名办法,并应用分布式的域名零碎DNS。并采纳客户服务器形式。DNS使大多数名字都在本地解析(resolve),仅有大量解析须要在因特网上通信,因而DNS零碎的效率很高。因为DNS是分布式系统,即便单个计算机除了故障,也不会障碍整个DNS零碎的失常运行。 域名到IP地址的解析是由散布在因特网上的许多域名服务器程序共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。 域名到IP地址的解析过程的要点如下: 当某一个利用须要把主机名解析为IP地址时,该利用过程就调用解析程序,并称为DNS的一个客户,把待解析的域名放在DNS申请报文中,以UDP用户数据报形式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在答复报文中返回。应用程序取得目标主机的IP地址后即可进行通信。若本地域名服务器不能答复该申请,则此域名服务器就临时称为DNS的另一个客户,并向其余域名服务器收回查问申请。//用一个图总结下就是: 这种过程直至找到可能答复该申请的域名服务器为止。此过程在前面作进一步探讨。 2.因特网的域名构造因为因特网的用户数量较多,所以因特网在命名时采纳的是档次树状构造的命名办法。任何一个连贯在因特网上的主机或路由器,都有一个惟一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被治理的划分。 从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。 如下例子所示: 1.这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。 DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆不便,个别不会超过12个字符),也不辨别大小写字母。 级别最低的域名写在最右边,而级别最高的字符写在最左边。由多个标号组成的残缺域名总共不超过255个字符。 DNS既不规定一个域名须要蕴含多少个上级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构治理,而最高的顶级域名则由ICANN进行治理。用这种办法可使每一个域名在整个互联网范畴内是惟一的,并且也容易设计出一种查找域名的机制。 来一个大略图: 3、域名服务器如果采纳上述的树状构造,每一个节点都采纳一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器零碎的运行效率升高。所以在DNS中,采纳划分区的办法来解决。 一个服务器所负责管辖(或有权限)的范畴叫做区(zone)。各单位依据具体情况来划分本人管辖范畴的区。但在一个区中的所有节点必须是可能连通的。每一个区设置相应的权限域名服务器,用来保留该区中的所有主机到域名IP地址的映射。 总之,DNS服务器的管辖范畴不是以“域”为单位,而是以“区”为单位。区是DNS服务器理论管辖的范畴。 区 <= 域。 下图是区的不同划分办法的举例。假设abc公司有上司部门x和y,部门x上面有分三个散布们u,v,w,而y上面还有上司部门t。图a示意abc公司只设一个区abc.com。这是,区abc.com和域abc.com指的是同一件事。但图b示意abc公司划分为两个区:abc.com和y.abc.com。这两个区都隶属于域abc.com,都各设置了相应的权限域名服务器。不难看出,区是域的子集。 下图是以上图b中abc公司划分的两个区为例,给出了DNS域名服务器树状结构图。这种DNS域名服务器树状结构图能够更精确地反映出DNS的分布式构造。图中的每一个域名服务器都可能局部域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,它就会设法找因特网上别的域名服务器进行解析。 从下图能够看出,因特网上的DNS服务器也是依照档次安顿的。每一个域名服务器只对域名体系中的一部分进行管辖。依据域名服务器所起的作用,能够把域名服务器划分为上面四种不同的类型。 根域名服务器:最高档次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都晓得所有的顶级域名服务器的域名和IP地址。不论是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只有本人无奈解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假设所有的根域名服务器都瘫痪了,那么整个DNS零碎就无奈工作。须要留神的是,在很多状况下,根域名服务器并不间接把待查问的域名间接解析出IP地址,而是通知本地域名服务器下一步该当找哪一个顶级域名服务器进行查问。 顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。 权限域名服务器:负责一个“区”的域名服务器。 本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,然而它对域名零碎十分重要。当一个主机收回DNS查问申请时,这个查问申请报文就发送给本地域名服务器。 从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)从”次级域名服务器”查出”主机名”的IP地址4、域名的解析过程留神: 一、主机向本地域名服务器的查问个别都是采纳递归查问。所谓递归查问就是:如果主机所询问的本地域名服务器不晓得被查问的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器持续收回查问申请报文(即替主机持续查问),而不是让主机本人进行下一步查问。因而,递归查问返回的查问后果或者是所要查问的IP地址,或者是报错,示意无奈查问到所需的IP地址。 二、本地域名服务器向根域名服务器的查问的迭代查问。迭代查问的特点:当根域名服务器收到本地域名服务器收回的迭代查问申请报文时,要么给出所要查问的IP地址,要么通知本地服务器:“你下一步该当向哪一个域名服务器进行查问”。而后让本地服务器进行后续的查问。根域名服务器通常是把本人晓得的顶级域名服务器的IP地址通知本地域名服务器,让本地域名服务器再向顶级域名服务器查问。顶级域名服务器在收到本地域名服务器的查问申请后,要么给出所要查问的IP地址,要么通知本地服务器下一步该当向哪一个权限域名服务器进行查问。最初,晓得了所要解析的IP地址或报错,而后把这个后果返回给发动查问的主机。 下图给出了这两种查问的差异 5.上面举一个例子演示整个查问过程:假设域名为m.xyz.com的主机想晓得另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须晓得主机y.abc.com的IP地址。上面是上图a的几个查问步骤: 上面用代码看一下: 2.对于DNS解析的TTL参数:咱们在配置DNS解析的时候,有一个参数经常容易疏忽,就是DNS解析的TTL参数,Time To Live。TTL这个参数通知本地DNS服务器,域名缓存的最长工夫。用阿里云解析来举例,阿里云解析默认的TTL是10分钟,10分钟的含意是,本地DNS服务器对于域名的缓存工夫是10分钟,10分钟之后,本地DNS服务器就会删除这条记录,删除之后,如果有用户拜访这个域名,就要反复一遍上述简单的流程。 其实,如果网站曾经进入稳固倒退的状态,不会轻易更换IP地址,咱们齐全能够将TTL设置到协定最大值,即24小时。带来的益处是,让域名解析记录可能更长时间的寄存在本地DNS服务器中,以放慢所有用户的拜访。设置成24小时,其实,还解决了Googlebot在寰球部署的服务器抓取网站可能带来的问题,这个问题麦新杰专门有一篇博文,请参考:“Googlebot无法访问您的站点”问题了解和解决办法 阿里云之所以只将TTL设置成10分钟,是为了让域名解析更快失效而已。因为之前的解析会在最长10分钟之后生效(本地DNS服务器将对应的解析条目删除),而后新的解析失效。如果是24小时,这个失效的工夫最长就是24小时,甚至更长(本地DNS服务器要有用户申请,才会发动查问)。 3.IP地址分类最后设计互联网络时,为了便于寻址以及层次化结构网络,每个IP地址包含两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都应用同一个网络ID,网络上的一个主机(包含网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址依据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。 在IP地址3种次要类型里,各保留了3个区域作为公有地址,其地址范畴如下: A类地址:10.0.0.0~10.255.255.255B类地址:172.16.0.0~172.31.255.255C类地址:192.168.0.0~192.168.255.255A类地址的第一组数字为1~126。其中0代表任何地址,127为回环测试地址,留神,数字0和 127不作为A类地址,数字127保留给外部回送函数,而数字0则示意该地址是本地宿主机,不能传送。 B类地址的第一组数字为128~191。C类地址的第一组数字为192~223。 A类地址 A类地址的示意范畴为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址调配给规模特地大的网络应用。A类网络用第一组数字示意网络自身的地址,前面三组数字作为连贯于网络上的主机的地址。调配给具备大量主机(间接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。B类地址B类地址的示意范畴为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址调配给个别的中型网络。B类网络用第一、二组数字示意网络的地址,前面两组数字代表网络上的主机地址。C类地址 C类地址的示意范畴为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址调配给小型网络,如个别的局域网和校园网,它可连贯的主机数量是起码的,采纳把所属的用户分为若干的网段进行治理。C类网络用前三组数字示意网络的地址,最初一组数字作为网络上的主机地址。实际上,还存在着D类地址和E类地址。但这两类地址用处比拟非凡,在这里只是简略介绍一下:D类地址称为播送地址,供非凡协定向选定的节点发送信息时用。

July 14, 2021 · 1 min · jiezi

关于dns:DNS-github访问不了解决方法汇总

问题形容GitHub网页最近忽然拜访不了,关上速度很慢,如何解决? 问题剖析对于GitHub网页关上速度很慢的问题,有如下起因,罕用,可能 网络原本速度慢(不太可能)DNS解析配置导致hosts域名ip解析配置导致网络带宽过大(不常见)个别常见的起因是DNS和hosts的问题 网络问题这个很容易判断是不是 问题解决参看 Windows | Hosts | windows hosts简介 批改hosts,增加如下 GitHub域名ip映射表 # github start# Github Hosts# Update 20210312140.82.112.3 github.com140.82.112.10 nodeload.github.com140.82.114.6 api.github.com13.229.189.0 codeload.github.com185.199.110.133 raw.github.com185.199.110.153 training.github.com185.199.110.153 assets-cdn.github.com185.199.110.153 documentcloud.github.com185.199.110.154 help.github.com185.199.110.153 githubstatus.com199.232.69.194 github.global.ssl.fastly.net185.199.110.133 raw.githubusercontent.com185.199.110.133 cloud.githubusercontent.com185.199.110.133 gist.githubusercontent.com185.199.110.133 marketplace-screenshots.githubusercontent.com185.199.110.133 repository-images.githubusercontent.com185.199.110.133 user-images.githubusercontent.com185.199.110.133 desktop.githubusercontent.com185.199.110.133 avatars.githubusercontent.com185.199.110.133 avatars0.githubusercontent.com185.199.110.133 avatars1.githubusercontent.com185.199.110.133 avatars2.githubusercontent.com185.199.110.133 avatars3.githubusercontent.com185.199.110.133 avatars4.githubusercontent.com185.199.110.133 avatars5.githubusercontent.com185.199.110.133 avatars6.githubusercontent.com185.199.110.133 avatars7.githubusercontent.com185.199.110.133 avatars8.githubusercontent.com# End of the section#192.30.255.112 github.com git #185.31.16.184 github.global.ssl.fastly.net#140.82.114.4 github.com#140.82.114.4 gist.github.com#185.199.108.153 assets-cdn.github.com#151.101.64.133 raw.githubusercontent.com#151.101.108.133 gist.githubusercontent.com#151.101.108.133 cloud.githubusercontent.com#151.101.108.133 camo.githubusercontent.com#151.101.108.133 avatars0.githubusercontent.com#151.101.108.133 avatars1.githubusercontent.com#151.101.108.133 avatars2.githubusercontent.com#151.101.108.133 avatars3.githubusercontent.com#151.101.108.133 avatars4.githubusercontent.com#151.101.108.133 avatars5.githubusercontent.com#151.101.108.133 avatars6.githubusercontent.com#151.101.108.133 avatars7.githubusercontent.com#151.101.108.133 avatars8.githubusercontent.com 一般来说,如果是hosts配置起因,增加上述的代码,是没有问题的 ...

June 9, 2021 · 1 min · jiezi

关于又拍云:告别DNS劫持一文读懂DoH

如果评比一个差评服务器榜单,除去育碧高居榜首外,肯定也少不了 Nintendo Switch 让人头秃的联网服务。只管任天堂曾经架设了香港 CDN 服务器用于减速,然而更新装置的速度也没有什么大幅扭转。个别这种时候大家都会抉择更改 DNS 来进步 NS 下载速度。 DNS(域名零碎)是工作生存中很常见的名词,用户只须要在浏览器中输出一个可辨认的网址,零碎便会在很短的工夫内找到相应的 IP 地址。在解析过程中,DNS 会拜访各种名称服务器,从这些名称服务器中获取存储着的与 URL 对应的数字地址。截止到当初,DNS 曾经倒退了几十年,尽管应用宽泛,却很少引起人们对其安全性的关注。 从平安角度来看,申请传输时通常不进行任何加密,任何人都能够读取的 DNS 其实是不平安的。这意味着网络罪犯能够很容易地应用本人的服务器拦挡受害者的 DNS,将用户的申请跳转到钓鱼网站上,这些网站公布恶意软件,或在失常网站上投放大量广告吸引用户,这种行为咱们称之为 DNS 劫持。为了缩小这类状况的产生,业界专家目前在挣扎探讨基于 HTTPS 的 DNS(DoH)的可行性抉择。那么什么是通过 HTTPS 的 DNS,它能够使 Internet 更平安吗?咱们一起来看看吧。 为什么须要通过 HTTPS 的 DNS?在日常上网中,如果用户输出无奈解析的网址(例如,因为输出谬误),则某些 Internet 提供商(ISP)会成心应用 DNS 劫持技术来提供谬误音讯。一旦 ISP 拦挡了此内容,就会将用户定向到本人的网站,在该网站宣传本人或第三方的产品。尽管这并不守法,也不会间接侵害用户,然而该类重定向仍会让用户恶感。因而,独自应用 DNS 协定并不是十分牢靠的。 而 DoH (DNS over HTTPS)即应用平安的 HTTPS 协定运行 DNS ,次要目标是加强用户的安全性和隐衷性。通过应用加密的 HTTPS 连贯,第三方将不再影响或监督解析过程。因而,欺诈者将无奈查看申请的 URL 并对其进行更改。如果应用了基于 HTTPS 的 DNS ,数据在传输过程中产生失落时,DoH 中的传输控制协议(TCP)会做出更快的反馈。 目前,DoH 尚未成为 Internet 上的寰球规范,大多数连贯仍依赖根本的 DNS。到目前为止,仅 Google 和 Mozilla 两家公司涉足了这一畛域。Google 现正在与局部用户一起测试该性能。此外,还有用于挪动设施的应用程序,这些应用程序也能够通过 DoH 进行网上冲浪。Android Pie 也提供了通过网络设置启用基于 HTTPS 的 DNS 选项。 ...

April 21, 2021 · 1 min · jiezi

关于dns:关于电脑DNS即域名系统访问不了网页的解决步骤

步骤一:查看电脑DNS办法如下:1、鼠标右击电脑网络连接图标 2、点击 网络和Internet设置 3、点击 更改适配器设置 4、右击你所连贯的网络,点击 属性 5、在属性界面中找到 Internet协定版本(TCP/iPv4),点击进入 步骤二:配置DNS1、如果还未配置IP地址,则可勾选主动取得DNS服务器地址;如果主动获取DNS呈现谬误,则须要手动输出DNS地址,点击勾选“应用上面获取DNS服务地址”。 2、每个省份的DNS地址是不一样的,所以能够抉择查寻所在地的运营商来获取DNS,而后填入即可以下是全国局部省份电信DNS服务器IP地址**北京 219.141.136.10219.141.140.10安徽61.132.163.68202.102.213.68重庆61.128.192.6861.128.128.68广东202.96.128.86202.96.128.166202.96.128.68202.96.134.33河南222.88.88.88222.85.85.85湖北202.103.24.68202.103.0.68湖南222.246.129.8059.51.78.211江苏218.2.2.2218.4.4.4江西202.101.224.69202.101.226.68上海202.96.209.133116.228.111.118202.96.209.5108.168.225.118浙江202.101.172.3561.153.177.19661.153.81.7560.191.244.5** 3、也可抉择填入公共DNS,罕用的公共DNS有:阿里AliDNS: 223.5.5.5 223.6.6.6一般公共DNS: 114.114.114.114 114.114.115.115

April 10, 2021 · 1 min · jiezi

关于dns:7种最佳的DNS监控工具如何监控DNS服务器

7种最佳的DNS监控工具+如何监控DNS服务器由dnsstuff于2020年2月10日 DNS是最要害的互联网服务之一。它是在线体验的传播者和礼宾人员。从浏览的Web内容到用于Facebook和Instagram等社交平台的电子邮件和聊天服务,所有内容都取决于DNS的全天候运行。鉴于其重要性,毫不奇怪的是,这种根本服务是黑客和网络罪犯的重要指标。 采纳弱小的DNS监督策略对于爱护DNS服务器至关重要。通过跟踪DNS性能,您能够确认它适当且间断地将流量路由到您的服务和网站。DNS监督工具(例如SolarWinds Server和Application Monitor)能够跟踪DNS记录,并在任何异样流动,更改或本地中断时告诉您。DNS记录对于黑客来说可能是一种简略的办法,因为它们常常蒙受人为谬误的影响。这些谬误会产生破绽,而通过全面而继续的监控流程能够防止这些破绽。 在本指南中,我将深刻解释您须要理解的无关DNS的所有,包含其含意,工作原理,常见威逼以及如何借助精选明天在市场上的最佳DNS监控工具进行监控。 什么是DNS?DNS代表域名零碎。实质上,它是负责将简略域名转换为IP地址的实用程序。例如,Google.com是一个用户敌对的域名,既简略又易于记忆。然而,与计算机兼容的IP地址可能看起来像这样:64.233.160.0。这并不是特地用户敌对,这就是为什么咱们须要DNS对其进行转换的起因。IP地址容许浏览器应用用户申请的内容拜访相应的服务器。 DNS是一个弱小的实用程序,具备分层的分布式构造。每个DNS数据库仅存储通向特定站点或硬件的数据的一部分。DNS与 TCP/IP 网络协议协同工作,它们共同努力的后果是简化了的、用户敌对的最终应用体验。 DNS服务器的数据库十分忙碌,因为它解决来自数十亿设施和人员的数十亿申请。为了让您理解DNS服务器的微小水平,一页申请可能会导致50个以上的DNS申请。这意味着您可能在一个浏览会话中创立数千个DNS申请。思考到数十亿用户每次上网时都会提交数千个申请,而DNS查问的总数却十分宏大。然而,DNS能够在不到一秒钟的工夫内解析域名,证实了它的弱小性能。 DNS如何工作?“解析”过程是指域名到IP地址的转换。用户看不到解析过程,而解析过程却在幕后稍稍进行。在浏览器搜寻栏中键入主机名时,通常会花一秒钟的工夫(通常少于一秒钟)来解析申请。此过程大概须要几微秒的工夫,然而它波及四种不同类型的DNS服务器:DNS递归服务器,根名称服务器,TLD名称服务器和权威名称服务器。这些性能都有不同的用处,它们独特单干,使用户能够拜访他们所申请的内容。 DNS递归: DNS递归服务器通常由Internet服务提供商提供。该服务器负责接管用户查问,解析用户查问并应用IP地址进行响应。认为它是中间人。它充当其余服务器之间的联络人,并承当信息的所有通信,组织和传输。它最后拜访缓存,以查看所申请的IP地址是否曾经存在,如果不存在,则会申请根名称服务器。根名称服务器:当DNS递归服务器在其缓存中找不到所需的内容时,将应用根名称服务器或根服务器。根服务器位于DNS层次结构的顶部,位于称为 root zone 的地位,这是将申请重定向到适当区域的地位。有13个根区域服务器,由十二个独立组织运行。在此阶段,这13台服务器应用TLD名称服务器的IP地址响应递归。TLD名称服务器:接下来,申请将通过TLD(Top Level Domain - 顶级域名)名称服务器。该服务器保留共享通用扩展名的主机名的信息,例如.com,.net,.gov,.edu或.co.uk。而后,TLD服务器将递归服务器指向权威名称服务器IP地址。权威名称服务器:权威名称服务器是解析申请之前的最初一步。该服务器蕴含特定域(例如google.com)的所有数据。权威服务器将主机名解析为正确的IP地址,而后将其发送回要缓存的DNS递归服务器。而后将其返回到用户的浏览器,因而能够通过IP地址拜访申请的站点。 所有这些简直都是立刻产生的。它产生在用户在搜寻中按Enter键和显示内容之间的工夫。请记住,主机响应通常蕴含其余指向额定内容的链接。这会产生所需的DNS解析的连锁效应,因而加载一个网页可能须要数十种解析申请。 还有轮询DNS服务器(round-robin),一种对权威名称服务器进行负载平衡的技术。一个域名解析后果对应一个许多DNS记录的排队,因而,当查问达到时,轮询DNS将解析出第一个DNS条目,并以相应的IP地址进行响应。而后将此DNS记录推送到队列的开端,下一次须要解析域名时,将发送队列中的下一个条目。 轮询是一种独特的DNS服务器办法,用于为具备多个冗余服务器的网站提供负载平衡。这种办法的问题在于,它不肯定能辨认服务器何时处于脱机状态,并且可能会持续向其发送查问。通过确保名称服务器具备内置的故障爱护性能(能够查看IP地址状态),能够解决此问题。 因而,这就是DNS的工作形式。它很简单,然而很快。有很多组件,这就是为什么DNS服务器监督如此重要的起因。当DNS服务器失常工作时,它十分弱小,能够在几微秒内解决申请。然而,当它无奈失常工作时,您会发现自己要解决许多简单的元素,因而领有适合的工具为您提供反对十分重要。 DNS服务器的常见威逼DNS监督之所以如此重要,局部起因在于,它能够帮忙您在破绽被利用之前辨认破绽。DNS攻打有多种类型。这些包含: DNS缓存中毒拒绝服务(DoS)攻打分布式拒绝服务(DDos)攻打域名劫持分布式反射拒绝服务(DRDoS)攻打DNS洪水攻打DNS隧道DNS坑骗随机子域攻打NXDOMAIN攻打幻域攻打DNS中毒,DoS攻打和DDoS攻打是最常见的DNS攻打。如果胜利,这些办法可能会升高站点的安全性。 DNS中毒波及将谬误数据输出到DNS缓存中。当带有中毒条目标服务器通过其缓存回复查问时,其余路由器和服务器也会缓存中毒条目。这意味着毒药会扩散。此类攻打的通常后果是将站点用户重定向到伪造站点,黑客在该伪造站点上收集其私人信息。这甚至可能包含信用卡信息。值得注意的是,并非所有的DNS中毒状况都是黑客造成的。有时它们是由根本的人为谬误引起的。 DoS代表拒绝服务,DDoS代表分布式拒绝服务。这类攻打须要一个(DoS)或多个(DDoS)起源疾速间断地攻打DNS和网站。目标是通过过多的查问来压倒反对网站的基础架构。 如何监督DNS服务器通过留在DNS条目之上并监督任何更改,您能够疾速确定可能对系统造成危险的问题。为了无效地监督DNS,您应该关注以下组件:IP地址,SOA记录,MX和SRV记录以及NS记录和根服务器。 IP地址:如果IP地址之间不匹配,您的监视系统应具备告诉性能。请记住,当收到DNS查问时,会将零碎中的IP地址与提供的IP地址进行比拟。如果地址不匹配,则须要告诉您。如果零碎同时反对IPv4和IPv6,则应监督IPv4的A记录和IPv6的AAAA记录。一个可能会失败,而另一个可能不会失败,因而监督两者都很重要。SOA记录:须要监督SOA记录,因为只有您的DNS条目产生更改,序列号就会更改。通过注意序列号,您将晓得什么时候产生了更改,这可能有助于避免即将来临的攻打。MX和SRV记录:通过监督这些记录,能够避免失落任何重要的通信门路。这是避免电子邮件系统被黑客入侵的要害。NS记录和根服务器:最初,您应该测试NS记录,以确保不会烦扰名称服务器的次要记录和备份记录。您可能还须要在名称服务器上进行测试,以证实它们在传递正确的数据。名称服务器的监督和测试能够确保您的记录平安且响应迅速。最佳DNS监控工具心愿您当初对DNS是什么,它如何工作以及如何无效地进行监督有了更好的理解。如您所知,监督DNS可能是一个简单的过程。有很多组件可供选择,这就是为什么拜访无效的DNS服务器管理软件和DNS故障排除工具如此重要的起因。这些工具能够为您提供其余方面无法比拟的深刻见解,从而爱护DNS免受攻打和性能降落。 为了帮忙您在市场上的各种产品中进行抉择,我整顿了一份我最喜爱的DNS监督工具的列表。我曾经思考了用户敌对性,产品的功能丰富水平,其实用程序的复杂程度以及总体设计。 SolarWinds服务器和应用程序监视器SolarWinds服务器和应用程序监视器(SAM)凭借其功能丰富,易于解释的数据图形示意和直观设计的仪表板,怀才不遇,成为市场上最好的DNS监督解决方案。应用SAM,您能够监督DNS用户体验,跟踪服务器硬件运行状况,并自动记录DNS服务器收到的申请。 SAM使您可能确定DNS服务器何时呈现问题,而后才成为影响最终用户体验的问题。通过提供统一且牢靠的体验,该工具能够爱护您的品牌,使其免受客户的信赖。SAM被动监督DNS服务器回答查问的能力,将响应与IP地址列表进行比拟,并记录响应工夫。 在监督服务器硬件运行状况时,无论供应商如何,SAM均可为您提供所有服务器硬件的性能和运行状况的全面视图。SolarWinds SAM也是Nagios的替代品,其内置的脚本处理程序可能轻松转换您现有的Nagios脚本。 控制台是动静且奇妙设计的,分为清晰的局部,例如硬件详细信息,以后硬件运行状况,均匀CPU负载和内存利用率,网络提早和数据包失落以及治理。零碎将告诉您所有要害组件的状态,包含电源,CPU,电池,硬盘驱动器,风扇速度和温度。这些服务器硬件运行状况监督实用程序扩大到Dell PowerEdge,HP ProLiant,IBM eServer,Microsoft Windows Server和VMware vSphere虚拟机管理程序。这是一种十分通用的产品。 如果您的DNS服务器收到异样数量的申请,SAM的警报系统将使您始终处于循环状态。这可能会标记潜在的DNS攻打。告诉还使您有机会减少DNS服务器的容量,因而不会影响最终用户。 数据表示是我最喜爱SAM的事件之一。内置的容量预测图,公制表盘,图表和表格使读取数据变得容易。这些可视化对于治理服务器容量和预测资源利用率特地有用。每当服务器资源达到您确定的特定程度时,您都会收到警报,并且能够绘制一段时间内的峰值和平均值以创立牢靠的容量预测。 即便具备所有这些性能,SAM仍远远不止是DNS服务器监督工具。如果您正在寻找DNS故障排除工具,则它涵盖了资产清单,操作系统,硬件,虚拟化和应用程序。这意味着您能够对立所有服务器和应用程序监督过程,并将它们整合到一个仪表板中。 如果您想在提交之前相熟SAM,请下载功能齐全的30天收费试用版。 回到顶部 纳吉欧斯十一世 Nagios XI是蕴含DNS服务器监督性能的服务器和网络监督工具。Nagios XI最好的事件之一就是它的设置非常容易,能够抉择通过近程帮助或疾速入门进行部署。这将节俭您的工夫,并确保所有设置均正确。 如果您须要通用的IT基础架构监督解决方案,那么Nagios XI值得思考。它涵盖了所有要害组件,包含服务,操作系统,应用程序,网络协议,网络根底构造和零碎指标。您能够通过从数百个独立的附加组件中进行抉择来加强Nagios XI,从而确保您能够监督简直所有外部应用程序,服务和零碎。应用这些第三方附加组件的选项使Nagios XI成为一种灵便的工具,这是不言而喻的益处。您还能够为特定用户自定义布局,首选项和设计,从而为您的团队提供最大的灵活性。 Nagios XI的工作过程十分高效,这意味着该工具实际上具备有限的可扩展性。您将通过集中式仪表板深刻理解所有操作员,使您能够高深莫测地查看外部和第三方数据。您能够轻松地钻取数据以取得更多细节。 最终,这是一个易于应用的工具。它采纳了集成的,基于Web的配置控制台,使管理员能够轻松地将控制权调配给团队成员。它还具备配置向导,该向导可疏导用户实现监督过程,并领导他们增加新服务,设施和应用程序。应用配置向导,您将不须要培训简单的监控技术和工具,从而节俭了工夫和资源。 只管我喜爱Nagios XI仪表板的性能,但其设计可能更具吸引力。我的口味有点凌乱,我更喜爱洁净的美学。您能够安顿在线演示和疾速入门。 ManageEngine应用程序管理器 ManageEngine Applications Manager是公司能够做什么的一个很好的例子。该程序可用于DNS服务器可用性和性能监督。它涵盖了一系列要害指标,包含搜寻工夫和响应工夫,搜寻值状态,记录可用性和搜寻字段。这些指标以及其余指标使您能够具体而全面地理解DNS服务器的工作形式。 我喜爱Applications Manager容许您以图形,图表和刻度盘的模式查看数据,从而使您能够疾速理解DNS服务器中产生的所有。这特地有价值,因为DNS服务器能够产生大量信息,并且图形示意模式能够帮忙您疾速辨认趋势和模式。这些模式能够帮忙辨认和解决任何问题或异样。 ...

April 10, 2021 · 1 min · jiezi

关于dns:DNS-服务的运行详解

互联网是一个很大的中央。大量的协定和物理根底构造曾经到位,使咱们可能轻松应用它。DNS是一个微小的话题。在本文中,我将介绍无关DNS及其组成部分的基本知识,并探讨DNS解析的理论利用。 DNS的目标#连贯到互联网的每个设施都有一个调配给它的IP地址。该设施能够托管大量服务,互联网上的任何人都能够通过应用其IP地址连贯到该设施来拜访。例如,Wikipedia已使其网站可拜访IP地址103.102.166.224(该IP地址可能与您不同),然而记住一长串数字以不便我分割它并不不便。Pffff。 这将立刻限度拜访Internet上所有很酷的内容。wikipedia.org代替IP地址将更容易应用。咱们宁愿有某种机制能够为咱们记住这些映射。因而,就像电话中的联系人列表一样,DNS(域名零碎的缩写)保护着一堆无关服务器名称(或更确切地说是域名)的信息,每当您关上任何网站时,Web浏览器都会无提醒地查问这些信息。 从技术上讲,DNS是一个 分布式的分层数据库通过与该数据库进行交互(插入和检索信息)的机制在互联网上流传。DNS中的信息存储为资源记录(RR),这实际上是域名和某些数据之间的映射。一些资源记录类型为: A :将域名映射到IPv4地址。AAAA :映射到IPv6地址。CNAME :映射到域名的别名。NS :应用受权的域名服务器映射域名。SOA :指定域的区域的开始。对于IP而言,领有更多资源的资源记录对于将层次结构引入DNS并简化域名治理十分重要。在服务器的IP地址被更改的状况下,DNS还通过放弃雷同的服务器名称来带来可拜访性的一致性。 DNS是互联网的要害构造,家喻户晓,如果没有DNS,DNS将会解体。 URL的细分#在开始之前,让咱们先理解一个URL并弄清楚DNS解析URL的哪一部分。思考以下URL https://www.youtube.com/watch?v=dQw4w9WgXcQ 建设连贯后,“ https”是用于与Web服务通信的协定。“ www.youtube.com ”是代表托管Web服务的设施的域名,须要解析为IP地址。也称为齐全合格域名(FQDN)。'watch?v = dQw4w9WgXcQ'是咱们要在Web服务中拜访的资源或页面。FQDN字符串由用单点分隔的标签组成。传统上,FQDN以代表根域的点完结。“ www.youtube.com ”和“ www.youtube.com”。'是一样的。开端的点在示意中能够省略,但外部所有分辨率都在开端点就位的状况下产生。 DNS中的层次结构#网站域名#域名是互联网中的一个畛域,领有域名的实体对其领有管理权-在DNS中为相应域名创立或更新资源记录。层次结构能够在域名中看到,并且能够可视化为树。wikipedia.org.是域名的示例。这等级制度域的数量从FQDN中的右标签到左标签降序。左侧的每个标签都指定了右侧域的一个子域。层次结构中的第一个域是根域(由点示意)。 com,org,in,io是根域下的一些子域。根域下的第一级域称为顶级域(TLD),并且独立于根域进行操作。TLD的子域可供互联网用户购买。例如wikipedia,TLD的子域org.必须在某个工夫点已购买。 com,org,in是根域的子域。youtube,duckduckgo是com或com.域的子域。www,music是youtube.com或youtube.com.域的子域。领有域名权限能够将其映射到某些网络设备(可能正在运行某些网络服务)的IP地址或创立子域。域所有者甚至能够抉择将子域的权限委派给其余实体。例如,如果Google感觉能够,那么它能够发售域名music.youtube.com并将域名的全副权限委派给买方。这是顶级域名(TLD)在发售子域名时通常会做的事件。 区域#区域是一组子域,其中包含域所有者对域进行齐全管制的域自身。根区域仅具备根域。治理根区域的ICANN组织有权创立更多的TLD(可能是子域),就像过来一样。 根域的子域com,org是从在权威方面根域齐全独立的。这意味着,如果在com域下增加任何新的子域,则根域不会受到任何影响,因为该com域不在其管辖范畴之内。facebook.com在独自的区域中。域apps.facebook.com和与developers.facebook.com处于同一区域facebook.com。如果facebook.com要增加新服务(例如直播电视),他们能够tv.facebook.com在同一区域中进行设置,而无需打搅父域com。 一个域可能在其区域下仅蕴含几个子域,并为其余子域委派权限。 权威名称服务器#每个域都有至多2个(用于冗余)与它们相关联的专用权威名称服务器。这些名称服务器保护并提供域及其子域的资源记录。如果查问域名,则最终将由其权威的名称服务器提供服务。 权威名称服务器是DNS的重要组成部分,因为它们造成了要查问域名解析的分布式层次数据库的节点。它们使DNS得以散发,因为每个域名能够具备本人的名称服务器,并且不绑定到单个地方数据库。 管理员能够依据本人的抉择配置名称服务器。大型组织能够保护本人的权威名称服务器,以治理其域专有的资源记录。然而,在其余域之间共享其权威名称服务器的域名是很常见的。换句话说,许多独自的,不相干的域名可能正在应用共享名称服务器。 口头中的DNS解析#DNS解析由DNS客户端启动,以寻求域名的某些信息(例如IP地址)。它创立一个DNS查问,并将其发送到DNS服务器,而后DNS服务器为DNS客户端解析该查问。当咱们连贯到Internet时,咱们的网络配置将保留由咱们的ISP提供的默认DNS服务器。咱们甚至能够应用咱们抉择的DNS服务器。8.8.8.8是Google提供的一种十分风行,易于记忆的DNS服务器。 下图演示了DNS解析中查问和响应的流程。 客户端A为域en.wikipedia.org寻找具备IP地址的Type资源记录,该客户端创立DNS查问并将其发送到配置的DNS服务器。要查找en.wikipedia.orgDNS服务器的IP地址,必须首先找到该域的名称服务器。为了找到该名称服务器,DNS服务器从其域名服务器首先与DNS服务器一起存储的根域开始,开始从右向左一次解析一个标签的域名。接下来的一行将是org.它查问根域的权威名称服务器之一,以询问的名称服务器。org.请留神,它首先搜寻名称服务器,因为它们领有该域的所有信息。查问的名称服务器将后果返回到DNS服务器。DNS服务器接下来向域名服务器之一查问org.域,以申请以下域名服务器的域名服务器:wikipedia.org查问的名称服务器将适合的后果返回到DNS服务器。最初,DNS服务器查问wikipedia.org名称服务器,询问以下内容的类型A记录:en.wikipedia.org查问的名称服务器以类型A资源记录来响应DNS服务器。DNS服务器将此后果回答给提出查问的DNS客户端。为了使名称服务器免于反复查问的累赘,DNS服务器实现了高速缓存机制,并且仅在名称服务器中按层次结构查问名称服务器(如果它们在其高速缓存中没有客户端申请的资源记录)。为了解释DNS解析及其所有组成部分,以上插图未思考缓存。如果DNS服务器和Namerserver没有所需的信息,它们将以适当的答案进行回答。 应用DiG的示例#在浏览完所有内容后,这是一段乏味的时光,您能够看到这所有并进行验证。我曾经将DNS服务器设置为,208.67.222.222并且将应用dig实用程序在bash shell中执行几个DNS查问。 1.简略的开掘查问#dig冀望将域名作为参数,并且默认状况下将查问A类资源记录。上面是命令dig www.reddit.com及其输入。 neeraj@mrm:~$ dig www.reddit.com ; <<>> DiG 9.16.1-Ubuntu <<>> www.reddit.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16713;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;www.reddit.com. IN A;; ANSWER SECTION:www.reddit.com. 254 IN CNAME reddit.map.fastly.net.reddit.map.fastly.net. 30 IN A 151.101.65.140reddit.map.fastly.net. 30 IN A 151.101.129.140reddit.map.fastly.net. 30 IN A 151.101.193.140reddit.map.fastly.net. 30 IN A 151.101.1.140;; Query time: 84 msec;; SERVER: 208.67.222.222#53(208.67.222.222);; WHEN: Tue Sep 01 00:16:04 IST 2020;; MSG SIZE rcvd: 142 输入阐明: ...

April 8, 2021 · 4 min · jiezi

关于microsoft:微软众多服务发生大规模宕机原因可能与DNS有关

明天,微软的泛滥服务呈现了宕机状况,其中包含微软Teams、Office 365、Xbox Live、OneDrive、Azure和Skype。 值得注意的是,这是近几周来微软产生的第二次重大故障。上个月15日,Azure、Xbox Live、Teams和Office 365 也产生宕机,预先微软官网确认是因为Azure Active Directory 服务配置问题引发了宕机。 尽管微软在短时间内解决了次问题,但后续有多个Microsoft SharePoint 和 Microsoft Teams 用户报告称,Azure Active Directory服务宕机后,其SharePoint文件夹中的文件莫名其妙隐没了或被移到了垃圾箱。 依据故障追踪网站DownDetector的数据显示,本次宕机事变开始于美国东部工夫4月2日下午5点左右,忽然有数千份服务中断的报告涌入,依据局部报告揣测,这次宕机只影响到了美国用户,起因应该是DNS问题。 故障产生后不久,Microsoft确认了这次故障跟DNS无关,美国东部工夫下午 6:45,微软公布了一条简短的申明,示意他们曾经改道DNS流量,各项服务开始复原。 有专家指出近期微软宕机事件频发,外围的问题可能是微软的云经营服务增长过快,不过当初不从新扫视并梳理一些问题,很可能不久后又会大声一次大宕机...... Azure状态查看网站传送门:https://status.azure.com/en-u...头图起源: Bryce Durbin / TechCrunch

April 2, 2021 · 1 min · jiezi

关于又拍云:白话科普聊聊-DNS-的那些小知识

你是否在上网时,遇到过这样的状况:QQ 能失常发送音讯,然而网页却打不开,查看网络连接又失常显示。面对这种状况很多小伙伴都感到有些无措。那到底要怎么解决,这到底是怎么回事呢? 上网查问得悉,个别状况下电脑都是主动获取 DNS 服务器的,无需手动设置,但一些非凡状况下,没有获取到 DNS 服务器,或者服务器呈现故障,那咱们就须要手动更换 DNS 来保障失常拜访网页。而这类无奈显示的状况,恰好都是因为 DNS 配置谬误导致的,能够通过批改 DNS 来解决。 那么 DNS 到底在哪里,它要如何批改呢? 什么是 DNSDNS(Domain Name System)是域名零碎的缩写。它是 Internet 的根底之一,用于将域名映射到 IP 地址,就像手机电话簿里将人的名字对应到电话号码一样。当咱们在浏览器中输出 Web 地址时,就能够通过 DNS 查问将其转换为关联服务器对应的 IP 地址。如果没有 DNS,咱们须要记住每个站点的 IP 地址能力拜访它。 这在互联网刚衰亡时,还是能够比拟轻松做到的,过后人们能够轻松地将特定 IP 地址与特定计算机绝对应,通过在浏览器中间接输出特定的 IP 地址以拜访网站。起初,随着越来越多的设施和人们退出到这个一直倒退的网络,IP 越来越多,记忆就变成了一项极大的累赘,网民都想要一个更易于记忆的单词组成的地址,因而诞生了域名。 在 70 年代和 80 年代初,这些名称和地址是由一个人(斯坦福大学的 Elizabeth Feinler)调配的,此人在名为 HOSTS.TXT 的文本文件中保护了所有与互联网连贯的计算机的主列表。 不言而喻随着 Internet 的倒退,这是站不住脚的场面,越来越多的地址不可能由一个人保护。所以 1983 年,南加州大学的钻研人员 Paul Mockapetris 因而开发了最后的域名零碎,并命名为 DNS。只管尔后 DNS 产生了很大变动,但从根本上讲,它的工作形式仍与 40 年前一样。 在具体理解 DNS 在网络中的作用于工作原理前,咱们先来看一下 DNS 的类别。 DNS 服务器类别所有 DNS 服务器都属于以下四个类别之一:递归解析器、根域名服务器、TLD 域名服务器和权威性域名服务器。在典型的 DNS 查找中,这四种 DNS 服务器通过协同工作来实现将指定域的 IP 地址提供给客户端的工作。 ...

March 24, 2021 · 2 min · jiezi

关于http:数据在网络中如何传输图解-HTTP-协议

在浏览器中输出 URL 时,Web 页面如何出现? 依据浏览器的地址栏中指定的 URL,Web 浏览器从 Web 服务端获取文件资源,从而显示出 Web 页面。Web 应用一种名为 HTTP(HyperText Transfer Protocol) 的协定作为标准,实现客户端到服务器等一系列运作。 利用 TCP/IP 协定进行通信时,流程如下: 发送端的层于层之间传输数据时,每通过一层必定会被打上一个该层所属的首部信息,反之,在接管层,每通过一层会把音讯的首部消去。 确保可靠性的 TCP 协定TCP 位于传输层,提供牢靠的字节流服务,为了便于传输,将大数据宰割成以报文段为单位的数据包进行治理,为了准确无误的将数据发送到目的地,TCP 协定会采纳三次握手策略。采纳 TCP 协定,把数据包发送进来之后,TCP 不会对传送后的状况束之高阁,它会向对方确认是否胜利送达。握手过程应用了 TCP 的标记 SYN 和 ACK。 负责传输的 IP 协定IP 协定的作用是把数据包传送给对方,确保传送到哪里,有两个重要的条件 IP 地址 和 MAC 地址。IP 地址指明了节点被调配到的地址,MAC 地址是网卡所属的固定地址,IP 能够能够扭转,MAC 地址根本不会扭转。IP 地址通信依赖 MAC 地址,在网络上,通信单方在同一局域网内的状况很少,通常须要通过多台计算机和网络设备直达能力连贯到对方。在中转站时,会利用下一站直达设施的 MAC 地址搜寻下一个直达指标,这是会采纳 ARP 协定。ARP 协定是用以解析地址的协定,依据 IP 地址能够反查出对应的 MAC 地址。 负责域名解析的 DNS 服务DNS 服务和 HTTP 协定一样位于应用层,提供域名到 IP 地址的解析服务。通常应用域名拜访计算机,而不是间接通过 IP 地址,为了解决上述问题,DNS 服务应运而生,DNS 协定提供通过域名查找 IP 地址,或通过 IP 地址反查域名服务。 ...

March 17, 2021 · 1 min · jiezi

关于docker:Kubernetes-118-配置集群内部dns

批改 coredns cm[root@master49 test]# kubectl get cm coredns -n kube-system -o yamlapiVersion: v1data: Corefile: | .:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } prometheus :9153 #forward . /etc/resolv.conf forward . 192.168.6.242 ###批改这里即可 cache 30 reload loadbalance }kind: ConfigMapmetadata: creationTimestamp: "2020-12-21T02:23:59Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: {} manager: kubeadm operation: Update time: "2020-12-21T02:23:59Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:Corefile: {} manager: kubectl operation: Update time: "2021-03-16T08:26:27Z" name: coredns namespace: kube-system resourceVersion: "23351960" selfLink: /api/v1/namespaces/kube-system/configmaps/coredns uid: 8d85909b-afe2-47ab-92c8-0a14059433d3[root@master49 test]# kubectl edit cm coredns -n kube-system重启coredns[root@master49 test]# kubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEcalico-kube-controllers-75d555c48-9z5ql 1/1 Running 5 85dcalico-node-2xt99 1/1 Running 4 85dcalico-node-8hd6s 1/1 Running 3 85dcalico-node-bgg29 1/1 Running 2 85dcalico-node-pq2pc 1/1 Running 2 85dcalico-node-rs77f 1/1 Running 4 85dcoredns-7ff77c879f-dkxcq 1/1 Running 0 8m38scoredns-7ff77c879f-vc262 1/1 Running 0 8m16setcd-master49 1/1 Running 5 85detcd-master50 1/1 Running 3 85detcd-master56 1/1 Running 17 85dkube-apiserver-master49 1/1 Running 0 54dkube-apiserver-master50 1/1 Running 0 54dkube-apiserver-master56 1/1 Running 0 54dkube-controller-manager-master49 1/1 Running 7 85dkube-controller-manager-master50 1/1 Running 5 85dkube-controller-manager-master56 1/1 Running 6 85dkube-proxy-4csh5 1/1 Running 5 85dkube-proxy-54pqr 1/1 Running 2 85dkube-proxy-h2ttm 1/1 Running 3 85dkube-proxy-nr7z4 1/1 Running 2 85dkube-proxy-xtrqz 1/1 Running 3 85dkube-scheduler-master49 1/1 Running 7 85dkube-scheduler-master50 1/1 Running 5 85dkube-scheduler-master56 1/1 Running 6 85dlog-pilot-2lzh2 1/1 Running 1 84dlog-pilot-4lrvr 1/1 Running 0 84dlog-pilot-9mj54 1/1 Running 0 84dlog-pilot-rwrzh 1/1 Running 1 84dlog-pilot-xs7mh 1/1 Running 1 84d[root@master49 test]# kubectl delete pod coredns-7ff77c879f-dkxcq -n kube-systempod "coredns-7ff77c879f-dkxcq" deleted[root@master49 test]# kubectl delete pod coredns-7ff77c879f-vc262 -n kube-systempod "coredns-7ff77c879f-vc262" deleted

March 16, 2021 · 2 min · jiezi

关于dns:DNS查询机制

先理解一下域名层级:以百度为例子:www.baidu.com。顺次是com(顶级域名)、baidu(一级域名)、www(二级域名)。然而本质上还有一个惟一的根域名root:www.baidu.com.root,但因为root是惟一的,因而是否写root根域名不是特地必要。 1.什么是DNSDNS:Domain Name System,也即域名零碎,次要用于治理和查问域名对应的IP地址。在理论的生存中,在网页上输出某个网址:www.baidu.com时,浏览器并不是仅通过www.baidu.com这个域名就能拜访到对应的服务器并申请到内容,浏览器须要有对应服务器的ip地址,那如何获取域名对应的IP地址呢?此时DNS就在此处起作用了,浏览器通过将域名www.baidu.com传给域名服务器DNS,DNS查找到对应的ip地址发送给浏览器,浏览器便能够通过ip地址拜访到对应的服务器获取到内容了。 2.DNS工作机制咱们从浏览器输出域名到获取到真正的ip地址登程,查看整套工作流程,从而明确DNS在其中施展的作用是这样的。 首先在浏览器中输出域名:www.baidu.com,此时浏览器会先在浏览器本身的DNS缓存中进行查找记录,如果查找到此域名相干的记录,则间接进行拜访对应的ip地址。如果查找不到,浏览器则会去本地电脑中去查找hosts文件,查找此域名的相干记录,如果查找胜利则间接拜访IP地址,否则浏览器会查问以后电脑设置中设置好的DNS服务器地址,个别电脑连上网络之后DNS服务器地址都是主动设置好了的(也能够手动设置已知的DNS服务器地址),也即默认由设施连贯的路由器调配好了,然而主动设置的DNS服务器的IP地址,个别都是治理WiFi的路由器的IP地址。 假如采取主动设置,浏览器在网络设置中获取到的ip地址因为是路由ip,则会发动DNS查问申请到对应的路由器,此时路由器收到DNS查问申请之后,会将申请转发到光猫(光猫只有连贯上服务器网络,就会被调配相应的DNS服务器IP),光猫再转发给运营商DNS服务器,个别是Local DNS Server(DNS服务器,最邻近以后浏览器地址),负责域名查问。 此时Local DNS Server先在本人的服务器进行查问,查看是否有www.baidu.com域名对应信息,有则返回对应的ip地址给浏览器,否则将查问申请发送给根DNS服务器(Root DNS Server),那Local DNS Server如何拜访到Root DNS Server的? 因为Root DNS Server 在寰球只有13台,所以其信息个别内置在其余DNS服务器中的。而拜访哪一台Root DNS Server呢?DNS服务器会向每一台root DNS Server发动查问顶级域名申请,哪一台信息先到达,则应用哪一台回传的信息。 那什么是root DNS server呢?root DNS Server中记录了各个顶级域名的DNS服务器的ip地址信息。因而local DNS Server会先去询问root DNS Server中对于com的信息,接着Local DNS server收到对于com顶级域名的DNS IP地址,也即Top Level Server(com顶级域名服务器,记录一级域名的DNS服务器) 此时Local DNS Server又去拜访Top Level Server,询问其对于baidu.com的信息,接着Local DNS Server收到对于负责baidu.com一级域名的DNS ip地址,也即Name DNS Server(记录残缺的域名,最初查找到ip地址的中央) 最初Local DNS Server从Name DNS Server处获取到www.baidu.com的ip地址,并将其传给了浏览器。 能够看出DNS查问机制次要依赖于域名的分层机构,先从顶级域名com查问,再查问baidu.com一级域名,最初是残缺的域名www.baidu.com,而每一层对应着root DNS Server、Top DNS Server、Name DNS ServerDNS服务器,而这些服务器都是记录了治理下一层域名的DNS服务器的ip地址,也即Root DNS Server记录了治理不同顶级域名的DNS服务器IP地址,比方:com、org、net等这些顶级域名对应的服务器。Top DNS Server记录了治理不同一级域名的DNS服务器IP地址,比方:该台DNS服务器是负责所有com顶级域名的服务器,外面记录了baidu.com、bing.com等一系列的治理这些一级域名的DNS服务器的ip地址

March 13, 2021 · 1 min · jiezi

关于dns:多图慎入从四层模型看网络是怎么连接的

大家好,我是公众号:java小杰要加油,明天来分享一个对于计算机网络的知识点——网络到底是怎么连贯的?话不多说,间接开车浏览器生成音讯且发送发送一个音讯的总体流程如下 生成HTTP申请音讯举个栗子,当咱们在浏览器输出https://www.jdl.cn/img/servic...网络地址的时候 浏览器首先会对URL进行解析 https:示意拜访数据源的机制,也就是协定www.jdl.cn: web服务器名称img :示意目录名service.843585b7.png:示意文件名而后就要生成HTTP音讯了,它大略长这样 这些字段具体内容是什么能够参考这篇文章五千来字小作文,是的,咱们是有个HTTP。 DNS域名解析为IP地址浏览器生成了这个HTTP音讯后,它要往哪里发送呢?当然是服务器啦,所以就要解析这个域名对应的是哪台服务器,IP地址是什么,因为IP地址不好记,所以才有了对应的域名,便于咱们人类记忆。 浏览器会查看缓存有没有这个域名对应的ip地址操作系统会查看缓存(就是咱们平时说的hosts文件)操作系统会发送给本地区的DNS服务器,让它帮忙解析下DNS服务器承受来自客户端的查问,包含以下三个内容 域名: 服务器,邮件服务器的名称Class: 在最早设计DNS时,DNS在互联网以外的其余网络中的利用也被思考到了,而Class就是用来辨认网络信息的,不过现在除了互联网就没有其余网络了,因而Class的值永远代表互联网的IN记录类型: 示意域名对应何种记录类型 A记录时,域名间接对应IP地址CNAME时,此域名对应其余域名MX时,示意域名对应的是邮件服务器对于不同的记录类型,响应数据也不一样 域名的层次结构越靠右档次越高,从右向左一级一级的划分 : 例如 www.jdl.cn 就是cn->jdl->www具备这种层次结构的域名信息都会注册到DNS服务器中,而每个域都是作为一个整体来解决的客户端和DNS服务器交互流程大略如下 下级DNS服务器中要注册其上级域的DNS服务器IP地址,而后下级DNS服务器IP地址要注册到更上一级的DNS服务器中,此次类推根域的DNS服务器信息保留到互联网中所有的DNS服务器中,这样的话,所有的DNS服务器都会找到根域,而后一级一级的往下找,直到找到本人想要的那个域名调配给根域的IP地址仅有13个,就是顶级域名(com,cn等)对应的ip地址具体交互就是上面这样 然而一台服务器存不下这么多,所以个别都是DNS服务器大接力来寻找这个ip地址,图如下 客户端找到最近的DNS服务器,查找www.jdl.cn的信息,可是最近的DNS服务器没有这个信息,就转发到了根域服务器下,通过判断发现是cn的顶级域名的,于是根域DNS服务器会返回它所治理的cn域中的DNS服务器的ip地址,接下来,最近的这个DNS服务器又回去拜访com域名的服务器,以此类推,最终会找到 www.jdl.cn这个服务器的IP地址委托协定栈发送音讯晓得了IP地址后,就能够委托操作系统外部的协定栈向这个指标IP地址发送音讯了 协定栈的内部结构 浏览器、邮件等个别应用程序收发数据时用TCPDNS查问等收发较短的控制数据用UDP网络分层 OSI七层模型开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范畴内互连为网络的规范框架。定义于ISO/IEC 7498-1。TCP/IP四次模型 应用层: HTTP、DNS、FTP传输层: TCP、UDP网络层: IP网络接口层TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)TCP/IP协定不仅仅指的是TCP 和IP两个协定,而是指一个由FTP、SMTP、TCP、UDP、IP等协定形成的协定簇, 只是因为在TCP/IP协定中TCP协定和IP协定最具代表性,所以被称为TCP/IP协定客户端服务器传递数据流程 一个数据包从客户端到服务端两头通过每一层都须要加工解决客户端这边须要一直的给数据包增加头部服务端这边须要一直的拆分这个数据包三次握手当两台计算机要传递数据的时候,肯定要先连贯,得通过TCP三次握手吧(仅仅指指走TCP协定须要连贯的),咱们平时都说TCP连贯要通过三次握手,咱们就来看一下到底什么是TCP三次握手,如图所示 客户端要发送的时候,被动从closed状态关上,服务器启动后就始终处于监听LISTEN状态客户端发送 SYN = 1,seq = x 给服务端,客户端处于SYN_SEND状态。服务端收到后给客户端发送 SYN = 1,ACK =1, seq = y,ack = x+1。此时服务端处于SYN_RCVD状态客户端收到后发送ACK =1, seq = x+1,ack = y+1给服务器,此时客户端状态是ESTAB-LISHED服务端收到后状态变为ESTAB-LISHED三次握手通过后,就代表客户端和服务端能够传递数据包进行交互啦咱们说到SYN,ACK,seq,ack这些又是什么呢?这些其实是TCP数据包里的属性,咱们接着往下看(在传输层中有解释)应用层HTTP数据包拆分 个别HTTP申请音讯不会太长,一个网络包就能装的下发送缓冲区中的数据如果超过MSS的长度,就会被以MSS长度进行拆分放进独自的网络包中MTU(Maximum Transmission Unit): 一个网络包的最大长度,以太网中个别是1500字节MSS(Maximum Segment Size): 除去头部之后,一个网络包所包容的TCP数据的最大长度传输层而后下面应用层的这个网络包再加上TCP头部TCP报文格式 ...

March 7, 2021 · 1 min · jiezi

关于dns:cdn-系统化认识

一、名词解释 Origin Server源站:做 CDN 之前的客户真正的服务器。User:访问者,也就是要拜访网站的网民。Last Mile:最初一公里,也就是网民到他所拜访到的 CDN 服务器之间的门路。CNAME记录:它是一个别名记录( Canonical Name );当 DNS 零碎在查问 CNAME 右面的名称的时候,都会转向 CNAME 右面的名称再进行查问,始终追踪 到最初的 PTR 或 A 名称,胜利查问后才会做出回应,否则失败。CNAME域名:CDN的域名减速须要用到CNAME记录,在阿里云控制台配置实现CDN减速后,您会失去一个减速后的域名,称之为CNAME域名(该域名肯定是.kunlun.com), 用户须要将本人的域名作CNAME指向这个.kunlun.com的域名后,域名解析的工作就正式转向阿里云,该域名所有的申请都将转向阿里云CDN的节点。DNS:DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络能够辨认的ip地址。人们习惯记忆域名,但机器间相互只认IP地址,它们之间的转换工作称为域名解析,域名解析须要由专门的域名解析服务器来实现,整个过程是主动进行的。比方:上网时输出的www.baidu.com会主动转换成为220.181.112.143边缘节点:也称CDN节点、Cache节点等;是绝对于网络的简单构造而提出的一个概念,指间隔最终用户接入具备较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连贯速度。其作用是将访问量较大的网页内容和对象保留在服务器前端的专用cache设施上,以此来进步网站拜访的速度和品质。Cache:cache高速缓冲存储器一种非凡的存储器子系统,其中复制了频繁应用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁拜访的RAM地位的内容及这些数据项的存储地址。当处理器援用存储器中的某地址时,高速缓冲存储器便查看是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保留该地址,则进行惯例的存储器拜访。因为高速缓冲存储器总是比主RAM存储器速度快,所以当RAM的访问速度低于微处理器的速度时,常应用高速缓冲存储器。全站减速:给整个网站设置cdn减速, 二、什么是CDN 以及用法? CDN的全称是Content Delivery Network,即内容散发网络。 次要提供两样货色, 为用户动态分配最近节点,便于缩短用户拜访资源的工夫及其他需要,以便减速一些动静资源的拜访,比方游戏减速,视频直播分流,文件下载等。基于第一点,还为动态资源提供缓存服务,减速用户的下次访问速度用法有两种, 资源由其余网站提供(称为源站),比方某些开源cdn,间接批改代码里的资源链接,<script src="https://cdn.bootcdn.net/ajax/libs/vue/3.0.2/vue.cjs.js"></script>,资源由本人的服务器提供,这种状况下接入CDN,其原理就是在某个DNS解析阶段, 把用户对我的网站的拜访申请,转发到CDN的服务器上, 须要理解一些DNS解析方面的常识。超清晰的 DNS 原理入门指南三、为什么须要CDN? 举个简略的例子,假如咱们疏忽网络传输的损耗、设施延时,网络传输速度靠近光速,是30万公里每秒,从东京到美国硅谷的间隔大略为1万公里,也就是说,如果你的服务器在东京,你上传了一张很小的图片,美国用户拜访至多须要60毫秒。而且,这只是实践数据,事实世界中,网络环境是十分复杂的,跨地区、跨运营商、网络拥塞、抖动等问题,都会千里之行;始于足下,使得延时成倍增加,还有可能拜访失败,最终影响拜访体验。 CDN的呈现,正是为了解决这个问题。咱们将这张图片散发并缓存在美国的CDN节点之上,美国用户就无需从东京获取数据,间接从就近的美国本地CDN节点获取到图片,这大大节俭了传输工夫,晋升拜访效率。CDN的节点通常会遍布寰球,源站的文件会被被缓存到世界各地,这样寰球用户都能够实现快速访问。 它有点像散布于各地的仓储物流点,很多品牌会事后在仓储物流点储备一些爆款商品(动态文件应用CDN进行缓存),当用户从电商平台下单购买货物的时候(用户发动申请),平台依据用户的播种地址就近匹配到最近的仓储物流点并间接进行派货(就近散发),让用户以最快的速度拿到快递包裹(散发的内容)。咱们能够用理论的生存教训来做个比照,如果从江浙沪包邮区寄给杭州的用户,个别第二天就能到,如果是从北京、深圳发货,个别须要2-3天! 四、什么是DNS? DNS (Domain Name System 的缩写)的作用非常简单,就是依据域名查出IP地址。你能够把它设想成一本微小的电话本。 举例来说,如果你要拜访域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。 在dns中的一些术语, A:地址记录(Address),返回域名指向的IP地址,为了安全可靠,会有多个A记录,也就是一个域名,对应多个A记录MX:邮件记录(Mail eXchange),返回接管电子邮件的服务器地址。NS:域名服务器记录(Name Server),返回保留下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。CNAME:标准名称记录(Canonical Name),返回另一个域名,即以后查问的域名是另一个域名的跳转,因为CNAME记录就是一个替换,所以域名一旦设置CNAME记录当前,就不能再设置其余记录了(比方A记录和MX记录),这是为了避免产生抵触。举例来说,foo.com指向bar.com,而两个域名各有本人的MX记录,如果两者不统一,就会产生问题。因为顶级域名通常要设置MX记录,所以个别不容许用户对顶级域名设置CNAME记录。五、个别的DNS解析流程? 实际上,一个残缺的网址前面有个点, 如test.baidu.com. ,只不过浏览器为了不便用户都给省略了。 比方解析test.baidu.com. ,是具体怎么解析成IP地址的呢? 能够形容为,从右向左 . -> .com -> baidu.com. -> test.baidu.com 流程: 先找本地 DNS“,也叫 Local DNS,简称 LDNS。个别是指你电脑上网时IPv4或者IPv6设置中填写的那个DNS。这个有可能是手工指定的或者是DHCP主动调配的。如果你的电脑是直连运营商网络,个别默认设置状况下DNS为DHCP调配到的运营商的服务器地址。如果你的电脑和运营商之间还加了无线或者有线路由,那极有可能路由器自身还内置了一个DNS转发器,这玩意的作用是将发往他所有的DNS申请转发到下层DNS。此时因为路由器自身也接管了下挂电脑的DHCP服务,所以它调配给上面电脑的DNS地址就是它本身,所以你能看到电脑的DNS调配到的可能是192.168.1.1。实际上就是路由器本身,而路由器的DNS转发器将申请转发到下层ISP的DNS。所以这里说DNS是局域网或者是运营商的都能够如果LDNS没有缓存记录,它将会一步步向前面的服务器做申请,而后将所有数据进行汇总后交给最终的客户,这个环节术语叫”递归“。递归过程中,有个名词叫权威服务器, 是非凡的DNS服务器,所谓的权威是针对特定域名来说的。所以个别会说某某域名的权威DNS是谁,不能单纯的抛离域名问权威DNS是谁。是域名商在治理,负责解析在他这里购买的域名的权威解析, 一般而言, 就是指购买域名的中央,比方新网,万网(被阿里收买) 就是在这里能够配置你的域名,是指向一个ip(A记录),还是指向cdn地址(CNAME)六、接入CDN之后的DNS流程? ...

February 25, 2021 · 1 min · jiezi

关于dns:使用dockerbind搭建DNS服务器

应用docker-bind搭建公有的DNS服务器,在整个内网集群中应用域名来治理服务器曾经进行服务配置以下阐明是基于Ubuntu20.04的,如果要构建在树莓派上运行的docker镜像,参考文章配置与装置本机DNS配置sudo nano /etc/systemd/resolved.conf# 更改为以下内容# 假如docker-bind所在服务器IP地址为192.168.3.37[Resolve]DNS=192.168.3.37#FallbackDNS=#Domains=#LLMNR=no#MulticastDNS=no#DNSSEC=no#DNSOverTLS=no#Cache=noDNSStubListener=no#ReadEtcHosts=yessudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf参考 怎么开释systemd-resoved应用的53端口配置后,此时/etc/resolv.conf的内容为 # This file is managed by man:systemd-resolved(8). Do not edit.## This is a dynamic resolv.conf file for connecting local clients directly to# all known uplink DNS servers. This file lists all configured search domains.## Third party programs must not access this file directly, but only through the# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,# replace this symlink by a static file or a different symlink.## See man:systemd-resolved.service(8) for details about the supported modes of# operation for /etc/resolv.conf.nameserver 192.168.3.37nameserver 192.168.3.1第一个是咱们指定的bind构建的dns服务器第二个是本地的子网的网管的dns服务器留神先后顺序不能更改,如果内容并非如此的话,能够删除/etc/resolv.conf并从新执行sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf如果并没有/run/systemd/resolve/resolv.conf文件,阐明执行了systemctl disable systemd-resolved或service systemd-resolved stop,因而执行systemctl enable systemd-resolved和service systemd-resolved start并重启即可docker-bind装置选定集群中用作搭建DNS服务器的服务器执行下列命令 ...

February 24, 2021 · 3 min · jiezi

关于dns:实现简单的httpDNS的一种思路

互联网公司,根本都有针对DNS域名解析的优化解决。有些公司甚至会构建本人的智能 DNS 解析零碎,来解决 LocalDNS 存在的一系列问题,如域名劫持、调用精度和实时性等。 现如今,HttpDNS 曾经成为一种比拟罕用优化计划之一。HttpDNS 是基于 http 协定具备 DNS 域名解析能力的一种服务,当初各大云厂商都曾经构建了本人的 HttpDNS 服务。如阿里云 HttpDNS、腾讯云 HttpDNS等。 HttpDNS 原理剖析HttpDNS 的原理非常简单: 客户端拜访 HttpDNS 解析接口,HttpDNS 依据客户端 IP,从业务提前在域名配置管理系统中配置好的 IP 中依据肯定的策略抉择最优 IP 返回。若没有,则返回原域名,走运营商 LocalDNS 解析域名的形式;客户端再向获取到的 IP 发送业务协定申请即可。以 Http 申请为例,通过在 header 中指定 host 字段,向该 IP 发送规范的 Http 申请即可。HttpDNS 将域名解析过程显式的体现了进去。绕过 LocalDNS 的域名递归解析过程,这样就间接防止了 LocalDNS 的一系列问题。 通过 HttpDNS 原理,能够看出 HttpDNS 须要高度的可用,很容易成为整个零碎的瓶颈。除此之外,还须要一个高效的域名解析配置管理系统来做域名解析和选优策略的治理。 HttpDNS 的一种简略实现思路上面咱们来探讨另一种简略的实现形式,利用本人可控的 DNS 零碎和 dig 命令来实现简略 HttpsDNS 服务。 思路如下: 1、将域名和 ip 的配置在公司自建 DNS 或第三方的 DNS 系统配置好,可实现地区或运营商的动静调用。2、开发 http api 服务,用来提供域名查问服务接口。3、在 http api 服务接口业务逻辑中,拿到客户端的 IP,通过如下命令查问域名的解析 IP,返回该 IP 即可。dig @ns服务器 www.baidu.com +subnet=客户端ip该形式利用了 DNS 零碎的动静调度性能和域名 IP 的治理性能,联合 Http api 服务提供 Http 协定的 DNS 解析能力。绕过了 LocalDNS 的递归查问,解决了 DNS 劫持问题和精度问题。 ...

February 18, 2021 · 1 min · jiezi

关于dns:SwitchHosts-还能这样管理hosts后悔没早点用上

明天介绍一款治理hosts文件的利器:SwitchHosts!。 在此之前,咱们批改hosts须要经验以下几个步骤: 找到hosts文件从一长串内容里查找批改我的项目有权限问题还需复制替换文件当你的工作重大依赖hosts,或者须要分类管理时,值得体验下SwitchHosts!。 这也是我在B站才接触到的软件,在此举荐给大家。 它有以下几个特点: 跨平台反对语法高亮显示反对分类组合反对近程hosts零碎菜单栏疾速切换导入导出Alfred workflow(macOS)“反对近程hosts”意味着能够批量治理电脑hosts,在电脑上配置好刷新工夫后即可和远端同步。官网地址:https://oldj.github.io/Switch... 软件基于 React、Ant Design 以及 CodeMirror 等框架/库,感兴趣的同学能够观摩下。 装置GitHub下载GitHub Release 从GitHub下载可能会比较慢,关注公众号后回复「hosts」即可获取镜像下载地址。 也能够自行批改地址,把GitHub Release获取到的链接中github.com替换为download.fastgit.org。 # Release# 假如下载链接为https://github.com/A/A/releases/download/1.0/1.0.tar.gzwget https://download.fastgit.org/A/A/releases/download/1.0/1.0.tar.gzHomebrew装置brew install --cask switchhostsHomebrew装置教程能够拜访:https://brew.idayer.com/ 也能够浏览我之前的文章: 文章卡片 scoop在Windows上除了能够下载安装包,你还能够应用scoop 装置SwitchHosts!: scoop install switchhosts对于 hosts 未失效问题因为零碎和浏览器都会对DNS进行缓存,有时候不是立刻看到成果,正确的操作每次设置完先清空缓存。 Chrome缓存地址栏拜访chrome://net-internals/#dns,点击Clear host cache。 macOS关上终端执行: sudo killall -HUP mDNSResponderWindows按下快捷键Window + R关上运行窗口,而后键入cmd关上命令行执行命令: ipconfig /flushdns自定义命令SwitchHosts!还反对保留后执行自定义命令的性能,点击右边栏 ???? => 设置 => 自定义命令即可找到。 Windows命令不须要管理员权限,所以间接粘贴ipconfig /flushdns内容即可。 macOS的刷新命令是须要管理员权限,间接配置下面的命令是不行的,要这样写: echo 123456 | sudo -S killall -HUP mDNSResponder替换123456为你电脑登陆密码. 然而留神:整个命令包含明码会被明文存储,很不平安,不倡议这样做,如果你要这样用,请想好可能带来的影响。 文章首发: SwitchHosts! 还能这样治理hosts,悔恨没早点用上 关注公众号:湖中剑,找到更多对于我的内容。 ...

February 1, 2021 · 1 min · jiezi

关于SegmentFault:开源服务器被曝-7-大漏洞黑客可发起-DNS-缓存中毒攻击并远程执行恶意代码

网络安全钻研人员在 Dnsmasq 发现了 7 个破绽,这是一个风行的开源软件服务器,用于缓存域名零碎(DNS)响应。 这 7 个破绽被以色列钻研公司 JSOF 统称为“ DNSpooq”,与之前披露的 DNS 架构的弱点相响应,使得 Dnsmasq 服务器无奈抵挡一系列攻打。歹意攻击者能够发动 DNS 缓存中毒攻打并近程执行恶意代码。 钻研人员在明天发表的一份报告中指出: “咱们发现,Dnsmasq 很容易受到偏离门路攻击者(也就是没有察看到 DNS 转发器与 DNS 服务器之间通信的攻击者)的 DNS 缓存中毒攻打。” 因为这 7 个破绽,攻击者能够在几秒钟到几分钟的工夫内同时攻打多个域名,而且没有任何非凡操作。此外,平安钻研人员还发现,Dnsmasq 的许多实例被谬误地配置为侦听 WAN 接口,黑客能够间接发动网络攻击。 Dnsmasq 是 DNS 假装的缩写,是一个轻量级软件,具备 DNS 转发性能,用于本地缓存 DNS 记录,从而缩小了上游名称服务器的负载,进步了性能。 JSOF发现,截至 2020 年 9 月,大概有 100 万个 Dnsmasq 破绽实例,该软件蕴含在 Android 智能手机中,以及数百万个来自 Cisco、Aruba、Technicolor、Redhat、Siemens、Ubiquiti 和 Comcast 的路由器和其余网络设备。 再论 Kaminsky 攻打和 SAD DNSDNS 缓存中毒的概念并不陈腐,2008年,平安研究员 Dan Kaminsky 提出了他的发现,该发现是一个宽泛而要害的 DNS 破绽,攻击者能够利用该破绽对大多数域名服务器发动缓存中毒攻打。 它利用了 DNS 的一个根本设计缺点(可能只有65,536个可能的交易 ID“TXID”),向 DNS 服务器发送大量伪造的响应,而后将其缓存起来,并利用这些响应将用户引向欺诈网站。 ...

January 20, 2021 · 1 min · jiezi

关于dns:前端面试每日-31-第627天

明天的知识点 (2021.01.02) —— 第627天 (我也要出题)[html] 挪动端布局的自适应如何做?[css] Less的原理是什么?[js] 在非函数内写return语句,会有什么问题?[软技能] 说说你对DNS劫持的了解《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

January 2, 2021 · 1 min · jiezi

关于dns:网关路由DNS详细解释

网关(Gateway)又称网间连接器、协定转换器。网关在网络层以上实现网络互连,是最简单的网络互连设施,仅用于两个高层协定不同的网络互连。网关既能够用于广域网互连,也能够用于局域网互连。针对一般客户来说,网关就是运营商的交换机端口地址,也就是家庭网络将外联的数据包发送的目的地。 DNS(Domain Name System,域名零碎),因特网上作为域名和IP地址互相映射的一个分布式数据库,可能使用户更不便的拜访互联网,而不必去记住可能被机器间接读取的IP数串。通过主机名,最终失去该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协定运行在UDP协定之上,应用端口号53。 什么是网关,路由,dns?计算机主机网关的作用是什么?(援用比喻) 假如你的名字叫小不点,你住在一个大院子里,你的街坊有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只有你在院子里大喊一声他的名字,他听到了就会回应你,并且跑进去跟你玩。然而你不被容许走出大门,你想与外界产生的所有分割,都必须由门口的李大爷(网关)用电话帮忙你分割。如果你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。然而你不晓得小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话,有了上面的对话: 小不点:李大爷,我想找班主任查一下小明的电话号码行吗? 李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问分明了小明的电话)问到了,他家的号码是211.99.99.99 小不点:太好了!李大爷,我想找小明,你再帮我分割一下小明吧。 李大爷:没问题。(接着李大爷向电话局收回了申请接通小明家电话的申请,最初一关当然是被转接到了小明家那个院子的王大爷那里,而后王大爷把电话给转到小明家)就这样你和小明获得了分割。 至于DHCP服务器嘛,能够这样比喻: 你家院子里的居民越来越多了,传达室李大爷那里的电话交换机曾经不能满足这么多居民的需要了,所以只好采纳了一种新技术叫做DHCP,居民们开机的时候随机失去一个电话号码,每一次失去的号码都可能会不同。 你家门口的李大爷:就是你的网关 你的班主任:就是你的DNS服务器 传达室的电话交换机:就是你的DHCP服务器 同上,李大爷和王大爷之间的对话就叫做路由。 另:如果还有个小朋友叫做小暗,他住的院子看门的是孙大爷,因为小暗的院子刚盖好,孙大爷刚来不久,他没有李大爷和王大爷办公室的电话(李大爷和王大爷当然也没有他的电话),这时会有两种状况: 1、居委会的赵大妈通知了孙大爷对于李、王两位大爷的电话(同时赵大妈也通知了李、王对于孙的电话),这就叫动态设定路由 2、赵大妈病了,孙大爷本人到处打电话,见人就说:“我是小暗他们院子管电话的”,后果被李、王二位听到了,就记在了他们的通讯录上,而后李、王就给孙大爷回了个电话说:“我是小明(小不点)他们院子管电话的”,这就叫动静设定路由 而后有一天小不点要找小暗,后果天然是小不点给李大爷打电话说:“大爷,我找小暗”(这里省略了李大爷去查小暗电话的过程,假如他晓得小暗的电话),李大爷一找通讯录:“哦,小暗的院子的电话是孙大爷管着的,要找小暗天然先要告诉孙大爷,我能够告诉王大爷让他去找孙大爷,也能够本人间接找孙,那当然是本人间接找孙不便了”,于是李大爷给孙大爷打了电话,而后孙大爷又把电话转到了小暗家。 这里李大爷的通讯录叫做路由表。 李大爷抉择是本人间接找孙大爷还是让王大爷帮忙转接叫做路由抉择。 李大爷之所以抉择间接找孙大爷是有根据的,因为他间接找孙大爷就能一步到位,如果要王大爷转接就须要两步能力实现,这里的“步”叫做“跳数”,李大爷的抉择遵循的是起码步骤(跳数)准则(如果他不恪守这个准则,小不点可能就会多等些工夫能力找到小暗,最终后果可能导致李大爷因工作不力被炒鱿鱼,这叫做“延时太长,选路准则不合理,换了一个路由器”) 当然,事件总是变动的,小不点和小明吵架了,这些天小不点老是给小暗打电话,小明心里想:“操,他是不是在说我好话啊?”于是小明决定偷听小不点和小暗的通话,然而他又不能出院子,怎么办呢?小明做了这样一个决定: 首先他通知本人院里管电话的王大爷说:“你给李大爷打个电话说小暗搬到咱们院子了,当前但凡打给他的电话我来接”,王大爷没反映过去(毕竟年纪大了啊!)就给李大爷打了电话,说:“当初我来治理小暗的电话了,孙曾经不论了”,后果李大爷就把他的通讯录改了,这叫做路由坑骗。 当前小不点再找小暗,李大爷就转给王大爷了(其实应该转给孙大爷的),王大爷收到了这个电话就转给了小明(因为他之前曾经和小明说好了),小明收到这个电话就伪装小暗和小不点通信。因为小明作贼心虚,胆怯今天小不点和小暗见面后当面问他,于是通信断了之后,又本人以小不点的名义给小暗通了个电话复述了一遍方才的话,有这就叫数据窃听。 再起初,小不点还是一直的和小暗分割,而脱落了小明,小明心里嘀咕啊:“我不能总是这样以小暗的身份和小不点通话啊,外一有一天露馅了怎么办!”于是他想了一个更阴险的招数:“罗唆我也不偷听你们的电话了,你小不点不是不给我打电话吗!那我让你也给小暗打不了,哼哼!”,他怎么做的呢?咱们来看: 他分割了一批酒肉朋友,和他们串通好,每天固定一个工夫大家一起给小暗院子传达室打电话,内容什么都有,只有传达室的孙爷爷接电话,就会听到“打雷啦,下雨收衣服啊!”、“人是人他妈生的,妖是妖他妈生的”、“你妈贵姓”等等,听的脑袋都大了,不听又不行,电话不停的响啊!终于有一天,孙爷爷忍不住了,大喊一声:“我受不了拉!!!!”,于是上吊自杀了! 这就是最简略的DDOS攻打,孙爷爷心理承受能力弱的景象叫做“数据报解决模块有BUG”,孙爷爷的他杀叫做“路由器瘫痪”。如果是我,就会微笑着和他们拉家常,例如通知他们“我早就听了天气预报,衣服10分钟前曾经收好了”或者“那你妈是人还是妖”或者“和你奶奶一个姓”等等,我这种健全的心理叫做“强壮的数据报解决,可能抵挡任何攻打” 孙爷爷瘫了之后,小不点终于不再给小暗打电话了,因为无论他怎么打对方都是忙音,这种景象叫做“拒绝服务”,所以小明的做法还有一个名字叫做“拒绝服务攻打”。 小明终于宁静了几天,… 几天后,小明的院子来了一个漂亮的女孩,名字叫做小丽,小明很喜爱她(小小年纪玩什么早恋!)可是小丽有个很帅的男朋友,小明干瞪眼没方法。当然这里还是要遵循下面的准则:小丽是不能出院子的。那个男的想泡小丽天然只能打电话,于是小明又蠢蠢欲动了: 还记得王爷爷是院子的电话总管吗?他之所以能治理电话是因为他有一个通讯录,因为同一个院子可能有2个孩子都叫小明,靠名字无奈辨别,所以通讯录上每一行只有两项: 门牌 电话 一号门 1234567 (这个是小明的) 二号门 7654321 (这个是小丽的) …… 王爷爷忘性不好,但这总不会错了吧(同一个院子不会有2个“二号门”吧)?每次打电话人家都要说出要找的电话号码,而后通过通讯录去院子外面敲门,比方人家说我找“1234567”,于是王爷爷一比拟,哦,是一号门的,他就去敲一号门“听电话”,如果是找“7654321”,那他就找二号门“听电话”。 这里的电话号码就是传说中的“IP地址” 这里的门牌号就是传说中的网卡的’MAC‘地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的) 小明心里想“奶奶的,老子泡不到你也别想泡”,于是他打起了王爷爷通讯录的主见,通过仔细的察看,周密的筹备,他终于发现王爷爷有尿频的故障(毕竟是老人啊…),终于在一个月黑风高的白天,王爷爷去上厕所了,小明偷偷的摸进传达室,小心翼翼的改了王爷爷的通讯录…… 过了几天,小丽的男朋友又给小丽打来了电话,对方报的电话是“7654321”,王爷爷一看通讯录,靠: 门牌 电话 一号门 1234567 (这个是小明的) 一号门 7654321 (留神:这个原来是小丽的,然而被小明改了) …… 王爷爷不晓得改了啊,于是就去找一号门的小明了,小明心里这个美啊,他以小丽父亲的口气严格的教训了那个男的和小丽之间不正当的男女关系,后果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事件的产生… 这里小明的行为叫做“ARP坑骗”(因为在理论的网络上是通过发送ARP数据包来实现的,所以叫做“ARP坑骗”),王爷爷的通讯录叫做“ARP表” 这里要留神:王爷爷当初有两个通讯录了,一个是记录每个院子传达室电话的本本,叫做“路由表”,一个是当初说的记录院子外面详细信息的本本,叫做“ARP表”。 有句命言是“人们总是在谋求完满的,只管永远也做不到”(请记住这句话,因为这是一个小名人–也就是我,说的) 王爷爷的制度中有一条是这么写的“每个月要从新检查一下门牌号和电话的对应本(也就是ARP表)”,这个动作叫做“刷新ARP表”,每个月的工夫限度叫做 “刷新ARP表的周期”。这样小明为了让那个男的永远不能找到小丽,之后每个月都要偷偷改一次那个通讯录,不过这样也是不得不做的事啊! 补充一点,小明是很聪慧的,如果通讯录(ARP表)被改成了这样: 门牌(MAC) 电话(IP) ...

December 9, 2020 · 1 min · jiezi

关于dns:为什么使用谷歌的公共DNS-8888-反而会让你网速变慢

有一个内部单干商,有次问咱们,为什么咱们的接口会概率性超时?然而这个接口是供很多内部单干商应用的,其他人都未反馈这个问题,只有他们反馈了,所以感觉很奇怪。 前面我就让他们给我提供申请的参数,依据这些参数也没有搜寻到对应的申请记录,想想应该是申请并没有达到咱们的业务机,可能在公共接入一层,甚至都没到公共接入这一层,这一下子问题就不好查了。 起初就让他们抓包,把超时的申请的TCP都抓取下来。我用wireshark关上之后,看到超时都是TCP Retransmission 超时重传引起的,而后发现这些申请都跑到了咱们公司的香港机房去了,也难怪会超时,毕竟咱们的香港机房并没有对国内用户做优化。 而后我本人用curl把申请指向这个香港的服务器,而后用wireshark抓包,的确会时不时呈现超时重传的状况。至此能够确定引起超时的起因是因为申请到了香港机房。 于是就有两个纳闷了,为什么申请会到了香港机房?为什么会概率性呈现而不是必现? 起初对方的运维依据这个线索,终于意识到是因为他们服务器应用的DNS中有谷歌的公共DNS,从而导致了申请到了咱们的香港机房去了。 过后我就很纳闷,为什么配置了8.8.8.8会导致申请到了咱们的香港机房?顺着这个纳闷,我去找了好多文章,总算是大略搞明确了一点了。 归纳起来就是三个疑难: 为什么应用谷歌的DNS会导致申请到了咱们的海内机房是依据什么形式和策略让不同地区的人申请到不同的机房去的概率性呈现是因为DNS的抉择策略,那DNS的抉择策略是怎么样的?在咱们国内,因为多个网络运营商,还须要做到让电信的用户到电信机房,联通的用户到联通机房,挪动的用户到挪动机房,抉择运营商又是怎么做到的呢? 最初搜寻到了对于智能DNS的常识,大略如下: 实际上就是智能DNS是依据起源申请的IP地址,来判断所属地区和运营商,而后调配到离用户最近,且运营商统一的机房去。也就是我司这边的域名解析配置了一个智能的DNS,它会依据用户申请的起源IP把用户调配到最佳的机房节点去。 从DNS申请中是获取不到用户的起源IP地址的,只能通过用户所应用的DNS的IP地址,来判断用户所属的地区和运营商,而后调配到最佳的节点去。 不过谷歌也开发了一种DNS的扩大协定,EDNS Client Subnet, 能够在DNS申请中携带上用户的实在IP。然而这个要求用户应用的DNS服务反对这个协定,也要求我司应用的DNS服务反对这个协定,能力从中失去用户的实在IP,所以这个使用并不宽泛,国内绝大多少网站都是通过用户的DNS服务的IP来判断用户的地理位置和运营商的。 大多数人应用网络的时候,都默认应用运营商提供的DNS服务器,这些服务器一则与用户地理位置靠近,二则运营商也一样。所以依据DNS服务器的IP来判断用户的地理位置和运营商是可行的。 所以应用谷歌的DNS的时候,因为谷歌的8.8.8.8并没有在国内部署,因而都被我司的智能DNS断定为海内用户,而后指向到海内的机房去了。 而后这里就波及到另一个问题了,这些公共的DNS只有一个IP,难道寰球就只部署了一台吗?那114.114.114.114这个电信的公共DNS,为什么其余运营商的网络用起来也没什么问题呢? 实际上公共DNS的部署采取的是任播(Anycast)技术,确切的说是BGP 任播技术,多个主机应用同一个IP地址(该地址即这一组主机的共享单播地址)的一种技术,当发送方发送报文给这个共享单播地址时,报文会依据路由协定路由到这一组主机中离发送方最近的一台。相似于下图: 不同地区的用户拜访这个公共DNS的时候,理论拜访的服务器是不一样的。另外,作为任播的IP,是只能被动接管申请,而不能被动发动申请的,毕竟被动发动的话,接管方的回复是不晓得返回给哪一台服务器好的。 新的问题就来了,比方114.114.114.114是电信的公共DNS,如果一个挪动的用户应用这个DNS,智能DNS是如何分辨出这个用户是挪动的而不是电信的呢?就如下面所说的,任播的IP是不能被动发动申请的,公共DNS的服务器为了可能被动发动申请,他们自身还必须配置另一个单播IP,被动发动的申请都应用这个IP。这样子的话,智能DNS就可能分辨运营商了。 另外,对于多个DNS服务器的抉择策略,目前采取的是平滑往返工夫,即SRTT策略。 第一次所有DNS服务器都会随机给一个初始值,而后取最小的那个发动查问申请,依据本次的申请工夫,把以后这个DNS的SRTT做一个重算,而后其余的DNS也要有一定量的衰减。 第二次又抉择最小SRTT发动申请,如此循环,大概半小时重置一次,从新随机调配一个初始值。 所以谷歌的公共DNS因为SRTT比拟大,导致它被抉择的概率是比拟小的,也就导致了友商呈现申请超时的次数并不是特地多

August 25, 2020 · 1 min · jiezi

关于dns:深入理解DNS解析过程

要想深刻了解DNS解析的过程,咱们须要晓得一些底层的货色和一些周边的常识,本篇文章会围绕这些来构建。名词解释前置常识DNS域名零碎DNS(Domain Name System)是因特网应用的命名零碎,用来把便于人们应用的机器名字转换为IP地址。DNS属于应用层协定,是基于UDP协定的。 hosts文件hosts文件是ARPANET时代的解决方案,那时候只有数百台计算机,一个hosts就能满足需要。 域名(Domain)mail.ccav.com---- ---- ----三级域名 二级域名 顶级域名域名的层级是依照下面这么划分的,每级域名长度不超过63个字符,不辨别大小写,只能应用数字字母和-。一个残缺的域名不超过255个字符。 域名服务器划分理解域名服务器划分之后,就会对DNS解析的过程大略有些理解。域名服务器依照层级分为: 本地域名服务器本地域名服务器相当于一个班主任,你有点啥事都找他。当一个主机收回DNS查问的时候,这个查问的申请就会发送到本地域名服务器。 根域名服务器根域名服务器是最高档次的域名服务,是校长,只负责布局大方向。他晓得所有顶级域名服务器的域名和IP地址。不论那个本地域名服务器若本人不能不能解析,那首先申请的就是根域名服务器。根域名服务器不会把待查问的域名间接转换成IP,而是通知本地域名服务器下一步应该找哪一个顶级域名服务器进行查问。 顶级域名服务器顶级域名服务器是负责各个方向的副校长,有负责平安的,有负责教学的。他负责管理该顶级域名下的所有二级域名,当收到DNS查问申请后就会给出响应的应答,可能是最终的后果,也可能是下一步应该找到的域名服务器的IP地址。 权限域名服务器权限域名服务器就是负责一个区的域名服务器,是基层干活的,比方宿管,各科老师,他负责一个更小的区域。当一个权限服务还不能给出最初的答复时,就会通知查问申请的DNS客户,下一步应该找哪个权限域名服务器。 域名查问的两种形式这里只是艰深的讲两种查问的形式,对于如何更好的了解并记住这种两种形式,能够看这篇文章《怎么更好的了解DNS的迭代查问与递归查问》递归查问递归查问,就是你找我要一个域名的IP地址,然而我不晓得,那我去帮你去向晓得的人问这个IP地址。举个例子就是,你问你班主任怎么做番茄炒鸡蛋,你班主任不晓得,然而你班主任去问了食堂厨师,而后通知你。这就叫递归查问。从host到本地域名服务器个别是用的递归查问。 迭代查问迭代查问就是,你找我要一个域名的IP地址,我也不晓得这个IP地址,然而我晓得谁晓得,我通知你去找谁问。举个例子就是,你们班主任到了食堂轻易拉了集体问怎么做番茄炒鸡蛋,那个人说,我只是个卖饭的,我不晓得,然而我晓得A君是在后厨的,你能够去问A君。而后你班主任就去问A君了。呐,这就叫迭代查问。从本地域名服务器到根域名服务器个别是用的迭代查问。 行了,该晓得的储备常识咱们晓得的差不多了,接下来就看看要害的流程吧。 DNS查问步骤假如一台主机想晓得y.abc.com这个域名的IP地址,那么整个的查问过程如下: 主机先向其本地域名服务器进行递归查问本地域名服务器采纳迭代的查问,它先向根域名服务器查问根域名服务器通知本地域名服务器,下一次应该查问的顶级域名服务器的IP地址。本地域名服务器向顶级域名服务器发动查问。顶级域名服务器通知本地域名服务器,下一次应查问的权限域名服务器IP地址本地域名服务器向权限域名服务器发动查问。权限域名服务器通知本地域名服务器所查问的IP地址。本地域名服务器把查问后果通知主机给这个过程做个图示,就是这样的 整个的DNS查问过程就是这样的。联合后面的一些前置常识,你会感觉整个过程更简略。

August 20, 2020 · 1 min · jiezi

关于DNS解析

这篇文章在说什么1、域名的结构2、DNS解析流程 前奏在进入正题之前可以先适当的引入IP概念,以便下面的流畅阅读。 1、[什么是IP地址?](https://segmentfault.com/a/1190000022864573)IP地址相当于网络中的身份唯一认证ID正题 DNS:(Domain Name System)域名解析系统域名解析系统,听着还挺费解的,我们知道当我们浏览器输入网址的时候,输入的是一串域名,例如:www.google.com,但是我们在委托我们的操作系统发送消息时,却不是靠域名来找到对应的服务器,靠的的IP地址(这是TCP/IP协议的要求)。这个时候,所需要做的就是通过域名解析,来拿到我们的IP地址。域名的结构域名可以通过.拆分成几个部分,从右到左依次是:顶级域名、二级域名、三级域名... DNS解析流程所以当我们输入网址,去请求资源的话,那它又是如何办到的呢? 简单来说:DNS解析过程属于应用层协议(不知道应用层也不影响解析流程),当我们生成http报文之后,就会在查找浏览器/host/本地/网关/本地DNS服务器/IPS/根域名服务器等中是否有DNS缓存,如果有的话,优先取缓存数据,否则,会通过主机上运行的DNS客户端(我们的计算机上会有相应的DNS客户端,又称DNS解析器)向DNS服务器发送查询报文,DNS服务器再根据查询消息返回响应内容。 查询报文域名、类型(表示域名对应什么类型的记录,类型为MX时,表示域名对应的是邮件服务器,类型为A时,对应的IP地址)、以及Class(Class的值用来识别网络信息,现在互联网没有其他网络,所以永远是IN)。DNS服务器会根据查询消息来查询对应的消息记录。邮件查询邮件的记录类型是MX,又称为邮件交换记录。它是通过邮件地址的”@“符号后面的域名,得到对应的邮件服务器。DNS服务器会返回邮件服务器的域名和优先级。(邮件地址有可能对应多个邮件服务器,需要根据优先级来判断哪个服务器优先查询。数值越小越优先。)因为最终也需要得到邮件服务器的IP地址,所以拿到邮件的服务器域名后最终又会解析成IP地址返回客户端。 演示光说没用,我们可以来演示一波,当我们查询www.google.com时: DNS客户端的请求报文 ;; QUESTION SECTION:;www.google.com.            IN    ADNS服务器返回的查询结果只有1个A记录代表,只有一个IP地址。221是缓存时间,代表221s内不用重新查询。 ;; ANSWER SECTION:www.google.com.        221    IN    A    8.7.198.45NS记录即域名服务器记录(Name Server),用来指定该域名由那个DNS域名服务器解析。 ;; AUTHORITY SECTION:google.com.        51    IN    NS    ns4.google.com.google.com.        51    IN    NS    ns3.google.com.google.com.        51    IN    NS    ns1.google.com.google.com.        51    IN    NS    ns2.google.com.DNS域名服务器的IP地址 ;; ADDITIONAL SECTION:ns1.google.com.        266    IN    A    216.239.32.10ns1.google.com.        197    IN    AAAA    2001:4860:4802:32::ans2.google.com.        280    IN    A    216.239.34.10ns2.google.com.        197    IN    AAAA    2001:4860:4802:34::ans3.google.com.        55    IN    A    216.239.36.10ns3.google.com.        104    IN    AAAA    2001:4860:4802:36::ans4.google.com.        299    IN    A    216.239.38.10ns4.google.com.        92    IN    AAAA    2001:4860:4802:38::a邮件的DNS查询可以看到DNS服务器返回了五个服务器域名以及优先级。 记录类型还有很多种想了解的可以 => 记录类型 当浏览器发起请求直接上图吧~说太多都没有用~ 当我们的浏览器发起http请求时,首先会先查询浏览器是否有DNS缓存浏览器没有缓存,则会找到计算机的本地hosts文件,是否存在映射关系。hosts文件地址Mac:/etc/hostsWindows 7: C:\\**Windows**\\System32\\drivers\\etc我们可以看到,下图中有域名对应着IP就相当于告诉计算机,如果我访问这个域名,那你就去这个ip地址找资源吧~ 如果hosts文件不存在映射关系,那么会去找DNS的本地缓存。本地没有缓存的话,则会通过我们本地设置的DNS服务器地址,去找本地DNS服务器要资源。一般来说本地DNS服务器都会有一份缓存,如果有的话,就直接将缓存的内容传回去,没有的话,那么它就会去找根服务器。说到这里,那我们停一下,现在是不是有两个疑问1、究竟什么是本地服务器呢?2、如果本地有缓存又要怎么办?留着最后回答~我们先来解释图中本地DNS服务器与DNS服务器之间的关系,以及什么是根服务器。DNS服务器之间的联系DNS服务器相互之间的联系是:管理下一级域名的服务器会将自己注册到管理上级域名的DNS服务器上。所以,当我们从根域名服务器一层层往下找,就可以找到当前域名所在的DNS服务器了。 什么是根域名服务器前面说了域名的结构,但是在我们的互联网中,还有一个不为人知的地方,叫做根域。它处于一级域名(顶级域名)的上方,根域没有自己的名字(不配有姓名),我们在输入域名时经常省略了它。它是一个点,是的,就是一点”.”,如果要表明根域,那么域名就会写成这样:”www.youzan.com.”没在域名的最后加一个句号。一般都不会写句号。根域名服务器管理的不是所有的域名,而是管理一级域名的服务器所在地址,比如管理着com域名服务器的地址。很多资料上说,全世界IPv4根域名服务器只有13台。13台根域名服务器的名字是从A-M。1个主根服务器在美国,其余为12个辅根服务器,美国(9),英国(1),瑞典(1),日本(1)。有人是不是想问为什么中国没有?嗯,就是没有。(因为互联网起源于美国,一开始只有美国有互联网,大部分在美国无可厚非。)但是中国有IPv4镜像根服务器。编号相同的镜像根服务器使用同一个IP。所以,其实上面的说法是不精准的,根域名服务器其实有很多台,但是服务器的IP地址只有13个。题外话:IPv6根服务器中国有4个,一个主根,三个辅根。 主根和辅根的区别:主根和辅根的数据是一致的,当有新的域名出现时,会先更新到主根服务器,再复制到辅根服务器。 镜像服务器:相当于镜子里的你,除了不是真正的你,也具有你的特征。就像你的桌面图标生成一个快捷方式的图标一样。 现在我们了解了DNS服务器之间的联系,那么我们回到流程图中: 本地DNS服务器先是去根服务器找域名的ip,根域名服务器没有,给了他com域名服务器的ip。但是com域名服务器也不知道www.test.com的ip,但是知道test.com在哪台域名服务器上。最终,找到了www.test.comQA环节1、究竟什么是本地服务器呢?当我们打开网络配置的时候,会看到有一个DNS IP地址,这个IP地址则是我们指向的本地DNS服务器地址。不同的操作系统设置方式不一样,DNS服务器的地址可以是提前设置好的也可以是自动分配的,MacOS的长这样: 在我们非手动设置的情况下:如果我们的网络是直连的运营商网络,一般而言那我们的本地DNS则是ISP运营商IP地址。如果我们设置了转发(使用了路由器),那我们的地址极有可能是192.168.1.1(如上图),路由器本身,我们的路由器会将请求转发到上层DNS,也就是ISP运营商DNS服务器。2、如果本地有缓存又要怎么办?所以以后如果页面打不开了,可以先清除浏览器或者电脑的DNS缓存试试,看是否是因为本地的缓存导致域名解析错误。 清除DNS缓存:Mac(10.13.6): sudo dscacheutil -flushcacheWindow: ipconfig /flushdns谷歌浏览器:chrome://net-internals/#events.3、为什么服务器的IP地址只有13个? 因为DNS查询用的是UDP,而不是TCP。UDP 实现中能保证正常工作的最大包是 512 字节,所以只能13个根服务器地址。想要了解更多,请进入[传送门](https://jaminzhang.github.io/dns/The-Reason-of-There-Is-Only-13-DNS-Root-Servers/)4、IPv4与IPv6的区别 IPv4:由32位二进制数组成IPv6:可由128位二进制组成[详文可阅读](https://zhuanlan.zhihu.com/p/50747832)5、为什么需要域名解析,而不直接是IP? 1、域名好记,给你ip,你可以记几个ip地址哇2、不同域名可以对应同一个IP3、服务器IP变了咋办4、TCP/IP协议的需要参考资料:《网络是怎么连接的》

June 26, 2020 · 1 min · jiezi

DNS攻击防范科普系列3-如何保障-DNS-操作安全

引言前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操作相关的安全风险和防范措施。 账号安全在平台上管理域名解析,就需要登陆,进行权限的认证。但域名在企业中可能会有多人需要操作,比如购买和续费、解析的操作管理,更有可能会将某些业务外包而要合作伙伴来操作域名。而我们知道,多个共用一个账号和密码是一种有很大安全风险的管理方式。在现在的复杂场景下,就需要有一个灵活的权限管理系统。 阿里云支持主账号外,可以通过访问控制(Resource Access Management,RAM)来统一管理用户身份与资源访问权限,以及 阿里云临时安全令牌(Security Token Service,STS)来时行临时授权。 使用RAM,您可以创建、管理RAM用户(例如员工、系统或应用程序),并可以控制这些RAM用户对资源的操作权限。当您的企业存在多用户协同操作资源时,使用RAM可以让您避免与其他用户共享云账号密钥,按需为用户分配最小权限,从而降低企业信息安全风险。RAM是一种永久授权(当然也可以删除相应的权限),而如果要一定时间内给某个用户授权,如授权合作伙伴公司管理域名,就可以使用 STS 的方式来授权。通过STS服务,您所授权的身份主体(RAM用户、RAM用户组或RAM角色)可以获取一个自定义时效和访问权限的临时访问令牌。STS令牌持有者可以访问阿里云资源。 同时,对上述的账号,还可以开启多因素认证(Multi-factor authentication,MFA),为您的账号提供更高的安全保护。更多有关账号的访问控制的说明,可查看 访问控制帮助文档。 业务安全对于域名的业务安全,首先要找使用有技术实力、有责任心、沟通便捷的服务商来提供域名解析的服务。历史上发生过多起被黑客通过技术破解、社会学攻击等篡改域名的DNS或其它信息,导致域名被劫持的问题。同时,如果国内用户的域名使用的国外的服务商的解析服务,出现问题时沟通不畅再加上时差的问题,会使问题更加难以处理。从用户自身来讲,还是要选择一下靠谱的域名解析服务商。 在自己的域名管理上,也要提前做好操作的规划、步骤和风险评估。尤其是迁移域名服务商、修改主域名的 NS时(如将解析从其它注册商转移到阿里云),需要先在要迁移的解析服务提供商把解析添加完全、正确,并进行相应的测试,再去注册商处修改域名的NS,且修改后要在原解析服务提供商处的解析服务保留至少48小时。因主域名 NS 记录的缓存时间较长,在完全生效前,会有部分请求到旧的提供商处进行查询,如果在旧的解析提供商处的解析不完整,或不正确,就会使域名的访问受到影响,网站打不开、邮箱收不到信等。 在普通解析记录做变更时,自己的新旧地址也要做好平滑的迁移。在变更解析前将解析的 TTL (解析记录的缓存时间) 适当减少,在变更解析记录时,等旧的地址上没有应用流量时再关闭应用。 数据安全数据安全一般是指数据的保密性、完整性和可用性。保密性需要由平台和用户共担,用户不对外泄露数据,平台做好权限控制和审核,只开放给必要的系统使用,并做到可审核可追踪。对提供给域名解析服务商的数据,由平台来进行数据的完整性和保密性。阿里云依托强大的基础设施,以保证数据在多台存有备案,并进行相关的加密和审记管理,保证数据的安全。 以上简单介绍了域名在业务管理时的常见风险和防范措施,域名安全需要用户在管理上多加注意,同时也是域名解析服务提供商不可推荐的责任。除了业务安全外,域名在使用中还会遇到其它的问题,比如被缓存投毒、被劫持等。下一期我们重点介绍一下DNS缓存投毒的原理和怎么处理。 本文作者:kimi_nyn 原文链接 本文为云栖社区原创内容,未经允许不得转载。

October 16, 2019 · 1 min · jiezi

阿里云-EMAS-HTTPDNS-联合函数计算重磅推出-SDNS-服务三大能力获得突破

1. 什么是 HTTPDNS ?传统的 DNS(Domain Name System)使开发者常面临着域名劫持、调度不精准的问题。 HTTPDNS 使用 HTTP 协议替换常用的 UDP 协议,完成客户端和递归 DNS 之间的域名解析过程,使得 HTTPDNS 服务器自身可以充当递归 DNS ,这样域名解析请求直接发送到阿里云的 HTTPDNS 服务器,可以绕过Local DNS运营商 ,避免由于 Local DNS 造成的域名劫持和调度不精准问题。产品原理如下图所示: 2.SDNS 软件定义解析虽然,HTTPDNS 在域名劫持和调度上,相对传统 DNS 已经有了质的飞跃,但是还存在如下不足:(1)【权威 DNS 存在不足】传统权威 DNS 的功能非常有限,且不同供应商提供的能力参差不齐,有优化空间;(2)【无法优化结果】HTTPDNS 充当递归DNS的功能时,无法改变权威 DNS 解析的结果;(3)【缺乏管理】客户域名解析缺乏集中管理,大型客户的域名解析往往分布在多个 DNS 供应商。 而 SDNS 不仅可以帮助开发者进一步优化调度质量,而且可以结合函数计算等能力,扩展 HTTPDNS 的服务边界,提供了用户自定义的处理逻辑,让业务更加方便灵活。 2.1 什么是 SDNS ? SDNS(Software-Defined Name System,简称SDNS)即软件定义解析,是在 HTTPDNS 的基础上,创造性的引入了自定义解析功能。其主要特性有:(1)支持客户端自定义参数输入;(2)HTTPDNS 服务器端结合自定义函数处理能力,支持客户实现复杂的自定义解析功能;(3)返回自定义解析结果给客户端。 2.2 SDNS 的三大能力 SDNS 在功能上完成了三个方面的飞跃: (1)自定义能力 域名解析过程,可以基于自身业务诉求和实际检测数据情况,改进权威解析结果,实现业务最优。(2)服务扩展能力 不再局限于域名解析调度。例如可以结合函数计算等云服务,丰富和扩展自身业务能力。(3)系统调度能力 由于域名解析过程可以定义,可以修改权威的结果,增加额外的数据信息,客户可以在现有服务的基础上,整合各个权威 DNS 服务,规避由于多权威 DNS 不规范所导致的调度质量不够高的问题。2.3 SDNS 使用指南 ...

July 16, 2019 · 2 min · jiezi

域名背后那些事

互联网中的地址是数字的 IP 地址,例如 61.135.169.125 就是百度的官网地址之一,如果每次访问百度都需要输入 IP 的话,估计到今天互联网都还没有走出鸿蒙阶段。 在网络发展历史上,最开始确实就是直接使用 IP 地址来访问远程主机的。早期联网的每台计算机都是采用主机文件(即我们俗称的 hosts 文件)来进行地址配置和解析的,后来联网机器越来越多,主机文件的更新和同步就成了很大的问题。于是,1983 年保罗·莫卡派乔斯发明了域名解析服务和域名系统,在 1985 年 1 月 1 日,世界上第一个域名 nordu.net 才被注册成功。 域名比 IP 地址更容易记忆,本质上只是为数字化的互联网资源提供了易于记忆的别名,就像在北京提起「故宫博物院」就都知道指的是「东城区景山前街 4 号」的那个大院子一样。如果把 IP 地址看成电话号码,那域名系统就是通讯录。我们在通讯录里保存了朋友和家人的信息,每次通过名字找到某人打电话的时候,通讯录就会查出与之关联的电话号码,然后拨号过去。我们可能记不下多少完整的电话号码,但是联系人的名字却是一定记得的。 既然「域名」只是一个别名,单凭这一个名字我们并不能访问到正确的地址,只有能将域名解析成实际的网络地址,网络访问才能成功。这种解析工作由专门的「域名系统」(Domain Name System,简称 DNS)完成,DNS 也是互联网的核心基础服务之一。 域名解析是怎么完成的DNS 解析的过程是什么样子的呢?在开始这个问题之前,我们先看一看域名的层次结构。 域名的层级结构在讨论域名的时候,我们经常听到有人说「顶级域名」、「一级域名」、「二级域名」等概念,域名级别究竟是怎么划分的呢? 根域名。还是以百度为例,通过一些域名解析工具,我们可以看到百度官网域名显示为 www.baidu.com.,细心的人会注意到,这里最后有一个 .,这不是 bug,而是所有域名的尾部都有一个根域名。www.baidu.com 真正的域名是 www.baidu.com.root,简写为www.baidu.com.,又因为根域名 .root 对于所有域名都是一样的,所以平时是省略的,最终就变成了我们常见的样子。根域名的下一级叫做顶级域名(top-level domain,缩写为 TLD),也叫做一级域名,常见的如 .com / .net / .org / .cn 等等,他们就是顶级域名。再下一级叫做二级域名(second-level domain,缩写为 SLD),比如 baidu.com。这是我们能够购买和注册的最高级域名。次级域名之下,就是主机名(host),也可以称为三级域名,比如 www.baidu.com,由此往下,基本上 N 级域名就是在 N-1 级域名前追加一级。总结一下,常见的域名层级结构如下: 主机名.次级域名.顶级域名.根域名# iewww.baidu.com.root一般来说我们购买一个域名就是购买一个二级域名(SLD)的管理权(如 leancloud.cn),有了这个管理权我们就可以随意设置三级、四级域名了。 域名解析的过程与域名的分级结构对应,DNS 系统也是一个树状结构,不同级别的域名由不同的域名服务器来解析,整个过程是一个「层级式」的。 ...

July 12, 2019 · 4 min · jiezi

网络之HTTPHTTPS

前言大学老师曾经说过,计算机界有三本天书,分别是:数据结构、计算机组成原理、计算机网络。所以网络也是我们从事计算机开发必须了解且掌握的一门技术 网络七层模型应用层 访问网络服务的端口,如HTTP传输 ‘hello,world’表示层 提供数据格式转换会话层 建立端连接并提供访问验证 如SSL/TLS认证传输层 UDP/TCP + ‘hello,world’网络层 IP + UDP/TCP + ‘hello,world’数据链路层 MAC地址 + IP + UDP/TCP + ‘hello,world’ + 帧尾物理层 传输二进制 01010101001HTTP请求/相应报文 **请求报文包括:** 请求方法 URL 协议版本HTTP1.0 首部字段名 请求体 (POST请求) **响应报文包括:** 版本 状态码 短语 首部字段名 响应实体请求方法GET: 代表获取资源 特点: 安全:不应该引起Server端的任何状态变化 幂等:请求多次的结果一样 可缓存:代理服务器可以缓存POST: 代表处理资源 特点: 不安全 不幂等 不可缓存HEADOPTIONPUT 状态码200: 请求成功300: 请求重定向400: 由于客户端请求地址和参数引用的失败500: 服务端原因 连接接建立流程TCP: 三次握手、四次挥手HTTP特点无连接: 每次请求都需要建立TCP连接无状态 ...

July 8, 2019 · 1 min · jiezi

基于ExternalDNS的多集群Service-DNS实践

概述External-DNS提供了编程方式管理Kubernetes Service资源的DNS的功能,类似于容器服务kubernetes federation v2实践一:基于External-DNS的多集群Ingress DNS实践,External-DNS会监听LoadBalancer类型的Service,然后与云厂商打通,按照可用区、region和全局三个维度生成独自的域名解析记录,便于服务间调用引导流量。本文简单介绍如何在阿里云容器平台上使用External-DNS管理多集群Service DNS。 环境准备参考容器服务kubernetes federation v2实践一:基于External-DNS的多集群Ingress DNS实践完成【联邦集群准备】、【配置RAM信息】和【部署External-DNS】部分,并配置好kubeConfig,如下所示: kubectl config get-contextsCURRENT NAME CLUSTER AUTHINFO NAMESPACE* cluster1 cluster1 kubernetes-admin1 cluster2 cluster2 kubernetes-admin2资源部署创建FederatedDeployment和FederatedServiceyaml如下,注意FederatedService类型为LoadBalancer apiVersion: v1kind: Namespacemetadata: name: test-namespace---apiVersion: types.federation.k8s.io/v1alpha1kind: FederatedNamespacemetadata: name: test-namespace namespace: test-namespacespec: placement: clusterNames: - cluster1 - cluster2---apiVersion: types.federation.k8s.io/v1alpha1kind: FederatedDeploymentmetadata: name: test-deployment namespace: test-namespacespec: template: metadata: labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx name: nginx placement: clusterNames: - cluster1 - cluster2---apiVersion: types.federation.k8s.io/v1alpha1kind: FederatedServicemetadata: name: test-service namespace: test-namespacespec: template: spec: selector: app: nginx type: LoadBalancer ports: - name: http port: 80 placement: clusterNames: - cluster2 - cluster1查看各个集群Service详情: ...

June 14, 2019 · 2 min · jiezi

使用云厂商托管K8S时容器域名解析注意事项

云厂商托管 Kubernetes 服务的 Pod 域名解析注意事项使用云厂家提供托管式Kubernetes,Pod的域名解析参数,通过界面创建Pod的话,可能厂商界面没有开放dnsConfig配置,采用了一些默认值,在使用时候,需要了解清楚厂商提供的默认配置,否则会存在问题。典型的一个配置是 ndots ,如果你在Pod内访问的域名字符串,点 数量在 ndots 阈值范围内,则被认为是Kubernetes集群内部域名,会被追加 .<namespace>.svc.cluster.local 后缀,这样会导致每次解析域名时候有2次(IP4/IP6)无效解析,在大规模并发场景下存在性能瓶颈。 云厂商一般将Kubernetes的DNS服务(CoreDNS或SkyDNS)与厂商提供的外部DNS级联了,因此这种问题再功能测试阶段不会被暴露,只在性能测试阶段能暴露出来。 DNS查找原理与规则DNS域名解析配置文件 /etc/resolv.conf nameserver 10.247.x.xsearch default.svc.cluster.local svc.cluster.local cluster.localoptions ndots:3参数说明 nameserver 域名解析服务器search 域名的查找后缀规则,查找配置越多,说明域名解析查找匹配次数越多,这里匹配有3个后缀,则查找规则至少6次,因为IPV4,IPV6都要匹配一次options 域名解析选项,多个KV值;其中典型的有 ndots ,访问的域名字符串内的点字符数量超过 ndots 值,则认为是完整域名,直接解析Kubernetes的dnsConfig配置说明Kubernetes官网的dns配置说明 nameservers:将用作Pod的DNS服务器的IP地址列表。最多可以指定3个IP地址。当Pod dnsPolicy 设置为“ None”时,列表必须至少包含一个IP地址,否则此属性是可选的。列出的服务器将合并到从指定的DNS策略生成的基本名称服务器,并删除重复的地址。searches:Pod中主机名查找的DNS搜索域列表。此属性是可选的。指定后,提供的列表将合并到从所选DNS策略生成的基本搜索域名中。删除重复的域名。Kubernetes最多允许6个搜索域。options:可选的对象列表,其中每个对象可以具有name 属性(必需)和value属性(可选)。此属性中的内容将合并到从指定的DNS策略生成的选项中。删除重复的条目dnsPolicy域名解析的几种场景应用对应的容器中的deployment的yaml中的dnsPolicy有三种配置参数ClusterFirst, Default, None Default:Pod从运行pod的节点继承名称解析配置。有关 详细信息,请参阅相关讨论ClusterFirst:任何与配置的群集域后缀不匹配的DNS查询(例如"www.kubernetes.io")将转发到从该节点继承的上游名称服务器。群集管理员可能配置了额外的存根域和上游DNS服务器。有关 在这些情况下如何处理DNS查询的详细信息,请参阅相关讨论。ClusterFirstWithHostNet:对于使用hostNetwork运行的Pod,您应该明确设置其DNS策略“ ClusterFirstWithHostNet”。None:Kubernetes v1.9(Beta in v1.10)中引入的新选项值。它允许Pod忽略Kubernetes环境中的DNS设置。应使用dnsConfigPod规范中的字段提供所有DNS设置。请参阅下面的DNS配置子部分。1. 场景1-采用自定义DNS采用自己建的DNS来解析Pods中的应用域名配置,可以参考以下代码配置,此配置在Pod中的DNS可以完全自定义,适用于已经有自己建的DNS,迁移后的应用也不需要去修改相关的配置; apiVersion: v1kind: Podmetadata: namespace: default name: dns-examplespec: containers: - name: test image: nginx dnsPolicy: "None" dnsConfig: nameservers: - 1.2.3.4 searches: - ns1.svc.cluster.local - my.dns.search.suffix options: - name: ndots value: "2" - name: edns02. 场景2-采用kubernets的CoreDNS优先使用Kubernetes的DNS服务解析,失败后再使用外部级联的DNS服务解析。 ...

June 10, 2019 · 1 min · jiezi

基于ExternalDNS的多集群Ingress-DNS实践

概要External-DNS提供了编程方式管理Kubernetes Ingress资源的DNS的功能,方便用户从Ingress管理DNS解析记录。而在kubernetes federation v2环境中,使用External-DNS可以快速的管理多个联邦集群的Ingress DNS解析,降低用户的操作成本。下面将简单介绍在阿里云容器服务环境中,如何使用External-DNS管理联邦集群的Ingress DNS解析。 联邦集群准备参考阿里云Kubernetes容器服务上体验Federation v2 搭建两个集群组成的联邦集群(配置好kubeconfig,并完成两个集群的join)。 配置RAM信息选择Kubernetes集群节点列表内任意一个Worker节点,打开对应的节点列表信息页面。 找到对应的 RAM 角色,打开RAM控制台,找到对应的角色名称,添加【AliyunDNSFullAccess】权限。 注意:每个集群都需要配置RAM信息。 部署External-DNS配置RBAC 执行下面yaml: apiVersion: v1kind: ServiceAccountmetadata: name: external-dns---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRolemetadata: name: external-dnsrules:- apiGroups: [""] resources: ["services"] verbs: ["get","watch","list"]- apiGroups: [""] resources: ["pods"] verbs: ["get","watch","list"]- apiGroups: ["extensions"] resources: ["ingresses"] verbs: ["get","watch","list"]- apiGroups: [""] resources: ["nodes"] verbs: ["list"]- apiGroups: ["multiclusterdns.federation.k8s.io"] resources: ["dnsendpoints"] verbs: ["get", "watch", "list"]---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: external-dns-viewerroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: external-dnssubjects:- kind: ServiceAccount name: external-dns namespace: default部署External-DNS服务 ...

June 6, 2019 · 2 min · jiezi

DNS域名解析服务及其配置

一、背景到 20 世纪 70 年代末,ARPAnet 是一个拥有几百台主机的很小很友好的网络。仅需要一个名为 HOSTS.TXT 的文件就能容纳所有需要了解的主机信息:它包含了所有连接到 ARPAnet 的主机名字到地址的映射(name-to-addressmapping)。 HOSTS.TXT 文件是由 SRI 的网络信息中心(Network Information Center,简称 NIC)负责维护,并且从一台主机 SRI-NIC 上分发到整个网络。ARPAnet的管理员通常是通过电子邮件通知 NIC,同时定期 FTP 到 SRI-NIC 上获得最新的 HOSTS.TXT 文件。 但是随着 ARPAnet 的增长,这种方法行不通了。每台主机的变更都会导致 HOSTS.TXT 的变化,导致所有主机需要到 SRI-NIC 上获得更新文件。当ARPAnet 采用 TCP/IP 协议后,网络上的主机爆炸性的增长,出现了以下问题: 流量和负载:名字冲突:一致性二、DNS介绍DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。 三、DNS数据结构 3.1 DNS记录类型域名和IP之间的对应关系,称为“记录”(record)。根据使用的目的不同,又分为不同的类型,常见的DNS记录类型如下: A:地址记录(Address),返回域名指向的IP地址。NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。3.2 工作原理DNS服务的工作过程 当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。DNS域名的指定类别。对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。 DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。 ...

May 31, 2019 · 2 min · jiezi

DNSCDNHTTPDNS

dns httpdns运营商LOCALDNS存在问题:域名缓存,替换广告地址,转发到其他运营商localDNS使返给用户的ip不是最近的,配置多个运行商NAT使ip不是最近的。 cdn请求过程:1.当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。2.CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。3.用户向CDN的全局负载均衡设备发起内容URL访问请求。4.CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。5.区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。6.全局负载均衡设备把服务器的IP地址返回给用户。7.用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。 内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应;内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。集群抗攻击 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。 CDN回源 整体动态静态处理访问域名,权威上配的是httpdns的VIP或者IPs。httpdns的域名配置系统中若是静态的配置配成cnd服务器cdndns的域名。然后再进行所谓的cdn自己的ip选择和摘除等(阿里和腾讯的CDN。内部实现就先忽略了,回源正常给IPs或者域名。)。对于动态的直接配置我们自己机器的VIP(进入内部网络,详见公司网络入口:)外网故障摘除是在httpdns上改配置

May 14, 2019 · 1 min · jiezi

github-入门教程之-github-访问速度太慢怎么办

github 是全世界最流行的开源项目托管平台,其代表的开源文化从根本上改变了软件开发的方式. 基本上所有的需求都能从 github 上或多或少找到现成的实现方案,再也不用重头开始造轮子而是自定义轮子! 然而,有时候国内访问 https://github.com/ 速度太慢,如何加速访问 github.com 网站就成了刚需. 由于 github.com 网站位于美国旧金山,所以初始访问 github.com 时网络寻址会比较耗费时间,这也是网站打开速度慢的其中一个原因. 国外在线检测网站: https://www.ipaddress.com/最初用户从浏览器中输入 github.com 网址时,浏览器并不知道这个域名对应的真实 ip 地址,先问问自己电脑认识不认识这个域名的门牌号,如果本机不认识会接着往上问,当地运行商也不认识这个域名的话,继续问上级,直到问道 github.com 的门牌号是 192.30.253.113 为止! 如此繁琐的问路过程被称之为 DNS 寻址,如果问路的时间都占用很久,那么访问网站的速度自然会很慢. 所以,如果我们直接告诉浏览器目的地,那么浏览器也就不会一步一步去费劲问路了,这在一定程度上也就优化了访问网站的速度. $ ping github.com -c 3PING github.com (192.30.253.113): 56 data bytes64 bytes from 192.30.253.113: icmp_seq=0 ttl=41 time=405.924 ms64 bytes from 192.30.253.113: icmp_seq=1 ttl=41 time=346.654 ms64 bytes from 192.30.253.113: icmp_seq=2 ttl=41 time=345.485 ms--- github.com ping statistics ---3 packets transmitted, 3 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 345.485/366.021/405.924/28.220 msping github.com -c 3 查看 github.com 网站的门牌号正常来说,网站的主域名下会存在多个子域名,由这些域名组合在一起提供完整的服务. ...

May 12, 2019 · 2 min · jiezi

百度APP移动端网络深度优化实践分享(一):DNS优化篇

本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为《百度App网络深度优化系列《一》DNS优化》,感谢原作者的无私分享。 一、前言网络优化是客户端几大技术方向中公认的一个深度领域,所以百度App给大家带来网络深度优化系列文章。 本系列文章目录如下: 《百度APP移动端网络深度优化实践分享(一):DNS优化篇》(* 本文)《百度APP移动端网络深度优化实践分享(二):网络连接优化篇》《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》 希望对大家在网络方向的学习和实践有所帮助。 百度起家于搜索,整个公司的网络架构和部署都是基于标准的internet协议,目前已经是全栈HTTPS,来到移动互联网时代后,总的基础架构不变,但在客户端上需要做很多优化工作。 DNS(Domain Name System),它的作用是根据域名查出IP地址,它是HTTP协议的前提,只有将域名正确的解析成IP地址后,后面的HTTP流程才能进行,所以一般做网络优化会首选优化DNS。 (本文同步发布于:http://www.52im.net/thread-24...) 二、相关文章《TCP/IP详解 卷1:协议 - 第14章 DNS:域名系统》 《全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等》 《美图App的移动端DNS优化实践:HTTPS请求耗时减小近半》 《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》 三、技术背景DNS优化核心需要解决的问题有两点: 1)由于DNS劫持或故障造成的服务不可用,进而影响用户体验,影响公司的收入; 2)由于DNS调度不准确导致的性能退化,进而影响用户体验。 百度App承载着亿级流量,每年都会遇到运营商DNS劫持或运营商DNS故障,整体影响非常不好,所以DNS优化刻不容缓,通过下图会更直观的了解运营商劫持或故障的原理。 ▲ 运营商劫持或故障的原理 有关移动端DNS劫持等各种疑难杂症,详见文章《全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等》。 四、HTTPDNS4.1 概述 既然我们面临这么严峻的问题,那么我们如何优化DNS呢?答案就是HTTPDNS。 大部分标准DNS都是基于UDP与DNS服务器交互的,HTTPDNS则是利用HTTP协议与DNS服务器交互,绕开了运营商的Local DNS服务,有效防止了域名劫持,提高域名解析效率,下图是HTTPDNS的原理。 ▲ HTTPDNS原理 百度App HTTPDNS端上的实现是基于百度SYS团队的HTTPDNS服务,下图介绍了HTTPDNS的服务端部署结构。 ▲ HTTPDNS部署结构 HTTPDNS服务是基于BGP接入的,BGP英文Border Gateway Protocol,即边界网关协议,是一种在自治系统之间动态的交换路由信息的路由协议,BGP可以根据当前用户的运营商路由到百度服务点的对应集群上,对于第三方域名,服务点会通过百度部署在运营商的CDN节点向其他域名权威DNS发起查询,查询这个运营商下域名的最优IP。 百度App独立实现了端的HTTPDNS SDK,下图介绍了端HTTPDNS的整体架构。 ▲ 端HTTPDNS的整体架构 更多HTTPDNS的资料,请见:《全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等》、《美图App的移动端DNS优化实践:HTTPS请求耗时减小近半》。 4.2 DNS接口层 DNS接口层解决的问题是屏蔽底层的细节,对外提供简单整洁的API,降低使用者的上手成本,提高开发效率。 4.3 DNS策略层 DNS策略层通过多种策略的组合,使HTTPDNS服务在性能,稳定性,可用性上均保持较高的水准,下面讲解下每个策略设计的初衷和具体实现。 【4.3.1 容灾策略】: 这是一个非常关键的策略,主要解决HTTPDNS服务可用性的问题,实践证明,这个策略帮助百度App在异常情况下挽救回很多流量。 (1)当HTTPDNS服务不可用并且本地也没有缓存或者缓存失效的时候,会触发降级策略,降级成运营商的localDNS方案,虽然存在运营商事故或者劫持的风险,但保障了DNS服务的可用性。 (2)当HTTPDNS服务和localDNS服务双双不可用的情况下,会触发backup策略,使用端上的backup IP。 什么是backup IP?backup IP是多组根据域名分类的IP列表,可云端动态更新,方便后续运维同学调整服务端的节点IP,不是所有域名都有对应的backup IP列表,目前百度App只能保证核心域名的可用性。 既然是一组IP,便有选取问题,backup IP选取机制是怎样的呢?我们的中心思想就是要在端上利用最小的代价,并且考虑服务端的负载均衡,得到相对正确或者合理的选取结果。通过运营商和地理信息,可以选择一个相对较优的IP,但获取地理信息需要很大耗时,外加频次很高,代价很大,所以我们选择了RR算法来代替上面的方法(RR算法是Round-Robin,轮询调度),这样客户端的代价降低到最小,服务端也实现了负载均衡。 【4.3.2 安全策略】: ...

April 22, 2019 · 1 min · jiezi

Android 网络优化,使用 HTTPDNS 优化 DNS,从原理到 OkHttp 集成

一、前言谈到优化,首先第一步,肯定是把一个大功能,拆分成一个个细小的环节,再单个拎出来找到可以优化的点,App 的网络优化也是如此。在 App 访问网络的时候,DNS 解析是网络请求的第一步,默认我们使用运营商的 LocalDNS 服务。有数据统计,在这一块 3G 网络下,耗时在 200~300ms,4G 网络下也需要 100ms。解析慢,并不是 LocalDNS 最大的问题,它还存在一些更为严重的问题,例如:DNS 劫持、DNS 调度不准确(缓存、转发、NAT)导致性能退化等等,这些才是网络优化最应该解决的问题。想要优化 DNS,现在最简单成熟的方案,就是使用 HTTPDNS。今天就来聊聊,DNS、HTTPDNS,以及在 Android 下,如何使用 OKHttp 来集成 HTTPDNS。二、DNS 和 HTTPDNS2.1 什么是 DNS在说到 HTTPDNS 之前,先简单了解一下什么是 DNS?在网络的世界中,每个有效的域名背后都有为其提供服务的服务器,而我们网络通信的首要条件,就是知道服务器的 IP 地址。但是记住域名(网址)肯定是比记住 IP 地址简单。如果有某种方法,可以通过域名,查到其提供服务的服务器 IP 地址,那就非常方便了。这里就需要用到 DNS 服务器以及 DNS 解析。DNS(Domain Name System),它的作用就是根据域名,查出对应的 IP 地址,它是 HTTP 协议的前提。只有将域名正确的解析成 IP 地址后,后面的 HTTP 流程才可以继续进行下去。DNS 服务器的要求,一定是高可用、高并发和分布式的服务器。它被分为多个层次结构。根 DNS 服务器:返回顶级域 DNS 服务器的 IP 地址。顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址。权威 DNS 服务器:返回相应主机的 IP 地址。这三类 DNS 服务器,类似一种树状的结构,分级存在。当开始 DNS 解析的时候,如果 LocalDNS 没有缓存,那就会向 LocalDNS 服务器请求(通常就是运营商),如果还是没有,就会一级一级的,从根域名查对应的顶级域名,再从顶级域名查权威域名服务器,最后通过权威域名服务器,获取具体域名对应的 IP 地址。DNS 在提供域名和 IP 地址映射的过程中,其实提供了很多基于域名的功能,例如服务器的负载均衡,但是它也带来了一些问题。2.2 DNS 的问题DNS 的细节还有很多,本文就不展开细说了,其问题总结来说就是几点。1. 不稳定DNS 劫持或者故障,导致服务不可用。2. 不准确LocalDNS 调度,并不一定是就近原则,某些小运营商没有 DNS 服务器,直接调用其他运营商的 DNS 服务器,最终直接跨网传输。例如:用户侧是移动运营商,调度到了电信的 IP,造成访问慢,甚至访问受限等问题。3. 不及时运营商可能会修改 DNS 的 TTL(Time-To-Live,DNS 缓存时间),导致 DNS 的修改,延迟生效。还有运营商为了保证网内用户的访问质量,同时减少跨网结算,运营商会在网内搭建内容缓存服务器,通过把域名强行指向内容缓存服务器的地址,来实现本地本网流量完全留在本地的目的。对此不同运营商甚至实现都不一致,这对我们来说就是个黑匣子。正是因为 DNS 存在种种问题,所以牵出了 HTTPDNS。2.3 HTTPDNS 的解决方案DNS 不仅支持 UDP,它还支持 TCP,但是大部分标准的 DNS 都是基于 UDP 与 DNS 服务器的 53 端口进行交互。HTTPDNS 则不同,顾名思义它是利用 HTTP 协议与 DNS 服务器的 80 端口进行交互。不走传统的 DNS 解析,从而绕过运营商的 LocalDNS 服务器,有效的防止了域名劫持,提高域名解析的效率。这就相当于,每家各自基于 HTTP 协议,自己实现了一套域名解析,自己去维护了一份域名与 IP 的地址簿,而不是使用同一的地址簿(DNS服务器)。据说微信有自己部署的 NETDNS,而各大云服务商,阿里云和腾讯云也提供了自己的 HTTPDNS 服务,对于我们普通开发者,只需要付出少量的费用,在手机端嵌入支持 HTTPDNS 的客户端 SDK,即可使用。三、 OKHttp 接入 HTTPDNS既然了解了 HTTPDNS 的重要性,接下来看看如何在 OkHttp 中,集成 HTTPDNS。OkHttp 是一个处理网络请求的开源项目,是 Android 端最火热的轻量级网络框架。在 OkHttp 中,默认是使用系统的 DNS 服务 InetAddress 进行域名解析。InetAddress ip2= InetAddress.getByName(“www.cxmydev.com”);System.out.println(ip2.getHostAddress());System.out.println(ip2.getHostName());而想在 OkHttp 中使用 HTTPDNS,有两种方式。通过拦截器,在发送请求之前,将域名替换为 IP 地址。通过 OkHttp 提供的 .dns() 接口,配置 HTTPDNS。对这两种方法来说,当然是推荐使用标准 API 来实现了。拦截器的方式,也建议有所了解,实现很简单,但是有坑。3.1 拦截器接入方式1. 拦截器接入拦截器是 OkHttp 中,非常强大的一种机制,它可以在请求和响应之间,做一些我们的定制操作。在 OkHttp 中,可以通过实现 Interceptor 接口,来定制一个拦截器。使用时,只需要在 OkHttpClient.Builder 中,调用 addInterceptor() 方法来注册此拦截器即可。OkHttp 的拦截器不是本文的重点,我们还是回到拦截器去实现 HTTPDNS 的话题上,拦截器没什么好说的,直接上相关代码。class HTTPDNSInterceptor : Interceptor{ override fun intercept(chain: Interceptor.Chain): Response { val originRequest = chain.request() val httpUrl = originRequest.url() val url = httpUrl.toString() val host = httpUrl.host() val hostIP = HttpDNS.getIpByHost(host) val builder = originRequest.newBuilder() if(hostIP!=null){ builder.url(HttpDNS.getIpUrl(url,host,hostIP)) builder.header(“host”,hostIP) } val newRequest = builder.build() val newResponse = chain.proceed(newRequest) return newResponse }}在拦截器中,使用 HttpDNS 这个帮助类,通过 getIpByHost() 将 Host 转为对应的 IP。如果通过抓包工具抓包,你会发现,原本的类似 http://www.cxmydev.com/api/user 的请求,被替换为:http://220.181.57.xxx/api/user。2. 拦截器接入的坏处使用拦截器,直接绕过了 DNS 的步骤,在请求发送前,将 Host 替换为对应的 IP 地址。这种方案,在流程上很清晰,没有任何技术性的问题。但是这种方案存在一些问题,例如:HTTPS 下 IP 直连的证书问题、代理的问题、Cookie 的问题等等。其中最严重的问题是,此方案(拦截器+HTTPDNS)遇到 https 时,如果存在一台服务器支持多个域名,可能导致证书无法匹配的问题。在说到这个问题之前,就要先了解一下 HTTPS 和 SNI。HTTPS 是为了保证安全的,在发送 HTTPS 请求之前,首先要进行 SSL/TLS 握手,握手的大致流程如下:客户端发起握手请求,携带随机数、支持算法列表等参数。服务端根据请求,选择合适的算法,下发公钥证书和随机数。客户端对服务端证书,进行校验,并发送随机数信息,该信息使用公钥加密。服务端通过私钥获取随机数信息。双方根据以上交互的信息,生成 Session Ticket,用作该连接后续数据传输的加密密钥。在这个流程中,客户端需要验证服务器下发的证书。首先通过本地保存的根证书解开证书链,确认证书可信任,然后客户端还需要检查证书的 domain 域和扩展域,看看是否包含本次请求的 HOST。在这一步就出现了问题,当使用拦截器时,请求的 URL 中,HOST 会被替换成 HTTPDNS 解析出来的 IP。当服务器存在多域名和证书的情况下,服务器在建立 SSL/TLS 握手时,无法区分到底应该返回那个证书,此时的策略可能返回默认证书或者不返回,这就有可能导致客户端在证书验证 domain 时,出现不匹配的情况,最终导致 SSL/TLS 握手失败。这就引发出来 SNI 方案,SNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的 SSL/TLS 扩展。SNI 的工作原理,在连接到服务器建立 SSL 连接之前,先发送要访问站点的域名(hostname),服务器根据这个域名返回正确的证书。现在,大部分操作系统和浏览器,都已经很好的支持 SNI 扩展。3. 拦截器 + HTTPDNS 的解决方案这个问题,其实也有解决方案,这里简单介绍一下。针对 “domain 不匹配” 的问题,可以通过 hook 证书验证过程中的第二步,将 IP 直接替换成原来的域名,再执行证书验证。而 HttpURLConnect,提供了一个 HostnameVerifier 接口,实现它即可完成替换。public interface HostnameVerifier { public boolean verify(String hostname, SSLSession session);}如果使用 OkHttp,可以参考 OkHostnameVerifier (source://src/main/java/okhttp3/internal/tls/OkHostnameVerifier.java) 的实现,进行替换。本身 OkHttp 就不建议通过拦截器去做 HTTPDNS 的支持,所以这里就不展开讨论了,这里只提出解决的思路,有兴趣可以研究研究源码。3.2 OKHttp 标准 API 接入OkHttp 其实本身已经暴露了一个 Dns 接口,默认的实现是使用系统的 InetAddress 类,发送 UDP 请求进行 DNS 解析。我们只需要实现 OkHttp 的 Dns 接口,即可获得 HTTPDNS 的支持。在我们实现的 Dns 接口实现类中,解析 DNS 的方式,换成 HTTPDNS,将解析结果返回。class HttpDns : Dns { override fun lookup(hostname: String): List<InetAddress> { val ip = HttpDnsHelper.getIpByHost(hostname) if (TextUtils.isEmpty(ip)) { //返回自己解析的地址列表 return InetAddress.getAllByName(ip).toList() } else { // 解析失败,使用系统解析 return Dns.SYSTEM.lookup(hostname) } }}使用也非常的简单,在 OkHttp.build() 时,通过 dns() 方法配置。mOkHttpClient = httpBuilder .dns(HttpDns()) .build();这样做的好处在于:还是用域名进行访问,只是底层 DNS 解析换成了 HTTPDNS,以确保解析的 IP 地址符合预期。HTTPS 下的问题也得到解决,证书依然使用域名进行校验。OkHttp 既然暴露出 dns 接口,我们就尽量使用它。四、小结时刻现在大家知道,在做 App 的网络优化的时候,第一步就是使用 HTTPDNS 优化 DNS 的步骤。所有的优化当然是以最终效果为目的,这里提两条大厂公开的数据,对腾讯的产品,在接入 HTTPDNS 后,用户平均延迟下降超过 10%,访问失败率下降超过五分之一。而百度 App 的 Feed 业务,Android 劫持率由 0.25% 降低到 0.05%。此种优化方案,非常依赖 HTTPDNS 服务器,所以建议使用 阿里云、腾讯云 这样相对稳定的云服务商。references:【1】百度App网络深度优化系列一 DNS 优化【2】SIN:https://blog.csdn.net/makenot…【3】鹅厂网事,HTTPDNS 服务详解公众号后台回复成长『成长』,将会得到我准备的学习资料,也能回复『加群』,一起学习进步;你还能回复『提问』,向我发起提问。推荐阅读:关于字符编码,你需要知道的都在这里 | 图解:HTTP 范围请求 | Java 异常处理 | 安卓防止用户关闭动画导致动画失效 | Git 找回遗失的代码 | 阿里的 Alpha 助力 App 启动速度优化 ...

March 25, 2019 · 3 min · jiezi

DNS域名解析过程

DNS域名解析过程我们都知道在浏览器通过域名发起一个网络请求的时候,会有DNS服务器将域名解析成ip地址,以便向正确的ip地址发送请求,那么这一个过程具体是怎么处理的呢?今天整理了一下DNS域名解析的过程。大致分为10步:第一步浏览器会检查缓存中有没有域名对应的ip地址,这个缓存是有过期时长的,一般是几分钟到几小时不等。第二步如果浏览器缓存没有,那么就检查操作系统的hosts文件,比如windows就是C:\Windows\System32\drivers\etc\hosts文件,linux在/etc/hosts文件中配置。第三步如果本地也没有配置那么就会根据向本机配置的本地区DNS域名服务器(LDNS)发起请求,如果你是通过学校连接互联网的一般是你学校的DNS服务器,如果你是在小区连接互联网的一般是网络提供商比如电信,联通的DNS服务器,DNS服务器通常不会太远。如何查看本机的域名服务器,在Linux可以通过 cat /etc/resolv.conf查看。到这一步基本能解析80%的域名。第四步如果LDNS也不能解析,那么就直接到根域名服务器请求解析。第五步根域名服务器会给本地域名服务器LDNS一个所查询的主域名服务器(gTLD)地址,gTLD是国际顶级域名服务器,比如.com,.cn,.org等。第六步本地域名服务器LDNS再向上一步返回的gLTD服务器发送请求。第七步gLTD服务器查询并返回域名对应的Name Server域名服务器的地址,通常是你注册的域名服务器,例如你在某个域名服务器提供商申请的域名,那么这个域名解析任务就由这个域名服务提供商来完成。第八步Name Server域名服务器会查询存储的域名和ip的映射关系表,将ip连同一个TTL值返回给DNS Server域名服务器。第九步LDNS拿到ip和TTL会缓存起来,缓存时间由TTL值控制。第十步把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。整个过程用一张图来表示:在实际解析过程中可能不只有这10个步骤,入Name Server也有可能有多级或者一个GTM来控制负载均衡,都能影响DNS解析过程。

February 20, 2019 · 1 min · jiezi

Flask 学习笔记(2) --- 申请域名和公网 IP

申请域名入门的话可以使用 GoDaddy 的域名, 挑最便宜的那种就好了, 7 块钱能用一年. 另外 Godaddy 也有一整套完整的建站方案, 不过价格略贵.公网 IP可以选择租赁附赠公网 IP 的 VPS, 阿里云腾讯云啥的可能还会有一整套的解决方案, 不过价格会贵一点. 也可以尝试国外的 VPS 厂商, 如 digitalocean, vultr, linode, bandwagon等等, 总之选择一个价格实惠, 而且 IP 可以 ping 通的 VPS 即可.设置 DNS假设你已经获得了域名 awesome.com 的使用权.以 Godaddy 的 dashboard 为例, 点击头像进入【My Product (我的产品)】, 点击域名 awesome.com 中的【DNS】选项, 然后在 Records (记录) 中点击【add (添加)】.接下来, 【Type (类型)】选择 A, 也就是把 domain -> ip 的映射记录.【host (主机)】填写 @, 也就是域名 awesome.com 本身.【Points to (指向)】填写你的 VPS 的 IP 地址.【TTL】选择 1 Hour.按照上述方法, 再添加一条记录, 其中【host (主机)】填写 www, 也就是把 www.awesome.com 也解析到你的 IP.最后, 回到你的 VPS 所在的 Dashboard, 进行类似的 DNS 解析设置即可.最后, 启动我们的 httpserverpython3 server.py稍等几分钟, 在浏览器中输入 http://awesome.com:8080 即可访问我们的网站 ...

February 13, 2019 · 1 min · jiezi

云原生计算基金会宣布CoreDNS毕业

快速增长的DNS服务器,作为Kubernetes的官方默认DNS支持Kubernetes®和Prometheus™等开源技术的Cloud Native Computing Foundation®云原生计算基金会(CNCF®)今天宣布,在去年毕业的Kubernetes、Prometheus和Envoy之后,CoreDNS是2019年第一个毕业的项目。要从孵化的成熟水平升级到毕业,项目必须表现出蓬勃的采用、多样性、正式的治理过程,以及对社区可持续性和包容性的坚定承诺。CoreDNS是一个快速、灵活且现代的DNS服务器,可在云原生部署中提供服务发现。由于它提供了与Kubernetes向后兼容但可扩展的集成,最新的Kubernetes版本(1.13)正式推荐CoreDNS作为所有部署的默认DNS。该服务器还可用于AWS的混合云环境,使用AWS Route53和etcd集成,亦计划尽快添加Google Cloud DNS支持。“CoreDNS成为CNCF的一部分已经近两年,被社区培养以达到毕业水平,并正式成为Kubernetes的DNS服务器,”CNCF的首席运营官,Chris Aniszczyk表示。“此外,CoreDNS是一个出色的独立DNS服务器,可继续在更多环境中使用。我们很高兴能够随着社区的发展继续提供支持。”该项目由Miek Gieben于2016年3月创建,他当时是Google的站点可靠性工程师。在构建CoreDNS时,社区考虑了其他DNS服务器的局限性,创建可与多个后端通信的通用DNS服务器,如etcd、Consul和Kubernetes。CoreDNS后来于2017年加入了Cloud Native Sandbox,于2018年2月成为孵化项目。今天,该项目有100多个贡献者,16个活跃的维护者,以及许多在Kubernetes内外使用它的组织,包括Bose、Hellofresh、Skyscanner、SoundCloud、Trainline和Zalando。“自从2017年初加入CNCF以来,CoreDNS一直能够看到出色的社区增长和生产中的惊人使用,”CoreDNS维护者,Yong Tang表示。“我们非常感谢CNCF帮助CoreDNS成为成功的项目,并期待与CNCF一起继续发展我们的社区。”“CoreDNS项目和社区已经走过了一段漫长的道路,从而达到成为CNCF项目毕业的重要里程碑,”CoreDNS维护者和Okkur Labs创始人,Michael Grosser说道。“从一个简单的DNS服务器暴露Prometheus指标,到一个内置巨大灵活性的成熟DNS解决方案。成为大多数Kubernetes集群的核心组件,为用户带来更多的稳定性和灵活性,让我们对支持CoreDNS的强大社区充满信心。”“CoreDNS的灵活、基于插件的架构,已被证明是DNS服务器的强大设计。易于集成和扩展,使得CoreDNS在实施各种DNS服务和用例变得至关重,从Kubernetes服务发,到基于政策的DNS和广告拦截,”Google云计算高级软件工程师和CoreDNS高级维护者,John Belamaric表示。“CNCF对该项目的支持对CoreDNS的成功至关重要,我们很高兴能够毕业,并继续发展我们多元化的社区。”“作为项目维护者,我专注于调整CoreDNS以供Kubernetes社区采用,在Kubernetes部署CoreDNS上进行协作,并将项目验证为Kubernetes集群的DNS服务器,”Infoblox软件经理,Francois Tur表示。“今天CoreDNS从CNCF毕业,对我们的项目社区来说是一项了不起的成就。这个旅程始于两年多以前,我们才刚刚开始。”为了正式从孵化状态毕业,该项目采用了CNCF行为准则。CoreDNS团队在过去一年中还完成了12个版本,现在有35个内置插件和15个外部插件,其中几个为Kubernetes社区开发。它参与了过去两年的Google Summer of Code,当中导师与学生实习生配对,帮助推进不断发展的云原生项目。“在Infoblox Inc.,我们很光荣能够在我们的SAAS DNS产品中使用CoreDNS,我们已经在全球范围内部署了多个CoreDNS实例。它目前正在为所有Infoblox云客户在生产环境提供DNS流量,包括一些财富500强企业,”Infoblox高级软件经理,Naveen Singh表示。“我们非常欣赏CoreDNS的插件架构,它为我们提供了更大的灵活性、更高的开发速度和更快的发布周期。”“使用CoreDNS作为坚实的基础上构建GitNS.com是一个很好的决定。DNS的基本特性使得在高性能、可靠和可扩展的系统之上构建至关重要,“GitNS创始人,Michael Grosser说。“该项目有一个令人难以置信的社区,我们非常乐意支持。随着CoreDNS从CNCF毕业,它成为构建基础架构和自定义用例的最佳DNS平台之一。”CoreDNS背景CoreDNS是用Go编写的DNS服务器。它根据Apache许可证版本2授权许可,并且是完全开源的。CoreDNS因其灵活性,可用于多种环境和用例。可用于Kubernetes服务发现、权威的DNS服务器、DNS重型应用程序的本地缓存等等。每个插件链接在一起赋能其他功能,如Prometheus指标或开箱即用的查询重写。除了从标准区域文件提供DNS之外,CoreDNS通过Kubernetes插件与Kubernetes集成,使用etcd插件直接通过etcd,以及与许多其他后端数据提供程序集成。有关下载、文档和参与项目的背景信息,请到https://github.com/coredns/co…。2019年KubeCon + CloudNativeCon中国论坛提案征集(CFP)现已开放KubeCon + CloudNativeCon 论坛让用户、开发人员、从业人员汇聚一堂,面对面进行交流合作。与会人员有 Kubernetes、Prometheus 及其他云原生计算基金会 (CNCF) 主办项目的领导,和我们一同探讨云原生生态系统发展方向。2019年中国开源峰会提案征集(CFP)现已开放在中国开源峰会上,与会者将共同合作及共享信息,了解最新和最有趣的开源技术,包括Linux、IoT、区块链、AI、网络等;并获得如何在开源社区中导向和引领的信息。大会日期:提案征集截止日期:太平洋标准时间 2 月 15 日,星期五,晚上 11:59提案征集通知日期:2019 年 4 月 1 日会议日程通告日期:2019 年 4 月 3 日幻灯片提交截止日期:6 月 17 日,星期一会议活动举办日期:2019 年 6 月 24 至 26 日2019年KubeCon + CloudNativeCon + Open Source Summit China赞助方案出炉啦

January 25, 2019 · 1 min · jiezi

DNS入门

一、概念DNS:根据域名查询IP地址,就像一个巨大的电话本二、查询过程dig 可以查看整个查询过程,会展示四段信息 dig www.jianshu.com; <<>> DiG 9.10.6 <<>> www.jianshu.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51370;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;www.jianshu.com. IN A;; ANSWER SECTION:www.jianshu.com. 30 IN CNAME www.jianshu.com.wswebpic.com.www.jianshu.com.wswebpic.com. 30 IN A 114.236.90.115www.jianshu.com.wswebpic.com. 30 IN A 61.147.227.44;; Query time: 15 msec;; SERVER: 223.5.5.5#53(223.5.5.5);; WHEN: Wed Jan 23 14:47:02 CST 2019;; MSG SIZE rcvd: 104第一段是查询参数与统计第二段是查询内容,A是address的缩写第三段DNS服务器的答复,A记录是用来指定域名对应的ip地址,CNAME记录是别名记录,允许多个名字映射到同一个域名。30指缓存时间,30秒内不用重新查询A记录把一个域名解析到一个IP地址,CNAME把域名解析到另一个域名,这个别名也要做A记录的。但是使用CNAME记录可以更方便的变更IP,比如一台服务器有100个网站,他们都做了别名,服务器变更IP时,只需要变更别名的A记录就好了。第四段是DNS服务器的一些传输信息,本机DNS服务器是223.5.5.5如果不想看到太多信息,可以用以下命令 dig +short www.jianshu.com三、DNS服务器比较有名的DNS服务器是Google的8.8.8.8阿里云的114.114.114.114阿里云的223.5.5.5dig命令有个@参数,指定某个DNS服务器 dig @114.114.114.114 www.jianshu.com四、域名分级查询上面可以看出每个域名后面都多了个 .域名www.jianshu.com 显示为www.jianshu.com.。这是因为每个域名尾部都有一个根域名.root,一般忽略不写。以下是域名层级结构evernotecid://2CF3738D-BAB2-47DD-9C0D-169A9D334A90/appyinxiangcom/13231804/ENResource/p288分级查询就是从根域名开始,依次查询每一级域名的NS记录(域名服务器记录),直到查到最终IP。从根域名服务器查到顶级域名服务器的NS、A记录从顶级域名服务器查到次级域名服务器的NS、A记录从次级域名服务器查到主机名IP地址目前世界上有13组根域名服务器以下命令可以查看DNS整个分级查询的过程 dig +trace www.jianshu.com第一段展示根域名的所有NS记录,也就是所有根域名服务器第二段展示com域名的NS记录第三段展示jianshu.com的NS记录第四段展示www.jianshu.com主机名以下命令可以单独查看每一级域名的NS记录 dig ns com参考文献超清晰的DNS原理入门指南A记录和CNAME记录的区别 ...

January 23, 2019 · 1 min · jiezi

关于清空Chrome DNS cache

问题通过 VPN + DNS 的方式 将域名 u.foo.com 映射成内网测试环境的地址(如 10.10.205.90)但是连山VPN 配上了DNS后 浏览器中访问的还是生产的地址 但是命令行中解析的是内网地址➜ ~ nslookup u.foo.comServer: 10.10.204.103Address: 10.10.204.103#53Name: u.foo.comAddress: 10.10.205.90即命令中可以正确映射到内网地址 但浏览器中却不可以原因应该是浏览器缓存导致 即已经缓存了 u.foo.com 的IP为生产地址 解决尝试1 通过访问chrome://net-internals/#dns 清空缓存 但一点效果都没有尝试二从这篇文章中得知:在cache查询的时候如果这个cache已经过时了即staled,也会返回null,而判断是否stale的标准如下:即网络发生了变化,或者expired_by大于0,则认为是过时的cache于是通过关闭wifi 再打开的方式 人工触发网络变化 使得cache过期 这次果然好使了

January 19, 2019 · 1 min · jiezi

蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录

摘要: Service Mesher Meetup 上海站演讲内容整理。小蚂蚁说:本文是基于在 Service Mesher Meetup 上海站的主题分享《蚂蚁金服 Service Mesh 渐进式迁移方案》内容整理,完整的分享 PPT 获取方式见文章底部。敖小剑,蚂蚁金服高级技术专家,十六年软件开发经验,微服务专家,Service Mesh 布道师,Servicemesher 社区联合创始人;龙轼,阿里巴巴技术专家、前京东 Hadoop 负责人、Hadoop 代码贡献者、现负责UC 基于 Kubernetes 自研的 PaaS 平台整体的稳定性。大家好,今天给大家带来的演讲主题是《蚂蚁金服 Service Mesh 渐进式迁移方案》,给大家介绍一下我们蚂蚁金服主站的 Service Mesh 迁移方案,在稍后的内容中我会给大家解释什么是“渐进式”。今天的演讲方式有些特殊,将会是两位讲师合作。我是敖小剑,来自蚂蚁金服中间件团队,另外一位讲师 龙轼 ,来自 UC 基础研发部。Service Mesh 演进路线今天的内容将会有四块主要内容:Service Mesh演进路线:介绍蚂蚁金服计划在主站落地Service Mesh的方案,由于涉及到大量的存量应用和超大规模,又要保证迁移过程的平滑,因此我们的落地方案相比社区方案要复杂的多。实现平滑迁移的关键:介绍在整个迁移方案中,为了实现平滑迁移的几个关键做法,然后今天我们将详细展开其他的一个关键点:DNS寻址方案。DNS寻址方案的演进:详细介绍Kubernetes/Istio/SOFAMesh一路演进过来的DNS寻址方式。DNS寻址方案的后续规划:介绍我们在DNS寻址方案上的后续规划。前两块内容将由我来为大家介绍,后两块内容将由我的同事 龙轼 为大家介绍。在展开内容之前,先看一下背景,Service Mesh在蚂蚁金服主站落地的背景:目标:需要满足我们对长期目标的认可,具体指服务间通讯走Service Mesh,而且是Istio这种带完整的控制平面的Service Mesh形态,基础设施要构建在k8s之上,而应用的形态要向微服务靠拢。现状:而现实是存在很多挑战,首先还有很多应用没有实现微服务化,而且我们的k8s普及程度也不够,还有非常多的应用没有运行在kubernets之上。Istio的成熟程度也稍显不足,不够稳定,更大的挑战的是Istio目前无法原生支持我们蚂蚁金服的规模,我们还在试图对Istio进行改进和扩展。最后,在落地时必须考虑的非常现实的一点:现有系统中为数众多的应用不可能一夜之间全部迁移。关键需求:因此在落地实施时,非常重要的需求是:要实现平滑迁移。简单说,微服务 + Service Mesh + kubernetes 是我们的目标,但是如何从现有体系出发,向目标平稳和坚实的迈进,必须给出可行的实践指导。今天演讲的内容,要给大家介绍的就是,在这样的背景下,我们蚂蚁金服选择的Service Mesh主站落地演进方案。这个方案预期会在2019年初全面铺开。主站落地方案的实施原则,这是我们在过去半年的实践中,总结归纳出来的行为指导:符合远期规划:一定要有清晰的长期目标,明确的知道未来的大方向。避免走弯路,避免浪费投资,理想状态是计划中的每一步都可以为下一步奠定坚实的基础。即使因为某些原因不得已妥协或绕行,也应该清晰的知道后面应该如何回归,谢绝中途推倒重来——代价太高,无法承受。循序渐进:认清现实,如此之大的变革,一定是需要分步进行,不要心存一步登天的幻想,现实可行的方式是小步快跑。将整个过程拆解为若干个大步骤,每一步的工作量和复杂度都控制在一个可以接受的范围内,以保证每一步都简单方便,切实可行。有可操作性:在操作层面上,要有足够的弹性,即每个步骤中的工作内容,都应该是可以分批进行。以步步为营的方式,逐步扩大战果,杜绝一刀切。在接下来的演进路线中,大家将会体会到这三个原则在实际落地时的指导作用。这个图的信息量有点大,描述的是 Service Mesh 和 k8s 落地可能的多种演进路线。我们先从最下面开始看,这是当前蚂蚁金服主站大多数应用的现状:即应用"部署在非k8s上",应用也"不是Service Mesh形态"。 然后看最上面,这是我们期望的蚂蚁金服主站未来的应用终极形态:应用"部署在k8s上",应用也迁移到了"Service Mesh形态"。这里有个特别的地方,我们将Service Mesh形态细分为两种模式:Sidecar模式:只有Sidecar,没有控制平面,和外部系统的各种集成都是在Sidecar中直接进行。这是第一代的Service Mesh,Linkerd/Envoy都是如此,华为基于ServiceComb演进而来的mesher,新浪微博的Mesh,包括我们蚂蚁金服基于MOSN开发的用于取代多语言客户端的Mesh方案。Istio模式:有完善的控制平面,可以提供强大的控制能力,而且从数据平面分离,这是第二代的Service Mesh,典型如Istio和Conkduit/Linkerd 2.0。之所以将Service Mesh形态细分,是因为我们有着这样一个特殊背景:目前的原生Istio无法支撑我们蚂蚁金服的规模,因此在改进完善Istio之前,我们不得不暂时在Sidecar模式下短暂停留。另外一个原因就是考虑到存量应用的迁移,多一个Sidecar模式作为中间缓冲,会让整个迁移过程平滑很多。现在我们来介绍图中展示的四条演进路线:左边的路线1,思路是先将应用迁移k8s部署,再迁移到Service Mesh形态。这条路线的最大好处,是过程中每个阶段的绝大多数投资都将最终得以保留,因为符合k8s+service mesh的远期目标。右边的路线2,思路是跳过k8s,先迁移到Service Mesh形态,一路演进到Istio模式,然后最后迁移到k8s。中间的路线3,直接一步到位,这个路线是Istio默认的方式,或者说Istio根本没有考虑过迁移的问题,默认客户已经有完善的k8s,然后将改造好的应用直接部署在Istio上。这个路线对于蚂蚁金服主站的复杂场景,当然是不现实的。(补充:只是对蚂蚁金服主站不合适,对于大多数公司,规模不是那么巨大,也没有历史负担,也有k8s基础,完全可行。)还有一条特别的路线4,走位飘忽,先和路线2一样迁移到Sidecar模式,然后走回路线1,上k8s,再在有k8s支持的情况下继续演进到Istio模式。下面我们来详细分析各条演进路线的优劣和实施条件。演进路线2,和路线1的核心差别,在于:是先上k8s,还是先上Service Mesh。而且路线2是在非k8s条件下一路演进Service Mesh到我们期望的终极形态Istio模式,这意味着过程中和最终目标有非常大的偏移。演进路线2的好处,在于第一步非常的自然:没有k8s的限制,因此不依赖基础设施,实施方便。毕竟,k8s普及度是个大问题。在原有的侵入式框架的客户端SDK基础上,通过包裹一个proxy,重用原有SDK的能力,可以非常快速的得到一个基本可用的Sidecar。除了多一个proxy外,没有引入太多的新概念和新思想,符合现有开发人员/运维人员的心智,容易接受因此,路线2特别容易落地,可以快速达成短期目标,直接拿到Service Mesh的部分红利,如:多语言支持,方便类库升级等。但是,这个路线的问题在于再往后走,开始完善Service Mesh的功能以向Istio模式靠拢时,由于没有k8s的底层支持,因此不得不做大量的工作来提供类k8s的功能。尤其是Istio的非k8s支持,官方方案基本上只是一个demo,完全不具备生产可用性,要完善好,工作量很大。而关键点在于,这些投入,在迁移到k8s时,又因为和k8s提供的功能重复而被放弃。因此,结合我们前面的原则(符合远期规划,不浪费投资),路线2对蚂蚁金服主站落地是不合适的。演进路线4是一个非常特殊的路线,可以理解为路线1(先上k8s再上Service Mesh)的短期妥协版本。因为路线1的前提条件是要先大规模铺开k8s,将现有应用迁移到k8s之后再继续往Service Mesh演进,这对于还没有普及k8s的公司来说是一个非常高的门槛,很容易因此受阻而无法启动。因此,如果暂时不具备k8s条件, 又不想就此止步,那么选择路线2是唯一的出路。而上面我们分析过,路线2虽然能够在第一步快速拿到短期红利,但是由于偏离长期目标后续发展会有问题。怎么办?路线4可以是这种场景下的一个折衷选择:在k8s没有铺开之前,第一步沿路线2走,先吃下非k8s下Sidecar模式快速落地的红利。然后第二步避开非k8s下继续演进到Istio模式的大坑,切换到路线1,回归长期目标。好处非常明显:在k8s未铺开前,先往前迈进一步,避免就此卡壳。和路线2一样,第一步可以快速的拿到短期红利。后续转为路线1后,因为符合远期规划,因此后续演进不存在投资浪费的问题缺点就是存在少量的投资浪费,毕竟非k8s下的Sidecar模式还是有些工作内容在迁移到k8s之后会有改动。不过,这个改动不会太大,和拿到的红利相比还是值得的。路线4在操作时,存在一个变数:现有应用在向Sidecar模式的Service Mesh迁移,是需要一定时间的。有一种可能,就是在迁移过程中,k8s的普及开始了。这个变数的发生,取决于Sidecar模式的Service Mesh普及快,还是k8s的普及快。对路线4的分析结果:这是(k8s没有普及的)特殊时期的选择。在对四条可能的演进路线分析完成之后,我们来具体介绍蚂蚁金服的最终选择。坦言说,在过去半年中,我们的演进路线有几次摇摆和修订,今天我们公布的路线,和过去几个月中我们通过 meetup/技术大会/博客文章 等方式透露出来的方式会有一些变化。主要原因是在过去的这半年中,一方面我们对Sercice Mesh的认知更加深入,另一方面是蚂蚁金服的k8s背景也在变化。首先,在今年年初,我们确认Service Mesh大方向时,k8s还没有在蚂蚁金服普及,而且也没有明确的时间表。因此,我们在一番调研之后,选择了两条腿走路的方式:在非k8s环境下,以Sidecar模式先进行少量落地,主要是替换掉原有的多语言客户端 (拿短期红利)。开发SOFAMesh,集成MOSN到Istio,增加对多种RPC协议的支持,增加对RPC服务模式的兼容(为最终目标做准备 )在今年6月底的杭州第一届Service Mesh 线下 meetup 中,我们公布了 SOFAMesh 项目,我当时做了一个演讲 大规模微服务架构下的Service Mesh探索之路 ,有兴趣的同学可以去回顾一下我们当时的背景/需求/设计方案。大概在今年九月,我们完成了对非k8s下运行istio的深入调研,得出的结论是要实现这个模式需要非常多的工作。而且,我们对Service Mesh的认知也更加深刻,明确了通过Service Mesh将传统中间件能力向以k8s为代表的基础设施层下沉的战略方向。期间,内部也明确了k8s普及的大方向,因此,综合这两个重要输入,我们选择放弃继续在路线2上继续演进(即 istio on 非k8s)的想法。关于这一点,有兴趣的同学可以去阅读我在10月份QCon大会上的演讲内容 长路漫漫踏歌而行:蚂蚁金服Service Mesh实践探索 。最近,k8s普及的时间表再一次明确提前,蚂蚁金服将会在短时间内开启k8s的大面积普及。因此,我们的演进路线再一次发生变化。目前最新的演进路线将会是这样:当前还没有开始迁移的应用(处于演进路线图最下方),将按照路线1的方式进行迁移:先迁移到k8s,再迁移到Sidecar模式的Service Mesh。目前部分已经迁移的应用(路线2/4的第一步,非k8s部署的 Sidecar 模式),将沿路线4迁移,和路线1会师。由于应用众多,因此预计到 k8s + Sidecar模式 的迁移工作会持续比较长时间,在此期间,我们会同步完善Istio,和Istio官方一起合作来实现Istio对超大规模部署的支持。最后一步,迁移到最终目标(当然这一步的方案依然有很多待定内容,继续努力)需要强调的是:这个演进路线针对的是蚂蚁金服主站的特殊场景,并不具体普适性。大家可以在理解我们演进路线背后的思路和权衡方式之后,再结合自身的实际情况进行决策。比如,我们在UC落地时,由于UC有完善的k8s支持,而且目前落地的规模没那么夸张,因此是直接从"部署在k8s上" + “不是Service Mesh形态”,直接迁移到终态的。预计在金融云落实时,也会是如此,因为客户也不会有如此规模。总结:前面我们介绍了当应用程序向Service Mesh和K8s迁移时的几种可能的演进路线,分析了各条路线的利弊。并以蚂蚁金服主站为例,介绍了我们迁移的背景和演进路线的选择思路,希望能够帮助大家更好的理解Service Mesh的落地实践,以便在未来设计自家的落地方案时能有所参考。实现平滑迁移的关键前面给大家介绍了蚂蚁金服主站的Service Mesh演进路线,期间谈到要实现现有应用的平滑迁移。今天的第二个内容,将给大家介绍平滑迁移实现中的几个关键做法。首先,第一个关键是尽量保证迁移前后服务间网络互通。以向k8s迁移为例,在非k8s环境,典型的服务间访问方式是这样:每个服务向注册中心注册。客户端发起访问前,通过注册中心得到目标服务的实例列表信息,如IP地址/端口等在向k8s迁移的过程中,我们的做法是保证k8s内外网络打通,即服务的IP地址(在k8s中是pod ip)是可以相互直接访问的。基于这个前提,服务在迁移到k8s的过程中,原有的服务注册/服务发现/发起请求等逻辑都无需修改,是不是在k8s内,是不是pod ip,对原有服务化体系完全是透明的。因此,向k8s的迁移可以做到对业务应用非常的平滑,基本感知。透明拦截在迁移过程中,可以起到非常关键的作用。以Service-A要访问Service-B,在应用向Sidecar模式的Service Mesh迁移前后,会有有四种排列组合场景:Service-A和Service-B都没有迁移到Serive Mesh:此时请求会直接从Service-A发送到Service-B,称为直连,这是应用在开始迁移到Service Mesh之前的标准工作方式。Service-A已经迁移到Service Mesh,Service-B还没有:此时Service-A发出来的请求,会被劫持,然后发送到和Service-A一起部署的Sidecar(称为Outbound Sidecar),此时链路中只有一个Sidecar,称为(客户端)单跳。Service-B已经迁移到Service Mesh,Service-A还没有:此时Service-A发出来的请求,在到达Service-B时,会被劫持到和Service-B一起部署的Sidecar(称为Inbound Sidecar),此时链路中也只有一个Sidecar,称为(服务器端)单跳。Service-A和Service-B都迁移到Serive Mesh:此时Service-A发出来的请求,会被两次劫持,分别进入Outbound Sidecar和Inbound Sidecar,此时链路中有两个Sidecar,称为双跳。这是Istio的标准工作模式,也是我们迁移完成之后的最终工作模式。在这四种场景中,所有的网络请求,请求报文都是完全一致的,即不管是否被劫持到Sidecar,对请求报文都没有影响,也就是对发出请求报文的客户端和接受请求报文的客户端都是透明的,完全无感之。因此,在迁移过程中,可以单个服务逐个迁移,甚至服务的单个实例逐个迁移,而无需修改应用本身。在展开第三个关键点之前,我们来探讨一下:在Service Mesh时代,理想的客户端应该是什么样子?图中我们列举了一个传统的侵入式框架的客户端所包含的功能,在侵入式框架中,大部分的功能都是由客户端实现,因此会包含非常多的功能,如服务发现、负载均衡等基本功能,加密、认证、路由等高级功能。在应用迁移到Service Mesh之后,这些功能都下沉到Service Mesh中。因此,Service Mesh下的客户端可以进行大幅度的简化,成为一个新的轻量级客户端。对于这个轻量级客户端,我们希望可以尽可能的做的轻薄通用:实现简单,不管哪个编程语言都可以做到轻松实现,因此跨语言就方便了。而且越简单之后升级的可能性就会越少,以避免升级客户端。那我们来继续看,这个轻量级客户端里面最后还能剩下什么内容?图中列出了三个,其中最重要的,也是必不可少的是目标服务的标识,即无论如何简化,最低限度应该告之要访问谁吧?然后是序列化,对于RPC类肯定需要提供编解码功能,不过对于HTTP/REST类很多语言直接内置了标准实现。然后链路追踪,需要做一点工作来传递诸如SpanID之类的参数,同样这块也有可能通过自动埋点来实现。因此,最理想最单薄的客户端,可能只保留最后一个信息:目标服务的标示。在侵入式框架下,目标服务的标示是和服务注册/服务发现是直接关联的,这个标示通常都是服务名,通过服务发现机制实现了一个服务名到服务实例的寻址方式。在Service Mesh机制下,由于服务发现机制被下沉到Service Mesh中,因此只要底层Service Mesh能支持,这个目标服务的标示可以不必拘泥于服务名。那么,问题来了,对客户端来说:最简单,最通用,支持最广泛的寻址方式是什么?是DNS!在我们的迁移方案中,我们考虑引入DNS寻址方式。除了前面说的DNS是支持度最好,使用最普遍的寻址方式,在所有的编程语言和平台上都可以支持之外,我们还希望将DNS寻址方式作为未来产品的长期方向:在SOFAMesh和SOFAMosn中,我们已经基于名为x-protocol的方式实现了DNS通用寻址方式,用来解决Dubbo/HSF/SOFA等传统SOA服务模型在Service Mesh下的访问问题 (备注: 具体内容请见我的博客文章 SOFAMesh中的多协议通用解决方案x-protocol介绍系列(1)-DNS通用寻址方案 )未来在我们的serverless产品中,我们希望可以为运行其上的Function提供DNS寻址支持。可能还会有其他更加广泛的使用场景。因此,在我们的演进过程中,对于客户端SDK,我们有这样一个思路:一方面简化原有的SDK,去除和Sidecar重复的内容(满足短期需求)。另一方面,考虑到必然有一次客户端SDK的更换过程,那么我们希望在简化的同时引入基于DNS的通用寻址方式,以便在未来的后续迁移和功能扩展中可以依托这个机制来实现 (符合长期目标)图中描述的是在Service Mesh下,客户端通过域名来指定要访问的目标服务,然后通过DNS解析机制来串联底层的服务注册/DNS记录更新/透明劫持传递原始信息/Sidecar查找路由目标等详细实现机制。这里仅做简单示意,我就不详细展开了。在接下来的内容中,我的同事,来自UC基础研发部的 龙轼 同学,将为大家详细的展开DNS寻址方案的细节实现。DNS寻址方案的演进大家好,我是来自UC基础研发部的龙轼。 感谢小剑老师给我们介绍了蚂蚁和UC共建的Service Mesh的演进路线和实现平滑迁移的关键。接下来由我来向大家分享下实现平滑迁移的关键中的DNS寻址方案的演进。大家可以看上面的所示的DNS寻址方案的演进,我们先了解下各个服务寻址方案的背景。从 SOA 的寻址,到 Kubernetes 的寻址,然后再到 Istio 的寻址,最后是我们的 SOFAMesh 的DNS寻址方案。它们的寻址方案有什么不同,我们将一一分析它们的细节和总体寻址方案的演进路线。现在大家可以先来看下 SOA 架构下基于服务注册和服务发现的寻址。我们可以看到图中的 SOA 其实是单进程多接口的,依赖于 SOA 的服务注册与服务发现的。接下来我们看下 Kubernetes 的 DNS 寻址方式,它的寻址方式其实是通过DNS 的。从图中我们可以看到部署到K8S 上面的userservice 服务会生成一条DNS记录指向K8S 的ClusterIP。我们在 Pod 里面发起请求时通过 DNS 的 SearchDomain 域名补全规则就会从 DNS 里面查询得到ClusterIP,我们可以看出 Kubernetes 的寻址方案是单进程单接口的。看完 Kubernetes 的服务发现之后我们继续来看 Istio 的服务发现。从图中我们可以看出之前的流程都和 K8S 一脉相承,不同的地方在于 Istio 里面有个 SideCar 它把ClusterIP 拿到之后根据 ClusterIP 从 VirtualHost 里面匹配到 Rule 规则 转发给目标的 Pod 地址。最后我们来看下 SOFAMesh 的 DNS 通用寻址方案。根据我们之前分析的 SOA 寻址方案和 Kubernetes 寻址方案,我们可以看出如果我们的微服务不经过拆分和改造想上 Service Mesh 的话我们需要支持SOA之前的那种单个Pod 多个接口的。从图中看就是我们需要支持 com.alipay.userservice.interface1, com.alipay.userservice.interface2 这些接口解析到 ClusterIP, 我们知道k8s 中的service 是不支持的。那该如何是好,我们只能在DNS 上做文章修改DNS的记录来实现这一功能。确定了这一方案之后我们来看下我们设计的DNS寻址方案实现细节。大家看这张图:我们用 CRD 定义了一个 RPCService 和之前的 Service 有同样的 selector 的标签。然后用 RPC Service Controller 对 RPCService 做 Watch,当 RPCService 有更新的时候我们就把接口就是上述的 com.alipay.userservice.interface1 的记录写入 CoreDNS 里面。而 interface 是通过 Pod 里面的 Register Agent 来获取 Dubbo 里面暴露的。好的,说完这个方案的细节之后。我们可以看出其实其他的问题都不大,但是要更新DNS的这个我们需要支持。一开始我们 K8S 集群里面是用 Kube-DNS 来做 DNS 寻址的,但我们看这张 Kube-DNS 的架构图。可以看出修改它成本是比较大的,而且所有的DNS 都在同一个域里面,这个风险系数很高。 如果一旦修改错误势必会影响到之前的 k8s 的 service,导致线上的故障。这个时候我们跟踪到社区的 CoreDNS 项目,我们来看下 CoreDNS 的具体的架构。 它采用作为 Web 服务器 Caddy 的服务器框架,延用了Caddy 中的插件机制,大大的增加了 CoreDNS 的灵活性。 它的插件机制也特别简单,把所有的插件注册进一个Map里面来,在调用的时候从Map拿出他们有共同接口的函数。有兴趣的同学可以看下 Caddy 的插件代码实现。它的 DNS 协议库采用是由 Google 工程师 Meikg 开发的 DNS 库,他同时也是 SkyDNS 的开发者。后端可以采用 UDP/TCP、TLS 或者 gRPC 作为后端数据查询。上面有个Google工程师用 gRPC 做了一个 CoreDNS 插件的后端数据查询例子,有兴趣的同学可以看下。OK,既然 CoreDNS 的 Plugins 这么强大,我们可不可以用它来实现我们刚才说到的 Renew DNS的机制。 答案很显然是可以。我们看下上面的图,实现CoreDNS 的插件很简单,只需要继承上面的接口就可以了。 CoreDNS 官网有具体的教程在教我们怎么写一个插件。这个就不具体的展开了。到了我们最关键的点了:我们应该怎么更新我们的DNS。其实这点 CoreDNS 社区里面已经有人提出需求用 REST API 的形式提供更新 DNS 的接口。互联网任务工程小组也早在 rfc2136 定义了标准的 DNS UPDATE。 Google Cloud 和AWS 都有相应的实现。CoreDNS 社区其实已经把接口实现了,但是后端存储是基于file 的,数据没有落地。 蚂蚁和UC 这边扩展了 ETCD 插件的接口,把对应 DNS UPDATE 接口给实现了,实现 DNS 数据写入ETCD 里面。从图中我们可以看到 rpc.cluster.local 这个域 和 k8s 域 cluster.local 是在不同的插件链上的。这样在k8s域中没有 dynapirest 插件,我们就不能对k8s域中的DNS进行更新,这样就把之前Kube-DNS改造之后会对k8s域里面造成影响给去除了,更加的安全。我们可以看下 CoreDNS 后端存储的接口,其实和我们之前对数据操作的接口是没有什么差别的。目前 CoreDNS 的 DynAPI 还在主库代码没合并的状态。之后 DynAPI 这个项目会独立成一个插件项目。我们可以看下 CoreDNS 社区的 DynAPI 插件进展。OK,我们来看下我们的DynAPI 实现DNS 更新的一个效果。从图中我们可以看出 record.json 里面的一个域名的更新。通过 DynAPI 我们成功把 record.json 的DNS 记录给更新进去并且dns正常工作了。到现在我们通过CoreDNS 的插件就把DNS 更新的需求给解决了。其实CoreDNS 官网还有许多有趣的插件,可以丰富 CoreDNS 的功能和提升 CoreDNS 的性能。 大家可以看下中间的 autopath 插件,他把我们多次的在 searchdomain 拼凑的 DNS 记录的查询在在服务器上给实现了。 避免了多次的 Client 端和 Server 端的数据交互。有兴趣的同学可以看下 A-Deep-Dive-into-CoreDNS-2018。我们把 CoreDNS 的功能开发完了,上线的话很多人关注它的性能。 我们这边做了一个简单的性能测试,可以看出 CoreDNS 和 Bind DNS 这种现在比较通用的DNS的性能还是有点差距的。但是,我们通过上面的图可以看到在一定的QPS 下,CoreDNS 的延时是很低的。 我们可以看到所有的延时都落在4ms 之内。为了解决QPS的问题,我们通过 Kubernetes 的 HPA 给 CoreDNS 进行横向的扩展。一开始我们只是通过CPU的维度给 CoreDNS 扩展,但发现波动有点大。 之后我们切换成通过QPS的维度来进行扩容。CoreDNS 将会在Kubernetes 1.13 之后成为 Kubernetes 的默认的DNS服务。我们将会紧跟社区实施我们的方案并且反馈给社区。DNS寻址方案的后续规划我们再来看下我们后续的一些规划。可以看到我们的 DynAPI 其实在安全上还是有欠缺的。我们后续会把 HTTP 加强成 HTTPS 协议来增强 DynAPI 的安全性。还有如果我们 CoreDNS 的后端变化的更新的 Watch 由于 Watch的范围过大的话,会返回过多的数据。这样会影响到 Watch 的性能,CoreOS 在 ETCD3.2 增加了proxy 可以让我们根据不同的 ETCD KeySpace 去Watch,这样大大的提高了Watch的性能。最后一个,我们建议在创建 Kubernetes 集群的时候把 idc 的信息给带进Kubernetes的后缀域名中。这样我们之后可以通过 kubernetai 插件把不同的 Kubernetes 集群的域名进行整合通过本 IDC 缓存提高跨 IDC DNS 的访问速度。总结最后我们总结下,总体方面小剑老师给我们讲了蚂蚁金服主站 Service Mesh 的渐进式演进路线和实现平滑迁移的几个关键。 具体细节方面我们通过CoreDNS 的单点突破解决了 SOFAMesh 的 DNS 寻址的问题。感谢大家,希望这次演讲能让大家有所收获。视频回放与资料下载地址:https://tech.antfin.com/activ…(点击阅读原文可跳转到该网页)相关链接:SOFA 文档: http://www.sofastack.tech/SOFA: https://github.com/alipaySOFAMosn:https://github.com/alipay/sof…SOFAMesh:https://github.com/alipay/sof…本文作者:平生栗子阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

December 11, 2018 · 3 min · jiezi