记-北科原生v6免流

我是小白(教程在这)

TG群组

@ernst_loosen_bot通过此bot加入,欢迎来玩喵~

Discord服务器 加discord群


断断续续耗时5天5夜,使我受益匪浅,本篇将不惜笔墨详细记录过程,当中有不足之处欢迎指出。

原生v6免流原理

其实很好理解,校园网只对外网下行v4流量计费,那么不让系统流量走v4协议而直接走v6就好,所以把使用的网卡禁用v4。如果开启了代理软件的TUN(虚拟网卡),只需要禁用原来网卡的v4协议。校园网分配的DNS服务器是202.204.0.0网段中的,禁用v4后我们显然需要一个v6 DNS,那么用普通的公共v6 DNS可以吗?

提供商 ipv6 DNS DoH 备注
阿里云 2400:3200::1
2400:3200:baba::1
https://dns.alidns.com/dns-query 限速
腾讯云 2402:4e00::
2402:4e00:1::
https://doh.pub/dns-query 限速
CNNIC 2001:dc7:1000::1
CFIEC 240c::6666
240c::6644
https://dns.puredns.cn/dns-query
Google 2001:4860:4860::8888
2001:4860:4860::8844
https://dns.google/dns-query
Cloudflare 2606:4700:4700::1111
2606:4700:4700::1001
https://cloudflare-dns.com/dns-query 校园网中有时失效
Quad9 2620:fe::fe
2620:fe::9
https://dns.quad9.net/dns-query
Open DNS 2620:0:ccc::2
2620:0:ccd::2
https://doh.opendns.com/dns-query
AdGuard DNS 2a10:50c0::ad1:ff
2a10:50c0::ad2:ff
https://dns.adguard.com/dns-query

可以,但是还有相当一部分网站不支持ipv6的,这样做无疑会对日常使用造成极大的干扰。那么使用校园网原生v6就不能让DNS直来直去了,考虑到兼容广大v4站点的需求,有一个最简单的方法:DNS64。关于DNS64,网上是这样解释的:

DNS64 是一种用于 IPv6 过渡的技术,它与 NAT64 配合使用,帮助纯 IPv6 设备访问 IPv4 网络资源。DNS64 的主要功能是将 DNS 查询中的 IPv4 地址(A 记录)转换为 IPv6 地址(AAAA 记录),从而使得 IPv6 设备能够解析并访问 IPv4 资源。

这段话解释的很明白了,DNS64把v4地址的域名欺骗性的解析成一个包含该v4地址的v6地址(即把ipv4嵌入到一个其具有的公共v6前缀的v6地址中),而NAT64负责把v4协议报文转换成v6。这两个服务配合使用就能实现在纯v6环境中访问v4资源。对于校园网环境来说非常合适,在计费系统中我们的流量是v6协议的,但实际上我们也能访问v4资源。目前公共的DNS64和NAT64服务有限,大多是小公司或组织运营,网络速度取决于NAT64网关的性能,且延迟较大。因为提供公共的NAT64服务需要足够的带宽、流量和服务器性能,还要承担极大的法律和滥用风险,所以愿意提供的企业很少,绝大多数都集中在带宽极其便宜且网络政策较宽松的欧洲地区(主要是德国、荷兰、芬兰)。

提供商 DNS64服务器位置 DNS64地址 NAT64 DoH
nat64.net 荷兰,阿姆斯特丹 2a00:1098:2b::1 https://nat64.net/dns-query
nat64.net 美国,阿什本 2a01:4ff:f0:9876::1 https://nat64.net/dns-query
nat64.net 芬兰,赫尔辛基 2a01:4f9:c010:3f02::1 https://nat64.net/dns-query
nat64.net 英国,伦敦 2a00:1098:2c::1 https://nat64.net/dns-query
nat64.net 德国,纽伦堡 2a01:4f8:c2c:123f::1 https://nat64.net/dns-query
IPng 荷兰,阿姆斯特丹 2a02:898::146:1
Trex 芬兰,坦佩雷 2001:67c:2b0::4
Trex 芬兰,坦佩雷 2001:67c:2b0::6
level66 德国,法兰克福 2001:67c:2960::64
level66 德国,法兰克福 2001:67c:2960::6464
ZTVI 美国,弗里蒙特 2602:fc59:b0:9e::64
ZTVI 美国,香槟 2602:fc59:11:1::64
ZTVI 美国,阿尔伯克基 2602:fc59:21:1::64
Tuxis 荷兰,埃德 2a03:7900:2:0:31:3:104:161 https://dns64.tuxis.nl/dns-query
Daniel Richter 德国,纽伦堡 2a01:4f8:1c1b:757c::1
Go6Lab 斯洛文尼亚,什科菲亚洛卡 2001:67c:27e4:15::6411
Go6Lab 斯洛文尼亚,什科菲亚洛卡 2001:67c:27e4::64
Go6Lab 斯洛文尼亚,什科菲亚洛卡 2001:67c:27e4:15::64
Go6Lab 斯洛文尼亚,什科菲亚洛卡 2001:67c:27e4::60
Cloudflare 全球,Anycast 2606:4700:4700::64 https://cloudflare-dns.com/dns-query
Cloudflare 全球,Anycast 2606:4700:4700::6400 https://cloudflare-dns.com/dns-query
Google 全球,Anycast 2001:4860:4860::6464 https://dns.google/dns-query
Google 全球,Anycast 2001:4860:4860::64 https://dns.google/dns-query

这张表应该是你能找到的最全的公共DNS64服务了。需要注意的是,CF和谷歌并没有公共的NAT64服务,需要额外配置。我没有挨个测试,IPng、Daniel Richter和Go6Lab的可能用不了,不试了。还有根据谷歌一篇文章的说法,DNS64最好只配置一个地址(也不要有v4),否则可能无法合成AAAA记录。关于有状态NAT64,可以看一下Cisco的这篇文章。另外提一下,NAT64还有妙用,见教育网Cloudflare V6免流

示意图


原生v6免流进阶

Cloudflare一篇文档里有这样一段话:

只有在你管理或使用仅支持IPv6的网络时,才应该启用DNS64。虽然解析器可以合成IPv6地址,但无法合成使用DNSSEC的域名的记录签名,因此能够重新验证签名的DNS客户端会拒绝这些没有签名的额外记录。一个不错的权衡是使用安全协议,如 DNS over TLS,或客户端与解析器之间使用 DNS over HTTPS 来防止篡改。

如果系统或浏览器强制要求验证DNSSEC,DNS64就无法工作。除非你自己配置,否则这一项应该是不会成为阻碍的,仅作提醒。

另外可以通过配置DoH(DNS over HTTPS)或DoT(DNS over TLS)来为DNS解析提供更好的安全保障,本质是通过加密DNS请求来防止劫持、篡改和保护隐私(校园网看不到你在查什么域名)。DoT使用853端口,特征明显但仍然是加密的,虽然校园网可以识别,一般不会全部禁用。DoH使用标准的HTTPS443端口,流量特征和普通网页浏览完全一样,一并整理在上表了。需要注意一些DoH可能失效。

根据Win11的史山设置,如果只是普通的想加个DoH,你需要在WiFi设置里把DNS设置改为手动,并启用DoH(检查DoH和DNS是否对应,必须同一提供商才能使用),在经典的控制面板里你是找不到DoH配置入口的。而Win10没有图形化配置界面,需要修改注册表或用第三方工具。

在浏览器中也可以配置DoH,Edge和Chrome都有一个叫“使用安全的DNS”的选项,作用范围是整个浏览器。只要你改其他网络设置的时候别忘了同步改就行。

配合DNS64使用DoH需要在控制面板里禁用ipv4协议,ipv6协议使用默认设置(自动获取),并在WiFi设置中改成手动配置DNS,只开启ipv6进行填写。根据Windows的双栈逻辑,如果你不禁用ipv4,即使你配置了v6的DNS64和DoH,Windows依然会通过DHCP自动获取校园网下发的v4地址和网关。只要有v4路径存在,Windows的Happy Eyeballs算法就可能会优先尝试通过v4连接。

写到这里顺便补充一下关于中国教育网及CERNET2。


CERNET/2与北科

中国教育和科研计算机网(China Education and Research Network)即CERNET,赛尔网络,是全国四大骨干网之一,网络中心设在清华。但这不重要。很多时候我们不会意识到,我们正处在全世界最大的纯IPV6互联网主干网中,可以看看CERNET2网路地图核心节点学校。另外有全国高校教育网IPv6分配列表ISP中国教育网所有IPv6地址段表(CIDR),方便查询。还有一个赛尔自己做的教育系统IPv6发展态势监测平台,其中可以看到nike IPv6支持度评分赫然排123/147,而且没有自己的IPv6授权体系;除此之外还可以在教育网态势里查看一些很有意思的数据,然后你甚至可以在IPv6检测这个不起眼的页面把自己的博客加到CERNET2的DNS里去(懵逼了),而且他貌似是DDNS来的(手动刷新?)

进一步考古发现了远古北科v6站,甚至校徽还是旧版的。看拓扑就明白为啥5斋网好了,然后科大的网路貌似是从北邮拉过来的,这也解释了之前ipv6检测告诉我运营商是北邮。v6是否有网段隔离或者入站防火墙还没来得及测,v4之前测过,是有AP隔离的。另外学校的v6 DNS貌似寄了,v6站上记录的3个域名我都没有查到DNS记录,而v4 DNS有四个,dns.ustb.edu.cndns2.ustb.edu.cndns3.ustb.edu.cndns4.ustb.edu.cn,分别对应202.204.48.6202.204.48.8202.204.60.10123.124.147.252。应该都挺眼熟的吧。

附:北科大带宽采购公示2021北科大带宽采购公示2022


DNS、IP检测与测速

集中收录一下各种工具。排序不分先后。

DNS、IP检测:

系统流量监控:

测速(主要针对CERNET2):


Cloudflare V6免流(代理)

详见:教育网Cloudflare V6免流


其他尝试

以下方法不一定成功,只是提供思路。

防火墙规则

通过添加阻止特定ipv4网段的防火墙规则阻断ipv4连接。出站规则>添加规则>自定义>所有程序>任何端口和协议>任何本地ip地址>下列远程ip地址>添加>ip地址范围>0.0.0.0-9.255.255.255 11.0.0.0-126.255.255.255 128.0.0.0-202.203.255.255 202.205.255.255-255.255.255.255>阻止连接>全选>输入名称。由于保留了校园网认证的网段,启用这条规则时可以进行校园网网络认证。或许可以再排除123.124.0.0/24。最后添加v6 dns。由于防火墙在网络层/应用层过滤,v4数据包依然会产生并尝试发送,只是在穿过Windows防火墙驱动程序时被根据规则丢弃了。恢复只需要禁用规则即可。

修改路由表

通过删除和修改路由规则阻断v4。cmd(管理员)route print查看0.0.0.0网关地址和接口编号,route delete 0.0.0.0断开所有v4外网,route add 10.0.0.0 mask 255.0.0.0 网关地址 if 接口编号 route add 202.204.0.0 mask 255.255.0.0 网关地址 if 接口编号添加白名单网段,根据需要可添加其他网段。最简单的恢复方法:禁用网卡再启用,或者重启电脑(如果添加路由时没加-p参数)。或者手动添加回默认网关route add 0.0.0.0 mask 0.0.0.0 网关地址。默认情况下,route命令添加的路由在重启后会消失。如果你想永久生效,需在route后边跟上-p参数(persistant)。另外如果你看到0.0.0.0有两个网关地址,记得不要删除192.168.x.x的网段,否则你连路由器都连不上。

Clash分流配置

由上面两个方法很容易联想到Clash的分流规则。这里并不是要使用v6 vps的代理,只是利用clash的分流规则对本地流量进行路由。

可以配合禁用网卡ipv4协议,或套入代理、DNS64等,灵活运用。