<!DOCTYPE html>
<!-- saved from url=(0043)https://stblog.penclub.club/posts/DNSCrypt/ -->
<html lang="en" class="dark"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!-- Global Metadata --><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="https://stblog.penclub.club/favicon.ico"><meta name="generator" content="Astro v4.16.8"><!-- Primary Meta Tags --><title>在 Windows 上实现国内外 DNS 分流</title><meta name="title" content="在 Windows 上实现国内外 DNS 分流"><meta name="description" content="众所周知,中国大陆存在 DNS 污染。而根据我自己的经验,一些运营商还在此之上加了一层。"><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://stblog.penclub.club/posts/DNSCrypt/"><meta property="og:title" content="在 Windows 上实现国内外 DNS 分流"><meta property="og:description" content="众所周知,中国大陆存在 DNS 污染。而根据我自己的经验,一些运营商还在此之上加了一层。"><meta property="og:image" content="https://stblog.penclub.club/%E5%A4%B4%E5%83%8F%E6%96%B9.png"><!-- Twitter --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://stblog.penclub.club/posts/DNSCrypt/"><meta property="twitter:title" content="在 Windows 上实现国内外 DNS 分流"><meta property="twitter:description" content="众所周知,中国大陆存在 DNS 污染。而根据我自己的经验,一些运营商还在此之上加了一层。"><meta property="twitter:image" content="https://stblog.penclub.club/%E5%A4%B4%E5%83%8F%E6%96%B9.png"><!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-web/style.css" /> --><link rel="stylesheet" href="./在 Windows 上实现国内外 DNS 分流_files/_slug_.BOpZ6Ckm.css"><script type="module" src="./在 Windows 上实现国内外 DNS 分流_files/hoisted.BKQwzLlO.js.下载"></script><style>html.dark{--sds-white:#000;--sds-light-grey:#666;--sds-dark-grey:#999;--sds-color:#888;--sds-bgcolor:#1e1e1e;--sds-bgcolor-light:#272727;--sds-bgcolor-hover: #444;--sds-border-color:#333;--sds-disable-bgcolor:#444;--sds-disable-color:#272727;--sds-bq-color:#272727;--sds-info-bgcolor:#272727;--sds-info-color:#666}</style><style type="text/css">#_copy{align-items:center;background:#4494d5;border-radius:3px;color:#fff;cursor:pointer;display:flex;font-size:13px;height:30px;justify-content:center;position:absolute;width:60px;z-index:1000}#select-tooltip,#sfModal,.modal-backdrop,div[id^=reader-helper]{display:none!important}.modal-open{overflow:auto!important}._sf_adjust_body{padding-right:0!important}.enable_copy_btns_div{position:fixed;width:154px;left:10px;top:45%;background:#e7f1ff;border:2px solid #4595d5;font-weight:600;border-radius:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;z-index:5000}.enable_copy_btns_logo{width:100%;background:#4595d5;text-align:center;font-size:12px;color:#e7f1ff;line-height:30px;height:30px}.enable_copy_btns_btn{display:block;width:128px;height:28px;background:#7f5711;border-radius:4px;color:#fff;font-size:12px;border:0;outline:0;margin:8px auto;font-weight:700;cursor:pointer;opacity:.9}.enable_copy_btns_btn:hover{opacity:.8}.enable_copy_btns_btn:active{opacity:1}</style></head> <body inmaintabuse="1"> <header class="sticky top-0 mb-4 card flex p-2 pl-4 z-20 flex-wrap justify-center sm:justify-start backdrop-filter backdrop-blur bg-opacity-70 dark:bg-opacity-70"> <a href="https://stblog.penclub.club/" class="flex items-center"> <img src="./在 Windows 上实现国内外 DNS 分流_files/头像圆.webp" height="48" width="48" class="object-cover w-12" alt="My avatar"> <h2 class="text-lg break-keep ml-2"> 北雁云依的博客 </h2> </a> <nav class="flex flex-grow items-center justify-center ml-4"> <a href="https://stblog.penclub.club/" data-astro-cid-eimmu3lg=""> 主页 </a> <a href="https://stblog.penclub.club/intro" class="ml-2" data-astro-cid-eimmu3lg=""> 关于我 </a> <a href="https://stblog.penclub.club/links" class="ml-2" data-astro-cid-eimmu3lg=""> 友链 </a> <div class="flex-grow hidden sm:block"></div> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="1Txdgo" component-url="/_astro/DarkSwitch.CNuPf21B.js" component-export="default" renderer-url="/_astro/client.BQWWF4Kv.js" props="{}" client="only" opts="{"name":"DarkSwitch","value":"solid-js"}"><button aria-label="Turn off dark mode" class="i-ion:sunny-outline text-2xl ml-2"></button></astro-island> </nav> </header> <main class="flex flex-col-reverse lg:flex-row"> <div class="flex-shrink-0 mx-auto w-full lg:w-fit"> <address class="sticky top-20 p-6 card flex flex-col items-center"> <img src="./在 Windows 上实现国内外 DNS 分流_files/头像圆.webp" class="object-cover h-32 w-32 mb-2" height="128" width="128" alt="My avatar"> <p class="text-2xl">北雁云依的博客</p> <p class="text-base mb-6">把信拿去吧,你可以假戏真做</p> <div class="flex justify-around w-full mb-6"> <a href="https://stblog.penclub.club/" class="flex flex-col items-center"> <p class="text-[11px]">POSTS</p> <p>58</p> </a> <a href="https://stblog.penclub.club/tags" class="flex flex-col items-center"> <p class="text-[11px]">TAGS</p> <p>17</p> </a> </div> <form class="flex w-full items-center focus-within:outline-2 focus-within:outline-blue-600 focus-within:outline-solid focus-within:text-blue-500 focus-within:dark:text-blue-400 rounded-full outline-dashed outline-1 outline-blue-500 text-neutral-600 dark:text-neutral-200" id="search"> <span class="flex-shrink-0 mx-2 i-ion:search text-6"></span> <input class="w-0 flex-grow flex-shrink bg-transparent p-2 rounded-md focus-visible:outline-none text-neutral-600 dark:text-neutral-200"> </form> <a href="https://stblog.penclub.club/rss.xml" class="mt-4 bg-blue-600 hover:bg-blue-700 w-full flex justify-center items-center p-2 rounded-full text-neutral-50 hover:text-neutral-50 dark:hover:text-neutral-50"> <span class="inline-block mr-2 i-ion:logo-rss"></span>
RSS
</a> <div class="mt-4 flex flex-wrap items-center"> <a rel="me" href="https://github.com/BeiyanYunyi/Astro-blog-Lithium" target="_blank" aria-label="source code of this blog"> <span class="inline-block i-ion:logo-github text-6"></span> </a> <a rel="me" href="https://twitter.com/Beiyan_Yunyi" target="_blank" class="ml-4" aria-label="Twitter"> <span class="inline-block i-ion:logo-twitter text-6"></span> </a> <a rel="me" href="https://o3o.ca/@21018365486" target="_blank" class="ml-4" aria-label="Fediverse"> <span class="inline-block i-ion:logo-mastodon text-6"></span> </a> </div> </address> </div> <div class="flex-auto min-w-0 mt-4 lg:mt-0 lg:ml-4"> <div class="flex"> <div class="flex-grow min-w-0"> <article class="prose prose-neutral dark:prose-invert max-w-full card overflow-clip"> <header> <div class="p-6 pb-0"> <div class="mb-2 text-xs flex text-neutral-500"> <time> 2022年2月22日 </time> <span class="ml-2 wordcount">·</span> <span class="ml-2 wordcount" id="wordCount">985 字</span> <span class="ml-2 wordcount">·</span> <span class="ml-2 wordcount" id="approxTime">7 分钟</span> <span class="ml-2">·</span> <span class="ml-2"> <span class="waline-pageview-count" data-path="/posts/DNSCrypt/">1502</span> 浏览
</span> </div> <h1 class="mb-6">在 Windows 上实现国内外 DNS 分流</h1> <div class="flex gap-1 text-xs items-center"><a href="https://stblog.penclub.club/tags/%E6%95%99%E7%A8%8B" class="rounded-md transition-all no-underline hover:shadow-md outline-neutral-200 dark:outline-neutral-600 outline outline-1 p-1 flex items-center"><span class="i-ion:pricetag-outline text-4"></span><span class="flex-shrink-0 ml-1">教程</span></a></div> </div> </header> <div class="p-6"> <p>众所周知,中国大陆存在 DNS 污染。而根据我自己的经验,一些运营商还在此之上加了一层。对抗 DNS 污染的方法有很多,用翻墙软件直接代理 DNS 请求是其中一种,但出于谨慎,我并不会让翻墙软件常开或与国产软件同时运行,切换起来相当麻烦。</p>
<p>于是我使用了 DoH(DNS Over HTTPS)等加密 DNS 技术,然而,DoH 对 CDN 的支持却不好,如果全局 DoH,访问国内网站的体验会严重下降。而且,我的学校有些网页依赖于学校路由器的 DNS 劫持而运作,如果全局 DoH,它们就没法运行。</p>
<p>为此,我需要 DNS 分流:对国内域名的 DNS 请求走普通 DNS,对国外域名的 DNS 请求走 DoH。</p>
<p>在 2019 年左右,我已经在 Linux 实现了 DNS 分流:使用 cloudflared 作为 DoH Proxy,把 DNS 请求转换为 DoH 请求,再使用 dnsmasq 进行分流,国内域名走普通 DNS,国外域名则向 cloudflared 请求。</p>
<p>然而 dnsmasq 并不支持 windows。即使支持,上述方案也未免臃肿。今天我在 cloudflare 官网上发现了<a href="https://github.com/DNSCrypt/dnscrypt-proxy">DNSCrypt-proxy</a>,它完美解决了我的需求,除此以外,我之前使用的<a href="https://github.com/felixonmars/dnsmasq-china-list">dnsmasq-china-list</a>也提供了将其内容转译为 DNSCrypt-proxy 的 makefile,事情就这么成了。</p>
<p>以下步骤的操作环境是纯 windows,没有使用 WSL。</p>
<p>首先,你需要安装<a href="https://gitforwindows.org/">Git for Windows</a>,记得把 Git Bash 装上,后面会用到的。</p>
<p>然后把<code>dnsmasq-china-list</code>clone 到本地:</p>
<pre class="language-bash" data-language="bash"><code is:raw="" class="language-bash"><span class="token comment"># 设定 depth 来避免 clone 下历史,缩短 clone 时间</span>
<span class="token function">git</span> clone https://github.com/felixonmars/dnsmasq-china-list <span class="token parameter variable">--depth</span><span class="token operator">=</span><span class="token number">1</span>
</code></pre>
<p>为了使用 make 转译 dnsmasq-china-list 的内容,你需要安装 make,这可以从 GnuWin32 获取,这之后记得把<code>C:\Program Files (x86)\GnuWin32\bin</code>加入<code>PATH</code>,然后重启电脑。</p>
<p>在 Git Bash 中打开刚刚 clone 下来的文件夹,在里面运行</p>
<pre class="language-bash" data-language="bash"><code is:raw="" class="language-bash"><span class="token function">make</span> <span class="token assign-left variable">SERVER</span><span class="token operator">=</span><span class="token variable">$ADDRESS</span> <span class="token assign-left variable">NEWLINE</span><span class="token operator">=</span>DOS dnscrypt-proxy
</code></pre>
<p>其中,$ADDRESS 是你希望国内域名分流去的 DNS 服务器地址。这以后,打开这个文件夹下刚生成的<code>dnscrypt-proxy-forwarding-rules.txt</code>,如果每行末多了一个<code>n</code>,就把上面那条命令里的<code>NEWLINE=DOS</code>去掉,再运行一次。</p>
<p>在<a href="https://github.com/DNSCrypt/dnscrypt-proxy/releases/">这里</a>下载 DNSCrypt-Proxy,解压,把上一步得到的<code>dnscrypt-proxy-forwarding-rules.txt</code>复制进去。</p>
<p>重命名<code>DNSCrypt-Proxy</code>目录下的<code>example-dnscrypt-proxy.toml</code>为<code>dnscrypt-proxy.toml</code>,用编辑器打开。在其中加入这么一行:<code>forwarding_rules = 'dnscrypt-proxy-forwarding-rules.txt'</code>。</p>
<p>这以后,<code>DNSCrypt-Proxy</code>目录里面应该是这样:</p>
<pre class="language-plaintext" data-language="plaintext"><code is:raw="" class="language-plaintext">dnscrypt-proxy-forwarding-rules.txt
dnscrypt-proxy.exe
dnscrypt-proxy.toml
example-allowed-ips.txt
example-allowed-names.txt
example-blocked-ips.txt
example-blocked-names.txt
example-captive-portals.txt
example-cloaking-rules.txt
example-dnscrypt-proxy.toml
example-forwarding-rules.txt
LICENSE
localhost.pem
public-resolvers.md
public-resolvers.md.minisig
query.log
relays.md
relays.md.minisig
service-install.bat
service-restart.bat
service-uninstall.bat
</code></pre>
<p>如果你只想要 cloudflare 的 DoH,可以像我一样把<code>dnscrypt-proxy.toml</code>里<code>server_names</code>这个数组只留下一项<code>"cloudflare"</code>。</p>
<p>大功告成。运行<code>service-install.bat</code>,再将系统 DNS 修改为<code>127.0.0.1</code>即可(备用 DNS 一项可以留空)。如果必要,运行<code>ipconfig /flushdns</code>来清除系统内的 DNS 缓存。</p>
<p>想检验配置是否正确,可以使用<code>nslookup www.google.com</code>。如果被 DNS 污染,返回的结果应该只有一项,反之则有好几项,你还可以查询这些 ip 的归属地来确定得到了正确的 DNS 结果。</p>
<p>这样以后我能直连 GitHub,大多数工作已经没有阻碍了。</p> <div class="flex gap-1 text-xs items-center"><a href="https://stblog.penclub.club/tags/%E6%95%99%E7%A8%8B" class="rounded-md transition-all no-underline hover:shadow-md outline-neutral-200 dark:outline-neutral-600 outline outline-1 p-1 flex items-center"><span class="i-ion:pricetag-outline text-4"></span><span class="flex-shrink-0 ml-1">教程</span></a></div> </div> </article> <div class="prose prose-neutral min-w-0 dark:prose-invert max-w-none"> <details class="rounded-md card"> <summary>分享</summary> <p>
复制此页面地址到邦联宇宙搜索框以在邦联宇宙分享本文:<code id="page_address" class="break-all select-all">https://stblog.penclub.club/posts/DNSCrypt/</code> </p> </details> </div> </div> </div> <div class="mt-2"> <div id="comment-container"> <div class="font-sans sds-root"><div class="flex mb-3"><div class="w-full flex flex-col rounded-xl border border-solid border-sBorder"><div class="flex flex-wrap justify-evenly px-4 text-[0.625rem] bb"><div class="flex flex-grow items-center"><label class="py-3 px-2 text-sColor" for="wl-nick">NickName</label><input class="flex-grow p-2 border-none outline-none transition-colors duration-300 focus:bg-sBgLight bg-transparent text-sColor" id="wl-nick" type="text"></div><div class="flex flex-grow items-center"><label class="py-3 px-2 text-sColor" for="wl-mail">E-Mail</label><input class="flex-grow p-2 border-none outline-none transition-colors duration-300 focus:bg-sBgLight bg-transparent text-sColor" id="wl-mail" type="email"></div><div class="flex flex-grow items-center"><label class="py-3 px-2 text-sColor" for="wl-link">Website</label><input class="flex-grow p-2 border-none outline-none transition-colors duration-300 focus:bg-sBgLight bg-transparent text-sColor" id="wl-link" type="text"></div></div><textarea class="my-3 mx-2 min-h-35 font-sans text-sm resize-y rounded-lg border-none outline-none transition-colors duration-300 focus:bg-sBgLight bg-transparent text-sColor disabled:cursor-not-allowed" placeholder="Comment here..."></textarea><div class="flex flex-wrap my-2 mx-3"><div class="flex flex-grow-2 flex-shrink items-center"><a title="Markdown Guide" aria-label="Markdown is supported" rel="noopener noreferrer" href="https://guides.github.com/features/mastering-markdown/" class="w-6 h-6 m-[2px] p-0 border-none bg-transparent"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="currentColor" d="M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6h17.12c.79 0 1.44.63 1.44 1.41v9.18c0 .78-.65 1.41-1.44 1.41M6.81 15.19v-3.66l1.92 2.35l1.92-2.35v3.66h1.93V8.81h-1.93l-1.92 2.35l-1.92-2.35H4.89v6.38h1.92M19.69 12h-1.92V8.81h-1.92V12h-1.93l2.89 3.28L19.69 12Z"></path></svg></a><button type="button" class="w-6 h-6 m-[2px] p-0 border-none bg-transparent hover:text-sTheme" title="Preview"><svg viewBox="0 0 1024 1024" width="24" height="24"><path fill="currentColor" d="M710.816 654.301c70.323-96.639 61.084-230.578-23.705-314.843-46.098-46.098-107.183-71.109-172.28-71.109-65.008 0-126.092 25.444-172.28 71.109-45.227 46.098-70.756 107.183-70.756 172.106 0 64.923 25.444 126.007 71.194 172.106 46.099 46.098 107.184 71.109 172.28 71.109 51.414 0 100.648-16.212 142.824-47.404l126.53 126.006c7.058 7.06 16.297 10.979 26.406 10.979 10.105 0 19.343-3.919 26.402-10.979 14.467-14.467 14.467-38.172 0-52.723L710.816 654.301zm-315.107-23.265c-65.88-65.88-65.88-172.54 0-238.42 32.069-32.07 74.245-49.149 119.471-49.149 45.227 0 87.407 17.603 119.472 49.149 65.88 65.879 65.88 172.539 0 238.42-63.612 63.178-175.242 63.178-238.943 0zm0 0"></path><path fill="currentColor" d="M703.319 121.603H321.03c-109.8 0-199.469 89.146-199.469 199.38v382.034c0 109.796 89.236 199.38 199.469 199.38h207.397c20.653 0 37.384-16.645 37.384-37.299 0-20.649-16.731-37.296-37.384-37.296H321.03c-68.582 0-124.352-55.77-124.352-124.267V321.421c0-68.496 55.77-124.267 124.352-124.267h382.289c68.582 0 124.352 55.771 124.352 124.267V524.72c0 20.654 16.736 37.299 37.385 37.299 20.654 0 37.384-16.645 37.384-37.299V320.549c-.085-109.8-89.321-198.946-199.121-198.946zm0 0"></path></svg></button></div><div class="flex flex-grow-3 flex-shrink items-center justify-end"><button class="inline-block min-w-10 mb-0 py-2 px-4 bg-transparent text-sColor text-xs text-center select-none border cursor-pointer touch-manipulation border-solid border-sBorder rounded-lg transition duration-400 ms-3 hover:border-sTheme hover:text-sTheme disabled:cursor-not-allowed disabled:text-sDisable disabled:border-sBorder disabled:bg-sDisableBg disabled:text-sDisable disabled:cursor-not-allowed disabled:hover:border-sBorder disabled:hover:bg-sDisableBg disabled:hover:text-sDisable" type="button">Login</button><button type="submit" class="inline-block min-w-10 mb-0 py-2 px-4 bg-sTheme text-sWhite text-xs flex justify-center select-none border cursor-pointer touch-manipulation border-solid border-sTheme bg-sTheme rounded-lg transition duration-400 ms-3 disabled:border-sBorder disabled:bg-sDisableBg disabled:text-sDisable disabled:cursor-not-allowed disabled:hover:border-sBorder disabled:hover:bg-sDisableBg disabled:hover:text-sDisable hover:border-sActive hover:bg-sActive">Submit</button></div></div></div></div><div class="flex items-center p-2"><div class="flex-grow flex-shrink font-bold text-xl text-sColor"> Comments</div><ul class="p-0 m-0 list-none"><li class="inline-block ms-3"><button class="cursor-pointer border-none bg-transparent text-[0.75rem] ps-0 pe-0 hover:text-sActive text-sTheme">Latest</button></li><li class="inline-block ms-3"><button class="cursor-pointer border-none bg-transparent text-[0.75rem] ps-0 pe-0 hover:text-sActive text-sColor">Oldest</button></li><li class="inline-block ms-3"><button class="cursor-pointer border-none bg-transparent text-[0.75rem] ps-0 pe-0 hover:text-sActive text-sColor">Hottest</button></li></ul></div><div></div><div class="text-center "><div>No comment yet.</div></div><div class="py-1 text-sLightGrey text-info text-end">Powered by <a href="https://github.com/BeiyanYunyi/sodesu" target="_blank" rel="noopener noreferrer">Sodesu</a> v0.1.0</div></div></div> </div> </div> </main> <footer class="p-6 text-center">
Copyleft © 2024 北雁云依 Under CC BY-NC-ND 4.0
</footer> <link rel="stylesheet" href="./在 Windows 上实现国内外 DNS 分流_files/katex.min.css"> <script defer="" src="./在 Windows 上实现国内外 DNS 分流_files/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8eda217f8a1dd503","version":"2024.10.5","r":1,"token":"8c05db38a3e841feb6a1bf925817034c","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}}}" crossorigin="anonymous"></script>
<script src="chrome-extension://onepmapfbjohnegdmfhndpefjkppbjkm/sm.bundle.js" data-pname="supercopy-v3" data-asset-path="https://spc4.s3.ap-east-1.amazonaws.com"></script></body></html>