翻墙后墙外网站间歇性不能访问的问题解决

梯子没问题,但是打开需要翻墙的网站,有时连的上有时却连不上的解决方法。

症状

路由器上使用了科学上网工具,本应该流畅的上网冲浪,但是实际在访问墙外网站过程中,总是有部分网站有时可以打得开,有时又打不开了,间歇性的无法访问让人十分困扰。排除梯子本身的原因,其实是IPV6地址在捣乱。

原因

当用户输入域名后,浏览器会根据电脑的网络设置向DNS服务器请求域名的IP地址,很多墙外网站和一些套了Cloudflare等CDN的网站都同时有A记录(IPv4)和AAAA记录(IPv6)。得到解析后然后再向该IP发送服务请求命令。正常来讲通过路由器科学上网,我们电脑或手机等操作终端的DNS服务器都指向路由器的DNS服务端。由路由器下发解析的IP地址,客户端再进行缓存。

电脑终端dns设置
电脑终端的dns设置

我们使用的梯子,一般是不同时支持IPV4和IPV6的,要么无法通过IPV4翻墙,要么无法通过IPV6翻墙。

在现代Windows、Android等操作系统中,默认IPV6优先于IPV4,一个网站域名同时有A和AAAA记录的话,那么操作系统会自动选择IPV6协议通信。由于绝大部分梯子、机场不支持IPV6,为了能稳定的科学上网,我们一般在路由器中 DHCP/DNS 会设置 过滤IPV6 AAAA记录,也就是不返回解析的IPV6 IP地址。

Openwrt中负责DNS解析的是Dnsmasq,如果Dnsmasq支持AAAA记录,但是发现域名没有对应的IPv6地址,那么会立即返回空的AAAA记录的;如果DNSmasq不支持AAAA记录,不去处理IPv6的解析,那么就不会返回AAAA记录,并且会超时。

目前Dnsmasq的版本都是支持AAAA记录的。如果DNS服务器没有返回AAAA记录,而A记录正常解析先到达,那么浏览器会等待AAAA记录到达,如果没有等到AAAA记录,并且没有收到回复并且超时,才会去使用A记录的IPv4去访问,给人直观印象就是卡顿或不能访问。由于上述原因,我们打开需要翻墙的网站就时灵时不灵。

所以我们需要关闭终端操作系统或路由器的IPV6支持,Windows操作系统关闭IPV6好办,Android系统关闭IPV6就不好办了,所以我们我们需要关闭路由器的IPV6支持,让终端操作系统认为网络没有IPV6环境。

解决

1、关闭ipv6

我们客户端都是通过路由器LAN口和路由器通讯的,所以只要关闭路由器LAN口IPV6支持就行。只使用IPV4就能解决墙外网站间隙性不能访问的问题。

打开路由器网络接口 LAN 后面的编辑,点击高级设置,把IPV6分配长度 设置为“已禁用”。

lan口关闭IPV6
lan口关闭IPV6

然后点击DHCP服务器IPV6设置, 将RA服务、DHCPV6服务、NDP代理 均设置为“已禁用”。

关闭lan口DHCP的ipv6设置
关闭lan口DHCP的IPv6设置

修改后保存,再点保存并应用,完成设置,这样我们家庭的整个网络环境即不再有IPV6,也就解决了访问要翻墙的网站时灵时不灵的问题了。

2、劫持所有DNS解析到路由器

lean的路由器固件默认已经劫持了局域网内dns解析至路由器。对于官方Openwrt则需要劫持DNS解析至路由器。新版Openwrt的固件由于使用了nftables,直接输入iptables命令并不好使。如果是自己编译路由器固件,可以参考建立自己的Openwrt专用脚本来解决。也可以用下列方法解决。

打开网络防火墙端口转发添加自定义规则。常规设置如下图所示:

拦截和重定向DNS查询
拦截和重定向DNS查询

在高级设置处,排除本路由器被劫持,源 IP 地址设为!192.168.1.1,否则它自己的流量将被重定向回它自己。使用该!符号将否定模式匹配。在源ip地址下拉框自定义处输入!192.168.1.1回车并选中。192.168.1.1为本例中路由器地址。

翻墙后墙外网站间歇性不能访问的问题解决

最后在添加一个NAT规则,让DNS响应路由器,而不是被认为为意外来源的DNS。点击NAT规则添加。如图所示:

防止 DNS 客户端在 DNS 重定向后给出意外的源错误
防止DNS 客户端在 DNS 重定向后给出意外的源错误

保存后我们就完成了全部DNS劫持。

3、加入smartdns解决

以上方法如果都不见效,可以见官方openwrt软路由可以完美IPV6启用国内国外ipv6分离彻底解决这个问题。

4、修改Chrome设置

Chrome内置的安全DNS也是导致这个问题出现的原因之一,见Chrome访问网站概率出现err_connection_closed的解决方法

技术不断升级,请注意文章时效性。
本站文章,欢迎转发。转载请注明出处:https://www.bandwh.com/net/1149.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注