什么是DNS污染
DNS污染(DNS cache pollution),也被称为DNS劫持,是一种网络攻击方式。其中,攻击者向DNS服务器发送虚假的响应来修改DNS缓存,从而误导用户访问到错误的网站。这种现象也常在某些国家或地区的互联网审查系统中出现,如我们的防火长城(GFW)。
当我们在访问网站比如 https://raw.githubusercontent.com 时,系统会先把域名进行解析成ip地址,解析的过程就是先看本地有没有缓存,没有就一级一级向上查找,其中因为某些原因,就会导致我们有时访问Github或者Google的时候返回的ip地址是错误的,这就是DNS污染
污染后导致的问题
如ping 出现错误
ping raw.githubusercontent.com
这也就导致了我在前端开发使用nuxt搭建的时候的报错
pnpm dlx nuxi@latest init demo
Error: Failed to download template from registry: Failed to download https://raw.githubusercontent.com/nuxt/starter/templates/templates/v3.json: TypeError: fetch failed
如何解决
1.手动配置dns
将ipv4和ipv6的DNS手动进行配置,下表是根据我自己的测试速度排行(不同地区不同带宽延迟不同,建议自己测试一遍)
| DNS服务商 | IPV4 首选DNS服务器 | IPV4 备选DNS服务器 | IPV6 首选DNS服务器 | IPV6 备选DNS服务器 |
| ———- | ———————- | ———————- | ———————- | ——————– |
| 阿里 | 223.5.5.5 | 223.6.6.6 | 2400:3200::1 | 2400:3200:baba::1 |
| 腾讯 | 119.29.29.29 | 182.254.116.116 | 2402:4e00:: | 2402:4e00:1:: |
| 百度 | 180.76.76.76 | | 2400:da00::6666 (超时) | |
| Cloudflare | 1.1.1.1 | 1.0.0.1 | 2606:4700:4700::1111 | 2606:4700:4700::1001 |
| google | 8.8.8.8 | 8.8.4.4 | 2001:4860:4860::8888 | 2001:4860:4860::8844 |
| 114 DNS | 114.114.114.114 (超时) | 114.114.115.115 (超时) | | |
右下角网络右键 -> 打开”网络和 Internet”设置 -> 更改适配器选项 -> 选择你的wifi或者以太网右键 -> 属性 -> 分别配置 Internet 协议版本4 (TCP/IPv4)
和 Internet 协议版本6 (TCP/IPv6)
安装上面的表选择一个,你也可以自己ping一下找到延迟最低的那个
对于经常使用Github,可以去下载 https://switchhosts.vercel.app/zh
然后添加一个hosts
https://raw.hellogithub.com/hosts