说说 ip 地址被墙和 DNS 污染

本贴最后更新于 372 天前,其中的信息可能已经渤澥桑田

为啥我会突然写这个呢?因为我买的国外服务器两台都连接不上,起初我是想买一台服务器作为代理,就不用使用 vpn 了。结果刚买了一直连接不上服务器,我就查了到底是啥原因。

经过查询,我知道可能是 ip 被墙了。我通过第三方网站 ping 试了试

屏幕截图 20230425222029.png

就是这样国外可以 ping 通,但是国内 ping 不通。可以判断一定是 ip 地址被墙了。

ip 到底怎么被墙?我提出了这个疑问。

我继续查询资料,查找了 GFW 的主要功能:

连接重置:

当检测到某个 TCP 连接的 IP 包中包含非法关键词时,伪造 RST 包发给 TCP 连接两端,导致连接断开。缺点是只对非加密的 TCP 数据有效。优点是维护方便。

对策很简答,使用加密数据传输就可以了。VPN,shadowsocks,SSH 全部是基于这个原理翻墙的。如果没有其他的手段做辅助,单单使用 https 就可以绕过。

IP/端口封锁

就是 IP 封锁,简单暴力。缺点是 IP 封锁需要部署在骨干路由器上,能够封锁的 IP 数量有限制。优点是封锁很彻底。对策是代理服务器,不需要对数据加密就可以绕过 IP 封锁。但是由于连接重置的存在,显然还是需要加密。

DNS 污染 :

在用户进行某些特定网站的 DNS 查询时,抢先发送伪造的 DNS 结果,导致 DNS 解析到虚假的 IP 地址从而阻止用户访问非法资源。

优缺点不明。

对策是使用境外的代理服务器进行远程 DNS 查询,从而获取到正确的 IP。单纯把 DNS 设置为境外的 DNS 服务器是无效的,因为只要是符合条件的 DNS 查询 UDP 包都会被投毒

Amazon 的云,linode,digitalocean 等国人喜欢用的 VPS,已经被重点照顾,大量 IP 被封。这些 IP 应该是被重点照顾的,有时自己新搭建的 VPN 服务器,几天就会被封,期间并没有怎么用。(我使用的就是其中一家)

为啥 ping 不通油管?

屏幕截图 20230425230414.png

我用 nslookup 命令去解析发现 github 给出的 ip 地址是正确的,给出的油管 ip 地址是错误的

屏幕截图 20230425234934.png

我换了两个其他的 DNS 域名解析器来

屏幕截图 20230426000209.png

发现给出两个 ip 地址还是错误的。说明 DNS 污染确实存在。

这里复习一下 DNS 域名解析的过程

什么是 DNS 域名解析

  • 我们首先要了解域名和 IP 地址的区别。IP 地址是互联网上计算机唯一的逻辑地址,通过 IP 地址实现不同计算机之间的相互通信,每台联网计算机都需要通过 IP 地址来互相联系和分别。
  • 但由于 IP 地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的 IP 地址,这样对于我们日常工作生活访问不同网站是很困难的。基于这种背景,人们在 IP 地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比 IP 地址更易被识别和记忆,逐渐代替 IP 地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。
  • 域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的 IP 地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成 IP 地址。而 DNS 域名解析承担的就是这种翻译效果。例如:把 www.baidu.com 这个域名翻译成对应 IP 220.181.38.251

DNS 域名解析过程

  • 当我们在浏览器地址栏中输入 www.baidu.com 时,DNS 解析将会有将近 10 个步骤,这个过程大体大体由一张图可以表示:

屏幕截图 20230426000817.png

屏幕截图 20230426000757.png

域名解析流程

  • 整个过程大体描述如下,其中前两个步骤是在本地电脑内完成的,后 8 个步骤涉及到真正的域名解析服务器:
    1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的 ip 地址,如果缓存中有,这个解析过程就结束。
    2. 如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的 DNS 解析结果。其实操作系统也有一个域名解析的过程,在 windows 中可以通过配置 C:\Windows\System32\drivers\etc\hosts 文件来设置,用户可以将任何域名解析到任何能够访问的 IP 地址。
    3. 前两个过程无法解析时,就要用到我们网络配置中的"DNS 服务器地址"了。客户端通过浏览器访问域名为 www.baidu.com (http://www.baidu.com) 的网站,发起查询该域名的 IP 地址的 DNS 请求。该请求发送到了本地 DNS 服务器上。本地 DNS 服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地 DNS 服务器还要向 DNS 根服务器进行查询。每个完整的内网通常都会配置本地 DNS 服务器(例如你是通过学校连接互联网的一般是你学校的 DNS 服务器,如果你是在小区连接互联网的一般是网络提供商比如电信,联通的 DNS 服务器,DNS 服务器通常不会太远)大约 80% 的域名解析到这里就完成了。
    4. 本地 DNS 服务器向根服务器发送 DNS 请求,请求域名为 www.baidu.com (http://www.baidu.com) 的 IP 地址。
    5. 根服务器经过查询,没有记录该域名及 IP 地址的对应关系。但是会告诉本地 DNS 服务器,可以到顶级域名服务器上继续查询,并给出顶级域名服务器的地址。如.com、.cn、.org 等,全球只有 13 台
    6. 本地 DNS 服务器向 顶级 DNS 服务器发送 DNS 请求,请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。
    7. 顶级 DNS 服务器收到请求后,不会直接返回域名和 IP 地址的对应关系,而是告诉本地 DNS 服务器,该域名可以在 baidu.com 域名服务器(Name Server 服务器)上进行解析获取 IP 地址,并告诉 baidu.com 域名服务器的地址。
    8. 本地 DNS 服务器向 baidu.com 域名服务器发送 DNS 请求,请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。
    9. baidu.com 服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应映射关系表,并将 IP 地址返回给本地 DNS 服务器。
    10. 本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。

参考资料:

**nslookup 命令模拟 DNS 域名解析过程 Quick Start

  • 网络
    128 引用 • 177 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    132 引用 • 3647 回帖 • 1 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 596 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 49 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 349 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 178 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 131 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 906 回帖 • 192 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 94 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 445 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 113 回帖 • 310 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 497 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 40 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 3 关注
  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    17 引用 • 6 回帖 • 27 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 250 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 292 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    314 引用 • 1667 回帖 • 3 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 342 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 462 回帖 • 1 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 544 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 5 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 114 关注