You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
26 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="x-dns-prefetch-control" content="on"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta name="renderer" content="webkit"><meta name="force-rendering" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="HandheldFriendly" content="True"><meta name="mobile-web-app-capable" content="yes"><link rel="shortcut icon" href="https://hans362-img.oss.0vv0.top/favicon.ico"><link rel="icon" type="image/png" sizes="16x16" href="https://hans362-img.oss.0vv0.top/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="https://hans362-img.oss.0vv0.top/favicon-32x32.png"><link rel="apple-touch-icon" sizes="180x180" href="https://hans362-img.oss.0vv0.top/apple-touch-icon.png"><link rel="mask-icon" href="https://hans362-img.oss.0vv0.top/safari-pinned-tab.svg"><title>对抗校园网 DNS 污染,我有妙招 | Hans362 &#39;s Blog</title><meta name="keywords" content="路由器, DNS, 校园网, Hans362"><meta name="description" content="最近给寝室接入了学校网络信息中心免费提供的 1Gbps 有线网络,这确实是我迄今为止使用过的最奢华的网络环境,尤其是把 WSL 软件源更换成 SJTUG 镜像站后,能够以接近 1Gbps 的速率更新软件包,体验极度舒适。 然而某天早上7:30当我试图打开 Bilibili 时Chrome 浏览器却提示 DNS_PROBE_FINISHED_NXDOMAIN手机客户端也加载失败。通过查阅校内"><meta property="og:type" content="article"><meta property="og:title" content="对抗校园网 DNS 污染,我有妙招"><meta property="og:url" content="https://blog.hans362.cn/post/how-i-fight-against-campus-dns-pollution/"><meta property="og:site_name" content="Hans362 &#39;s Blog"><meta property="og:description" content="最近给寝室接入了学校网络信息中心免费提供的 1Gbps 有线网络,这确实是我迄今为止使用过的最奢华的网络环境,尤其是把 WSL 软件源更换成 SJTUG 镜像站后,能够以接近 1Gbps 的速率更新软件包,体验极度舒适。 然而某天早上7:30当我试图打开 Bilibili 时Chrome 浏览器却提示 DNS_PROBE_FINISHED_NXDOMAIN手机客户端也加载失败。通过查阅校内"><meta property="og:locale" content="zh_CN"><meta property="article:published_time" content="2022-10-15T04:42:17.000Z"><meta property="article:modified_time" content="2025-04-11T10:35:15.356Z"><meta property="article:author" content="Hans362"><meta property="article:tag" content="路由器"><meta property="article:tag" content="DNS"><meta property="article:tag" content="校园网"><meta name="twitter:card" content="summary_large_image"><link rel="stylesheet" href="/css/style/main.css"><link rel="stylesheet" id="hl-default-theme" href="https://blog.hans362.cn/npm/highlight.js@10.1.2/styles/atom-one-light.css" media="none"><link rel="stylesheet" id="hl-dark-theme" href="https://blog.hans362.cn/npm/highlight.js@10.1.2/styles/atom-one-dark.css" media="none"><script src="/js/darkmode.js"></script><link rel="dns-prefetch" href="https://analytics.0vv0.top"><link rel="preconnect" href="https://hans362-img.oss.0vv0.top"><meta name="generator" content="Hexo 7.1.1"><link rel="alternate" href="/atom.xml" title="Hans362 's Blog" type="application/atom+xml"></head><body><div class="app-shell-loader">加载中...</div><div class="container" tabindex="-1"><header><div class="header__left"><a href="/" class="button"><span class="logo__text">Hans362 &#39;s Blog</span></a></div><div class="header__right"><div class="navbar__menus"><a href="/" class="button"><div class="navbar-menu">首页</div></a><a href="/archives/" class="button"><div class="navbar-menu">归档</div></a><a href="/tags/" class="button"><div class="navbar-menu">标签</div></a><a href="/bangumi/" class="button"><div class="navbar-menu">追番</div></a><a href="/links/" class="button"><div class="navbar-menu">友链</div></a><a href="/about/" class="button"><div class="navbar-menu">关于</div></a><a href="/atom.xml" class="button"><div class="navbar-menu">RSS</div></a></div><a href="/search/" class="button"><div id="btn-search"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="24" height="24" fill="currentColor" stroke="currentColor" stroke-width="32"><path d="M192 448c0-141.152 114.848-256 256-256s256 114.848 256 256-114.848 256-256 256-256-114.848-256-256z m710.624 409.376l-206.88-206.88A318.784 318.784 0 0 0 768 448c0-176.736-143.264-320-320-320S128 271.264 128 448s143.264 320 320 320a318.784 318.784 0 0 0 202.496-72.256l206.88 206.88 45.248-45.248z"></path></svg></div></a><a href="javaScript:void(0);" rel="external nofollow noreferrer" class="button"><div id="btn-toggle-dark"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg></div></a><a href="#" class="button" id="b2t" aria-label="回到顶部" title="回到顶部"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="32" height="32"><path d="M233.376 722.752L278.624 768 512 534.624 745.376 768l45.248-45.248L512 444.128zM192 352h640V288H192z" fill="currentColor"></path></svg> </a><a class="dropdown-icon button" tabindex="0"><div id="btn-dropdown"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="24" height="24" fill="none" stroke="currentColor" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round"><path fill="currentColor" d="M3.314,4.8h13.372c0.41,0,0.743-0.333,0.743-0.743c0-0.41-0.333-0.743-0.743-0.743H3.314c-0.41,0-0.743,0.333-0.743,0.743C2.571,4.467,2.904,4.8,3.314,4.8z M16.686,15.2H3.314c-0.41,0-0.743,0.333-0.743,0.743s0.333,0.743,0.743,0.743h13.372c0.41,0,0.743-0.333,0.743-0.743S17.096,15.2,16.686,15.2z M16.686,9.257H3.314c-0.41,0-0.743,0.333-0.743,0.743s0.333,0.743,0.743,0.743h13.372c0.41,0,0.743-0.333,0.743-0.743S17.096,9.257,16.686,9.257z"></path></svg></div></a><div class="dropdown-menus" id="dropdown-menus"><a href="/" class="dropdown-menu button">首页</a> <a href="/archives/" class="dropdown-menu button">归档</a> <a href="/tags/" class="dropdown-menu button">标签</a> <a href="/bangumi/" class="dropdown-menu button">追番</a> <a href="/links/" class="dropdown-menu button">友链</a> <a href="/about/" class="dropdown-menu button">关于</a> <a href="/atom.xml" class="dropdown-menu button">RSS</a></div></div></header><cover></cover><main><div class="post-content"><div class="post-title"><h1 class="post-title__text">对抗校园网 DNS 污染,我有妙招</h1><div class="post-title__meta"><a href="/archives/2022/10/" class="post-meta__date button">2022-10-15</a> <span class="separate-dot"></span> <a href="/categories/%E6%8A%80%E6%9C%AF%E5%90%91/" class="button"><span class="post-meta__cats">技术向</span></a><style>.post-meta__pv{color:var(--t-l);visibility:hidden;opacity:0;transition:.2s}</style><span class="separate-dot"></span> <span class="post-meta__pv"></span></div></div><aside class="post-side"><div class="post-side__toc"><div class="toc-title">文章目录</div><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%9B%B4%E6%8D%A2-dns%E6%B2%A1%E9%82%A3%E4%B9%88%E7%AE%80%E5%8D%95"><span class="toc-text">更换 DNS没那么简单</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8F%A6%E8%BE%9F%E8%B9%8A%E5%BE%84"><span class="toc-text">另辟蹊径</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#smartdns%E5%87%BA%E5%87%BB"><span class="toc-text">SmartDNS出击</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%80%BB%E7%BB%93"><span class="toc-text">总结</span></a></li></ol></div></aside><a class="btn-toc button" id="btn-toc" tabindex="0"><svg viewBox="0 0 1024 1024" width="32" height="32" xmlns="http://www.w3.org/2000/svg"><path d="M128 256h64V192H128zM320 256h576V192H320zM128 544h64v-64H128zM320 544h576v-64H320zM128 832h64v-64H128zM320 832h576v-64H320z" fill="currentColor"></path></svg></a><div class="toc-menus" id="toc-menus"><div class="toc-title">文章目录</div><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%9B%B4%E6%8D%A2-dns%E6%B2%A1%E9%82%A3%E4%B9%88%E7%AE%80%E5%8D%95"><span class="toc-text">更换 DNS没那么简单</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8F%A6%E8%BE%9F%E8%B9%8A%E5%BE%84"><span class="toc-text">另辟蹊径</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#smartdns%E5%87%BA%E5%87%BB"><span class="toc-text">SmartDNS出击</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%80%BB%E7%BB%93"><span class="toc-text">总结</span></a></li></ol></div><article class="post post__with-toc card"><div class="post__header"><div class="post__expire" id="post-expired-notify"><p><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" style="fill:#f5a623;stroke:#f5a623"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg> 本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。</p></div><script>(()=>{var e=Date.parse("2022-10-15"),t=(new Date).getTime(),t=Math.floor((t-e)/864e5);120<=t&&(document.querySelectorAll("#expire-date")[0].innerHTML=t,document.querySelectorAll("#post-expired-notify")[0].style.display="block")})()</script></div><div class="post__content"><html><head><script>var meting_api="https://api-v2.hans362.cn/vip/?server=:server&type=:type&id=:id&r=:r"</script><script class="meting-secondary-script-marker" src="/js/Meting.min.js"></script></head><body><p>最近给寝室接入了学校网络信息中心免费提供的 1Gbps 有线网络,这确实是我迄今为止使用过的最奢华的网络环境,尤其是把 WSL 软件源更换成 SJTUG 镜像站后,能够以接近 1Gbps 的速率更新软件包,体验极度舒适。</p><p>然而某天早上7:30当我试图打开 Bilibili 时Chrome 浏览器却提示 <code>DNS_PROBE_FINISHED_NXDOMAIN</code>手机客户端也加载失败。通过查阅校内论坛我得知由于某些原因从2022年5月25日起的每天0点至8点学校网络信息中心提供的 DNS 服务器会<strong>故意</strong>不返回大部分视频网站包括但不限于哔哩哔哩、腾讯视频、爱奇艺、优酷、华数TV、抖音、快手及游戏网站包括但不限于Steam商店和聊天、Origin、战网、英雄联盟、崩坏的解析结果即所谓的 DNS 污染。</p><p>虽然我多数时候没有在0点至8点使用这些网站的需求但是我并不认可这种行为所以本文就来谈谈我是如何对抗校园网 DNS 污染的。</p><span id="more"></span><h2 id="更换-dns没那么简单"><a class="markdownIt-Anchor" href="#更换-dns没那么简单"></a> 更换 DNS没那么简单</h2><p>也许你会认为,既然只是学校网络信息中心提供的 DNS 服务器在特定时段不返回解析结果,那么只要改为使用公共 DNS 就能解决问题。没错,我一开始也是这样认为的,校内论坛上提供的解决方法亦是如此。</p><p>但是,在路由器上更换 DNS 后,却没有任何效果。我尝试在特定时段使用 <code>nslookup</code> 命令向校园网 DNS 服务器和一些公共 DNS 服务器查询 <code>bilibili.com</code> 的解析结果,结果很 amazing 啊!</p><pre><code class="hljs asciidoc">Sat Oct 14 02:03:09 GMT 2022
<span class="hljs-section">== SJTU Primary ==</span>
Server: 202.120.2.101
Address 1: 202.120.2.101 202.120.2.101.dns.sjtu.edu.cn
<span class="hljs-section">== SJTU Secondary ==</span>
Server: 202.112.26.40
Address 1: 202.112.26.40 202.112.26.40.dns.sjtu.edu.cn
<span class="hljs-section">== 114 ==</span>
Server: 114.114.114.114
Address 1: 114.114.114.114 public1.114dns.com
<span class="hljs-section">== DNSPod ==</span>
Server: 119.29.29.29
Address 1: 119.29.29.29 pdns.dnspod.cn</code></pre><p>无一例外地全部被阻断!我尚不清楚校园网是如何做到这一点的,或许是强制重定向所有 DNS-over-UDP 查询请求到校园网 DNS 服务器,导致请求根本没有到达 114 或 DNSPod 服务器,又或许是由于 DNS-over-UDP 查询是明文的,校园网出口能够识别出查询的域名,从而直接返回空结果。总之,这种情况下,简单地更换 DNS 服务器是无效的。</p><p>而且,即使这种方法有效,公共 DNS 会导致一些校内域名无法被正常解析,或无法返回最快的结果,同样会影响使用体验。</p><h2 id="另辟蹊径"><a class="markdownIt-Anchor" href="#另辟蹊径"></a> 另辟蹊径</h2><p>既然更换 DNS 无效,那么就只能另辟蹊径了。我想到的第一个方法是使用代理服务器,利用 dns2socks 等工具将 DNS 查询请求转发到代理服务器,再由代理服务器向公共 DNS 服务器查询结果,最后将结果返回给客户端。但这种方法需要一台境内服务器以确保速度,同时协议转换的过程对路由器的性能也有一定的要求。</p><p>因此,我决定使用另一种方法,那就是 DNS-over-HTTPS(DoH) 和 DNS-over-TLS(DoT)。二者都是 DNS-over-UDP 的替代方案,通过 HTTPS 或 TLS 协议向公共 DNS 服务器查询结果,从而避免了 DNS-over-UDP 查询请求被校园网通过某些方式污染的问题。</p><p>同时,为了避免上一节末尾提到的问题,我希望能够优先使用校园网 DNS 服务器进行查询,只有在校园网 DNS 服务器无法正常返回结果时才使用 DoH 或 DoT 向公共 DNS 服务器进行查询。<a target="_blank" rel="noopener" href="https://github.com/pymumu/smartdns">SmartDNS</a> 无疑是实现这一需求的绝佳工具。</p><h2 id="smartdns出击"><a class="markdownIt-Anchor" href="#smartdns出击"></a> SmartDNS出击</h2><blockquote><p>SmartDNS 是一个运行在本地的 DNS 服务器,它接受来自本地客户端的 DNS 查询请求,然后从多个上游 DNS 服务器获取 DNS 查询结果,并将访问速度最快的结果返回给客户端,以此提高网络访问速度。 SmartDNS 同时支持指定特定域名 IP 地址,并高性匹配,可达到过滤广告的效果。<br>与 DNSmasq 的 all-servers 不同SmartDNS 返回的是访问速度最快的解析结果。<br>支持树莓派、OpenWrt、华硕路由器原生固件和 Windows 系统等。</p></blockquote><p>(摘录自 <a target="_blank" rel="noopener" href="https://github.com/pymumu/smartdns">SmartDNS 项目主页</a></p><p>关于 SmartDNS 是如何实现择优解析,以及如何避免因测速导致 DNS 解析过慢的,可以参考 Sukka 的<a target="_blank" rel="noopener" href="https://blog.skk.moe/post/i-have-my-unique-dns-setup/#Zhong-Chang-Xiu-Xi-SmartDNS-Shi-Ru-He-Bi-Mian-Yin-Ce-Su-Dao-Zhi-DNS-Jie-Xi-Guo-Man-De">这篇文章</a></p><p>根据 SmartDNS 的官方文档以及路由器的处理器构架,我下载了编译好的 armv7 二进制,并编写了配置文件。</p><pre><code class="hljs apache"><span class="hljs-attribute">bind</span> :<span class="hljs-number">5362</span>
<span class="hljs-attribute">speed</span>-check-mode ping,tcp:<span class="hljs-number">80</span>,tcp:<span class="hljs-number">443</span>
<span class="hljs-attribute">server</span> <span class="hljs-number">202.120.2.101:53</span>
<span class="hljs-attribute">server</span> <span class="hljs-number">202.112.26.40:53</span>
<span class="hljs-attribute">server</span>-https https://<span class="hljs-number">1.12.12.12</span>/dns-query
<span class="hljs-attribute">server</span>-https https://<span class="hljs-number">120.53.53.53</span>/dns-query
<span class="hljs-attribute">server</span>-https https://<span class="hljs-number">1.1.1.1</span>/dns-query
<span class="hljs-attribute">server</span>-tls dot.pub:<span class="hljs-number">853</span>
<span class="hljs-attribute">server</span>-tls <span class="hljs-number">8.8.4.4:853</span></code></pre><p>将 SmartDNS 运行后,我将路由器自带的 dnsmasq 的上游服务器设置为 <code>127.0.0.1:5362</code>,然后…</p><pre><code class="hljs apache"><span class="hljs-attribute">Sat</span> Oct <span class="hljs-number">15</span> <span class="hljs-number">02</span>:<span class="hljs-number">03</span>:<span class="hljs-number">09</span> GMT <span class="hljs-number">2022</span>
<span class="hljs-attribute">Server</span>: <span class="hljs-number">127.0.0.1</span>
<span class="hljs-attribute">Address</span> <span class="hljs-number">1</span>: <span class="hljs-number">127.0.0.1</span> localhost.localdomain
<span class="hljs-attribute">Name</span>: bilibili.com
<span class="hljs-attribute">Address</span> <span class="hljs-number">1</span>: <span class="hljs-number">119.3.70.188</span> ecs-<span class="hljs-number">119</span>-<span class="hljs-number">3</span>-<span class="hljs-number">70</span>-<span class="hljs-number">188</span>.compute.hwclouds-dns.com</code></pre><p>与此同时SmartDNS 的日志也记录下了这次查询的过程。</p><pre><code class="hljs stylus"><span class="hljs-selector-attr">[2022-10-15 02:03:09,372]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_server.c:4236]</span> query server bilibili<span class="hljs-selector-class">.com</span> from <span class="hljs-number">192.168</span>.<span class="hljs-number">50.1</span>, qtype = <span class="hljs-number">28</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,374]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_client.c:3135]</span> send request bilibili<span class="hljs-selector-class">.com</span>, qtype <span class="hljs-number">28</span>, id <span class="hljs-number">3</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,376]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_server.c:4236]</span> query server bilibili<span class="hljs-selector-class">.com</span> from <span class="hljs-number">192.168</span>.<span class="hljs-number">50.1</span>, qtype = <span class="hljs-number">1</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,376]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_client.c:3135]</span> send request bilibili<span class="hljs-selector-class">.com</span>, qtype <span class="hljs-number">1</span>, id <span class="hljs-number">4</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,376]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_client.c:3135]</span> send request bilibili<span class="hljs-selector-class">.com</span>, qtype <span class="hljs-number">28</span>, id <span class="hljs-number">5</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,521]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_server.c:1608]</span> result: bilibili<span class="hljs-selector-class">.com</span>, qtype: <span class="hljs-number">1</span>, rtt: <span class="hljs-number">4.1</span> ms, <span class="hljs-number">119.3</span>.<span class="hljs-number">70.188</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,981]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_server.c:583 ]</span> result: bilibili<span class="hljs-selector-class">.com</span>, id: <span class="hljs-number">64281</span>, index: <span class="hljs-number">1</span>, rtt: <span class="hljs-number">4.1</span> ms, <span class="hljs-number">119.3</span>.<span class="hljs-number">70.188</span>
<span class="hljs-selector-attr">[2022-10-15 02:03:09,981]</span><span class="hljs-selector-attr">[ INFO]</span><span class="hljs-selector-attr">[ dns_server.c:583 ]</span> result: bilibili<span class="hljs-selector-class">.com</span>, id: <span class="hljs-number">64281</span>, index: <span class="hljs-number">2</span>, rtt: <span class="hljs-number">5.3</span> ms, <span class="hljs-number">47.103</span>.<span class="hljs-number">24.173</span></code></pre><p>对抗成功!</p><h2 id="总结"><a class="markdownIt-Anchor" href="#总结"></a> 总结</h2><p>本文利用 SmartDNS 解决了校园网 DNS 污染问题,成功构建了愉快的网络环境。如果你的校园网也存在故意污染 DNS 的情况,并且不想或不能直接更换公共 DNS不妨试试本文的方法。</p><p>最后说一句,我能够理解学校这么做的考虑,但我认为堵不如疏,强制性的网络限制并不是一个好方法。</p></body></html></div><div class="license"><div class="license-title">对抗校园网 DNS 污染,我有妙招</div><div class="license-link"><a href="https://blog.hans362.cn/post/how-i-fight-against-campus-dns-pollution/">https://blog.hans362.cn/post/how-i-fight-against-campus-dns-pollution/</a></div><div class="license-meta"><div class="license-meta-item"><div class="license-meta-title">本文作者</div><div class="license-meta-text">Hans362</div></div><div class="license-meta-item"><div class="license-meta-title">最后更新</div><div class="license-meta-text">2022-10-15</div></div><div class="license-meta-item"><div class="license-meta-title">许可协议</div><div class="license-meta-text"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" rel="nofollow noopener noreferrer" target="_blank">CC BY-NC-SA 4.0</a></div></div></div><div>转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!</div></div><div class="post-footer__cats"><a href="/categories/%E6%8A%80%E6%9C%AF%E5%90%91/" class="post-cats__link button">技术向</a><a href="/tags/%E8%B7%AF%E7%94%B1%E5%99%A8/" class="post-tags__link button"># 路由器</a><a href="/tags/DNS/" class="post-tags__link button"># DNS</a><a href="/tags/%E6%A0%A1%E5%9B%AD%E7%BD%91/" class="post-tags__link button"># 校园网</a></div></article><div class="nav"><div class="nav__prev"><a href="/post/2022-annual-report/" class="nav__link"><div><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M589.088 790.624L310.464 512l278.624-278.624 45.248 45.248L400.96 512l233.376 233.376z" fill="#808080"></path></svg></div><div><div class="nav__label">上一篇</div><div class="nav__title">2022年终总结</div></div></a></div><div class="nav__next"><a href="/post/weekly-28/" class="nav__link"><div><div class="nav__label">下一篇</div><div class="nav__title">周记#28 - “开学第一课”</div></div><div><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M434.944 790.624l-45.248-45.248L623.04 512l-233.376-233.376 45.248-45.248L713.568 512z" fill="#808080"></path></svg></div></a></div></div><div class="post__sponsers card"><div class="sponser-label">喜欢这篇文章吗?考虑支持一下作者吧~</div><a class="sponser-button button" href="https://afdian.net/@hans362" rel="external nofollow noreferrer" target="_blank" data-type="afdian">爱发电</a> <a class="sponser-button button" data-type="alipay">支付宝<img class="sponser-qrcode" src="https://hans362-img.oss.0vv0.top/2021/08/05/68281340.jpg"></a></div><div class="post__comments post__with-toc card" id="comment"><h4>评论</h4><div id="disqus_thread">您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。</div></div></div></main><footer><p class="footer-copyright">Copyright © 2017&nbsp;-&nbsp;2025 <a href="/">Hans362 &#39;s Blog</a></p><p>Powered by <a href="https://hexo.io" target="_blank">Hexo</a> | Theme - <a href="https://github.com/ChrAlpha/hexo-theme-cards" target="_blank">Cards</a></p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8746554831230893" data-ad-slot="6356225601" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script></footer></div><script defer src="https://blog.hans362.cn/npm/vanilla-lazyload@17.8.3/dist/lazyload.min.js"></script><script>window.lazyLoadOptions={elements_selector:".lazy"}</script><script async defer data-website-id="5d181692-8a81-4c20-a282-cee87a6b90ef" src="https://analytics.0vv0.top/vue.js"></script><script src="/js/pageviews.js"></script><link rel="stylesheet" href="https://blog.hans362.cn/npm/katex@0.16.0/dist/katex.min.css" crossorigin="anonymous"><script>function loadComment(){let n,e;(n=document.createElement("script")).src="https://blog.hans362.cn/js/disqus.js",document.body.appendChild(n),n.onload=()=>{new DisqusJS({shortname:"hans362-s-blog",siteName:"Hans362 &#39;s Blog",api:"https://api-v3.hans362.cn/",apikey:"8Z1UVT4UOk22yNyk9MhpqQ0FLb27Hb1bpV066b4v9zOFie0GQ6VCoJ9TJwoGlCVF",admin:"hans362",identifier:"post/how-i-fight-against-campus-dns-pollution/",url:"https://blog.hans362.cn/post/how-i-fight-against-campus-dns-pollution/",nesting:"4"})},(e=document.createElement("link")).rel="stylesheet",e.href="https://blog.hans362.cn/css/disqusjs.css",document.head.appendChild(e)}var runningOnBrowser="undefined"!=typeof window,isBot=runningOnBrowser&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro|msn)bot|crawl|spider|yand|duckgo/i.test(navigator.userAgent),supportsIntersectionObserver=runningOnBrowser&&"IntersectionObserver"in window;setTimeout(function(){var e;!isBot&&supportsIntersectionObserver?(e=new IntersectionObserver(function(n){n[0].isIntersecting&&(loadComment(),e.disconnect())},{threshold:[0]})).observe(document.getElementById("comment")):loadComment()},1)</script></body></html>