”老虎,在吗?“
“在的!怎么啦?”
“我们的站点又不能访问了!”
“我看看。呃……我可以正常访问啊!土豆(服务器)……咱们的土豆(服务器)也很新鲜(正常)啊!“
“我们的都不行!很多同志都反馈不能访问!”
“呃……那我就明白了——DNS被污染了!”
作为一只负责任的产品汪,即便是在疫情期间,也是要认真为客户提供服务的。上面的对话,就是老虎经常面对的日常之一。
而作为经典的问题之一,DNS污染造成的站点问题,常常困扰着用户、运维、研发、PM……等等一堆人。不仅仅是用户可能不了解这个经常出现的网站访问“拦路虎”,有不少运维/研发的同学也不是太了解这个问题。
不了解 → 一脸懵逼 → 无法处理 → 无能狂怒 → 泄愤/甩锅——经典的恶性循环链条。
了解 → 一目了然 → 愉快处理 → 顺利下班——这才是我们应有的姿势。
老虎今天写这篇文章的目的,就是为了帮大家了解和处理这个问题。接下来,就跟着老虎涨姿势吧。
什么是DNS?
DNS,全称为Domain Name System,也即“域名服务系统(协议)”。这玩意儿是做什么的呢?
鉴于大部分人都不是网络工程专业出身,也不常和网络工程打交道,老虎觉得真没有必要用过于专业的方式来给大家讲解。专业版本的讲解,大家可以咨询度娘或者其它大神。老虎打算用通俗的方式来演绎DNS的日常生活。
我们来举一个例子。
当我们想给一个人打电话,却又不知道这个人的电话号码时(比如,有一辆车停在了你的私人车位上,你找车主挪车时)。我们往往会求助于114咨询服务。
我们知道的,是这辆车的车牌号。而车主在车管局登记的信息里,车牌号又和电话号码进行了绑定。114还能获取这些信息。
于是,当我们告知114车牌号的时候,我们常常可以获取车主的电话号码,于是,我们就联系到了车主本尊。
你是不是隐隐约约感到了114的角色并不简单?
嗯,有内味了。
在这个故事里面,车主就是我们想要访问的站点,更准确的说,是想要访问的站点的具体IP地址。车牌号就是我们知道的域名。
一个正常使用的域名,是需要进行解析绑定和备案的。这就类似于车管所要求车主等级车牌号和车主信息并绑定。只不过,实际执行的是网监局和运营商。
114就是我们的DNS。
114可以获取/保存着车牌号和车主绑定的信息,也就是保存着域名和实际IP地址。当我们询问的时候,她就风轻云淡地看上一眼自己的小本本,然后告诉我们要找的车主电话(网站IP地址)到底是多少。
我们拨打电话(访问站点IP地址),电话联通(访问成功)。
这就是DNS的主要任务,其它的类似品还有电话黄页、导购目录之类的玩意儿。
DNS污染又是什么?
前面的小例子中,我们说道,114(DNS)是先“风轻云淡”地看了一眼自己的小本本,才告诉我们结果的。“小本本”其实就是指DNS服务器的地址缓存。
网络中分布着大量的DNS服务器,这个也很好理解,就好比是洛阳移动、郑州移动、南阳移动、新乡移动……一个地区都有自己的移动公司(DNS服务器)来为本地提供服务。
DNS服务器集群的行为模式和移动公司的套餐变更也很像。河南移动要求下属公司推出新产品,会下发一份文件(就是“小本本”),洛阳移动拿到之后,会更新自己的“小本本”。河南移动就是洛阳移动的上级DNS服务器,中国移动总公司就是根服务器。根服务器、上级服务器的变更,会影响下级服务器的内容。但是,和行政工作一样,这都有一个效率问题。根据不同级别的变更,上级服务器的变更向下影响有一个时间差,即时至2-24小时不等。这就是DNS变更之后,往往不会立即生效,需要等待的原因。
DNS污染,就是有人故意在这个“小本本”上面乱涂乱画。只不过,这极有可能是运营商的行为。当然,也有可能是CNNIC的行为。这个,咱们按下不谈。
DNS被污染时,有这样的一些表现:
- 标准DNS污染,以不让访问为目的。比如,www.baidu.com的真实目标IP地址是1.1.1.1,DNS的小本本上给你改成“查无此人”,那么,当你访问的时候,你得到也就是个“查无此人”的结果,也就访问不到了。
- DNS劫持,这玩意儿有另一个词儿描述——截胡。还是以上面的例子,把对应的记录改成阿里巴巴的2.2.2.2,当你访问的时候,你会自然而然地被跳转到阿里巴巴的站点上,并且你还不知道发生了什么。
- 一般情况下,DNS污染发生的时候,你会发现直连IP或者Ping IP地址都会有反应,但就是直接访问域名不会有反应或者有错误反应。这就是DNS污染事件和常规服务器问题的重要区别。
DNS污染该怎么处理?
关于DNS污染事件的处理,我们需要分几个方面进行讨论:
个人用户
作为普通的个人用户,当发现自己希望访问的站点突然间就不能访问了,或者实际跳转到的是奇怪的站点时,就需要调整自己的DNS服务器设置,或者修改Hosts文件了。
鉴于Windows 10是目前的主力操作系统之一,也是大家最常用的操作系统。本文就详细介绍一下,如何在Windows 10下进行相关的配置。
DNS设置-Windows 10部分
- 找到任务栏中的网络链接图标,然后使用鼠标右键点击该图标,在出现的对话框中选择”打开网络和Internet设置“一项。
- 在打开的对话框中,选择“更改适配器选项”一项。
- 在弹出的“网络连接”文件夹中,选择自己正在使用的网卡图标。本文以机载无线网卡为例。然后,打开右键菜单,选择“属性”一项。
- 在打开的属性面板中,选择IPV4协议,并点击“属性”按钮。
- 选择“使用下面的DNS服务器地址”,并填写自己想要使用的DNS服务器地址。我个人喜欢使用DNSPod提供的Public DNS服务器。
填写完毕后,点击”确定“按钮,并关闭所有对话框,设置完毕。然后,你就可以试试能不能打开目标站点了。国外站点不一定适用,因为有GFW(The Great Fire Wall,国家防火墙)存在。
DNS设置-路由器部分
前面说的,也就是设置计算机自己的DNS解析指向。但是,作为现代社会的一员,同时拥有众多的设备,一个一个设置,岂不是很麻烦?更何况,部分设置可能还找不到设置项的位置。那么,对自己使用的路由器进行设置,一次设置,全部通用,岂不美哉?
路由器的设置思路,也是修改所指向的DNS服务器地址。路由器厂家众多,就不一一说明了。我们说一下通用的设置位置。
一般情况下,在登录路由器的设置后台页面后,找寻“网络设置”或者“WAN口设置”,最差也在“高级设置”之中,就找DNS服务器一项,然后,修改之,保存即可。
暂时还没有遇到过不提供本设置项的路由器品牌。
DNS污染解决-修改Hosts文件
关于修改Hosts文件,我个人不提倡使用。
因为,麻烦。并且,能解决的问题真的不多。
不过,有兴趣的同学还是可以看一下下面的链接,学习一下。我就不再赘述了。同时,感谢下文作者。
DNS污染解决-运营商部分
当我们设置了自身的DNS服务器,并且确认我们的项目、生产服务器环境、网络设置真的没有任何问题之后,如果还是不能访问,那就需要找我们的服务器、尤其是域名解析服务所在的运营商好好聊聊了。电话沟通一下总是最有效的。
这一小节看似废话,但是,确实是最终的解决手段,也是最有效的解决手段之一。
DNS污染解决-最无奈的方法
这一点,是提给运维的兄弟的。当你发现实在是无能为力的时候,不妨和客户商量一下,修改域名解析策略,甚至使用多域名跳转。一般情况下,主动进行域名解析设置变更后,会逐步推送到各级DNS服务节点,DNS污染的情况也会随之好转。但是,被运营商或者某机构“特别关照”的DNS污染这种方案可能也无法解除。
结语
以上,我们简单讨论了一下DNS污染的相关内容。老虎衷心希望,能够帮到正在阅读本文的你。时间有限,精力有限,水平也有限,就写到这里吧。
喜欢的,可以留言交个朋友。嘛,请老虎喝一杯咖啡也是极好的~
不喜欢的,嘛,请安静移步离开,咱们相忘于江湖。
就这样吧。