言小五折腾日记:OpenWrt旁路由(旁路网关)开启IPv6及科学上网IPv6相关
本篇文章涉及对需要科学上网且有解析IPv6地址的网站的处理比较简单。本文纯新手向,大神请绕路;可能存在遗漏或者错误,还请在本文评论区中指正,谢谢。
有兴趣可以看一下《系列文章0:言小五折腾日记:IPv6从入门到“放弃”之前言篇》,本文就不啰嗦了,直接上博主自用的配置,如下:
写在前面:iKuai作为主路由,负责DNS加速和缓存(主要是某些特定网站需要指定DNS反向代理以避免内网设备在不科学上网的情况下无法正常访问这些网站)。禁止AAAA记录(IPv6)解析:不勾选开启;DNS加速模式:代理模式 (DoH: DNS over Https)。
iKuai的IPv6设置:
内网接口:lan1
配置类型:自动获取
绑定外网线路:wan1
前缀分配长度:自动
DHCPv6:勾选开启
DHCPv6模式:有状态+无状态
RA通告绑定:不勾选开启
IPv6 DNS:不勾选开启
租期:默认120分钟
本文演示IPv4地址:
iKuai 192.168.1.253
OpenWrt:192.168.1.1
WIN 10电脑:192.168.1.201
运营商为电信,有公网IPv4和IPv6,IPv6前缀为/56。电脑通过iKuai的DHCPv6服务获取到公网IPv6。
本文OpenWrt固件为自编译的精简版,只有ShadowSocksR Plus+(内置MosDNS)和MosDNS独立插件。
1、OpenWrt旁路网关IPv6相关设置:
1.1、OpenWrt 网络 – 接口。默认如下:
1.1.2、接口 – LAN – 常规设置,固定IPv4地址,设置IPv4网关为iKuai的IPv4地址。修改如下:
1.1.3、接口 – LAN – 高级设置,自定义DNS服务器,关闭IPv6。修改如下:
1.1.4、接口 – LAN – 防火墙设置。默认如下:
1.1.5、接口 – LAN – DHCP服务器 – 常规设置,忽略此接口。修改如下:
1.1.6、接口 – LAN – DHCP服务器 – 高级设置,取消勾选动态DHCP。修改如下:
1.1.7、接口 – LAN – DHCP服务器 – IPv6设置,禁用RA服务、DHCPv6服务、NDP代理。修改如下:之后保存。
1.1.8、接口,保存并应用。
1.2、给OpenWrt添加IPv6,接口 – 添加新接口。如下:
1.2.1、添加新接口,名称自定义如IPv6,协议为DHCPv6客户端,设备勾选@lan。创建接口,如下:
1.2.2、编辑IPv6接口 – 常规设置。修改如下:
1.2.3、编辑IPv6接口 – 高级设置。修改如下:
1.2.4、编辑IPv6接口 – 防火墙设置,勾选lan。修改如下:
1.2.5、编辑IPv6接口 – DHCP服务器,默认不配置。如下:之后保存。
1.2.6、IPv6接口编辑完毕之后,保存并应用。如下:
1.2.7、可以看到IPv6接口已经获取到了公网IPv6,一个/128地址,一个/64子网。
1.3、网络诊断,OpenWrt的IPv4网络正常。
1.3.1、网络诊断,OpenWrt的IPv6网络正常。
1.4、网络 – 防火墙 – 常规设置,默认状态如下:
1.4.1、网络 – 防火墙 – 常规设置,取消启用SYN-flood防御,删除wan口规则。修改如下:(因为OpenWrt是旁路网关,所以不需要防火墙,IPv4以及IPv6防火墙均在iKuai进行相关设置)
1.4.2、网络 – 防火墙 – 自定义规则,默认如下:
1.4.3、网络 – 防火墙 – 自定义规则,添加如下规则:(为给指定该OpenWrt为网关的设备添加DNS即53端口的准入规则)
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 [ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 [ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
实际上,按本文操作不添加上述规则也可以,但是保不准哪天一不小心开启了OpenWrt的防火墙导致53端口拒绝其它设备接入。修改如下:
1.5、网络 – DHCP/DNS – 常规,取消勾选唯一授权。修改如下:
2、ShadowSocksR Plus+ 设置
2.1、ShadowSocksR Plus+ 设置 – 客户端,默认如下:
2.2、ShadowSocksR Plus+ 设置 – 服务器节点,修改如下:之后添加节点。
2.2.1、ShadowSocksR Plus+ 设置 – 服务器节点 – 添加节点 – 编辑服务器配置。以REALITY节点IPv4入口为例,如下:
2.3、ShadowSocksR Plus+ 设置 – 访问控制,接口勾选IPv6。修改如下:之后保存并应用。
2.4、ShadowSocksR Plus+ 设置 – 高级设置。修改如下:之后保存并应用。
2.5、ShadowSocksR Plus+ 设置 – 客户端。选定主服务器,运行模式为绕过中国大陆IP模式,DNS解析方式选择使用MosDNS查询。如下:
2.5.1、勾选禁止 MosDNS 返回IPv6记录。如下:
2.6、ShadowSocksR Plus+ 设置 – 状态:各项服务正常,连通性正常,更新各数据库正常。如下:
2.7、打开iKuai – DHCP设置 – DHCP静态设置,给WIN 10电脑指定网关和首选DNS为该OpenWrt的IPv4地址,即192.168.1.1。如下:WIN 10电脑,网络连接里面禁用当前网卡,然后再次开启,用于获取最新的IPv4地址、网关、DNS服务器。
2.8、浏览器打开 ip.sb ,可以正确检测到科学节点的IPv4地址,而IPv6因为在ShadowSocksR Plus+中设置MosDNS禁止返回IPv6记录,所以 ip.sb 网站无法检测到IPv6。
注:这跟在WIN 10电脑上使用v2rayN客户端选择白名单模式上网是不一样的,v2rayN客户端白名单,在 ip.sb 网站中是可以正常检测到科学节点的IPv4以及IPv6。原理是电脑使用v2rayN客户端科学上网,是电脑通过v2rayN客户端连上科学节点,然后通过科学节点去访问 ip.sb 网站;OpenWrt旁路网关的ShadowSocksR Plus+是电脑请求网址到OpenWrt,OpenWrt通过ShadowSocksR Plus+内置的MosDNS来返回解析记录,而MosDNS开启了禁止返回IPv6记录,只返回IPv4记录。
以上。
本文到这里就可以结束了,以下是一些进阶相关,可以参考。
3、ShadowSocksR Plus+ 内置MosDNS进阶相关:
3.1、ShadowSocksR Plus+ 设置 – 客户端,运行模式选择为GFW列表模式,浏览器打开 ip.sb ,可以看到正确显示WIN 10电脑所在宽带的公网IPv4以及电脑自身获取到的IPv6,因为 ip.sb 这个域名不在GFW列表内。
3.1.1、ShadowSocksR Plus+ 设置 – 访问控制 – 强制走代理的域名,添加 ip.sb,如下:
3.2、ShadowSocksR Plus+ 设置 – 客户端,运行模式选择GFW列表模式,保存并应用。
3.2.1、浏览器打开 ip.sb ,依旧只返回节点的IPv4,原理跟2.8一样,ip.sb这个网址不在GFW列表内,但是这个网址添加到了强制走代理的域名中,MosDNS请求该域名的解析时,命中“强制走代理”这个规则,故而不返回IPv6记录。
总结:先补充一个知识点:在设备有IPv4以及IPv6双栈的情况下,访问网站是IPv6优先的。根据ShadowSocksR Plus+设置的运行模式,以及内置MosDNS就可以解决绝大部分用户的科学上网需求。
ShadowSocksR Plus+运行模式为GFW列表模式时,MosDNS解析过程中匹配GFW列表以及访问控制中的域名列表来分流。在以上列表中的域名只返回IPv4记录,不返回IPv6解析记录。不在以上列表中的域名则返回IPv4和IPv6并优先访问IPv6,除非该网站没有IPv6。同理,ShadowSocksR Plus+运行模式为绕过中国大陆IP时,MosDNS返回解析的IPv4/IPv6并匹配本地的中国大陆IP数据库,若IP为中国大陆IP,则优先IPv6访问,除非该网站没有IPv6;若IP为非中国大陆IP,则只返回IPv4(不管这个网站有没有IPv6,只当这个网站不支持IPv6就行了)。
还有一种情况,就是某网站只支持IPv6,不支持IPv4,网站域名还被墙了,额,这样的网站还访问它干嘛。
4、ShadowSocksR Plus+ 搭配 MosDNS独立插件 进阶:
4.1、ShadowSocksR Plus+ 设置 – DNS解析方式选中为使用本机端口为5335的DNS,如下:
4.2、打开MosDNS,MosDNS – 基本设置 – 基本选项:(设置完之后保存)
勾选已启用
配置文件为内置预设
监听端口为5335
日志等级为信息
日志文件默认即可
DNS转发取消勾选
远程DNS首选IPv4勾选
自定义国内DNS勾选
Apple域名解析优化勾选
国内DNS服务器:192.168.1.253 (即iKuai)
远程DNS服务器:谷歌公共DNS 8.8.8.8
自定义流媒体DNS:默认不勾选,根据自身需求选择。
Bootstrap DNS 服务器:192.168.1.253 (这个选项是如果国内DNS用的是DoT/DoH DNS服务器,那么这里要选择一个DNS来解析国内DNS服务器地址;比如说国内DNS选择“阿里云公共 DNS(DNS over HTTPS)”,那么需要选择一个DNS来解析阿里云公共DNS的IP地址。)
4.2.1、MosDNS – 基本设置 – 高级选项:(设置完之后保存)
防止DNS泄露:勾选
启用DNS缓存:勾选,缓存大小和乐观缓存默认即可。
启用DNS广告过滤:默认是不勾选的,根据自身需求来。本文示例选择勾选,广告过滤规则来源选择anti-AD,这个规则用的人最多,但也存在误杀。
4.2.2、MosDNS – Cloudflare选项(实验性功能):这个默认是不启用的。启用不启用根据自身需求来。
这里启用相当于是Cloudflare的IP优选,对某些使用了Cloudflare CDN的网站有效,如果需要启用,则需要自己优选2到4个IP地址。原理很简单,解析域名的IP与Cloudflare的IP段进行匹配,匹配成功,则返回你自己优选的IP地址,反之则返回原本解析的IP。
开启Cloudflare选项的优点是凡是使用了Cloudflare CDN的网站,都可以根据你自己设置的优选IP来访问。缺点是你访问的所有网站在MosDNS解析之后都要与Cloudflare的IP段进行匹配,相当于MosDNS返回解析IP的过程中多了一个匹配过程;优选IP是需要自己根据自家宽带运营商去测试并选定,且优选IP是有时效性的。
什么情况下会用到这个Cloudflare选项呢?
使用Cloudflare CDN的网站主要有两种:
一是使用Cloudflare默认分配的IP,但是中国大陆用户访问这些IP并不一定是最快的,可能存在默认分配的IP是被墙的,那么这个时候,就可以开启MosDNS的Cloudflare选项。
二是通过cname等别的方式来优选Cloudflare的IP解析(网站使用优选IP主要是针对国内用户),这种情况针对中国大陆大多数用户是很友好的,但是不排除运营商省级公司喜欢搞事,就是省墙。比如博主常用的某个PT网站使用了这种Cloudflare IP优选方式,但是优选的诸多IP,据PT站论坛反馈来看,中国大陆绝大多数地区运营商都能正常访问,但是博主家所使用的电信宽带却没法访问;博主在发文前采用的方式就是在iKuai的DNS中指定DNS反向代理为博主自己优选的IP,但是除了这个PT站,还有很多使用Cloudflare优选IP的网站都是这个结果,博主不可能每一个都设置DNS反向代理。故而MosDNS的Cloudflare选项对于博主是有好处的,MosDNS匹配Cloudflare IP段的过程忽略不计,只需要时常维护这几个优选IP。
4.2.2.1、这里贴一张博主开启Cloudflare选项的截图,如下:
4.2.3、MosDNS – 基本设置 – API选项,这个一般用不上,不过在这里可以刷新MosDNS的DNS缓存。
4.2.4、MosDNS – 规则列表,这里有各种自定义规则,配合 MosDNS – 基本设置- 基本选项中的内置预设来使用。
白名单:加入的域名始终允许使用 “本地 DNS” 进行解析,且优先级最高(每个域名一行,支持域名匹配规则)
黑名单:加入的域名将屏蔽 DNS 解析(每个域名一行,支持域名匹配规则)
灰名单:加入的域名始终使用 “远程 DNS” 进行解析(每个域名一行,支持域名匹配规则)
DDNS域名:加入的域名始终使用 “本地 DNS” 进行解析,并且强制 TTL 5 秒,解析结果不会进入缓存(每个域名一行,支持域名匹配规则)
Hosts:自定义 Hosts 重写,如:baidu.com 10.0.0.1(每个规则一行,支持域名匹配规则)
重定向:重定向请求的域名。请求域名 A,但返回域名 B 的记录,如:baidu.com qq.com(每个规则一行)
PTR黑名单:加入的域名将阻止 PTR 请求(每个域名一行,支持域名匹配规则)
流媒体:启用 “自定义流媒体 DNS” 时,加入的域名始终使用 “流媒体 DNS 服务器” 进行解析(每个域名一行,支持域名匹配规则)
4.2.5、MosDNS – 更新数据库,一般启用自动更新,在闲时自动更新,GeoIP为轻量,Github代理根据需求来。
4.2.6、MosDNS全部设置好之后,(ShadowSocksR Plus+ 运行模式为本文第3条中所述的GFW列表模式)再在浏览器中打开 ip.sb 这个网站,可以看到返回了科学上网节点的IPv4,但是IPv6返回的是WIN 10电脑所获取到的IPv6。如下所示:
这是因为MosDNS的远程DNS是首选IPv4,并没有禁止解析IPv6,而 ip.sb 这个网站获取访客IPv4和IPv6使用的并不是 ip.sb 这个域名,而是ipv4.ip.sb来获取IPv4,ipv6.ip.sb来获取IPv6。
可能有网友想问了,IPv6都漏了,还不如直接用ShadowSocksR Plus+内置的MosDNS直接禁止返回IPv6解析结果呢(是对的呢,这样最简单。)。在此,博主只想说,一般只有测试IPv4/IPv6相关的网站采用这种子域名分别解析IPv4/IPv6的情况,不排除某些其它网站也用这种方式,但是博主常用的需要科学上网的网站是没有用子域名分开解析方式的。
以上,全文结束。
2 thoughts on “言小五折腾日记:OpenWrt旁路由(旁路网关)开启IPv6及科学上网IPv6相关”
生活博客完全转型技术博客 ^_^
@轨迹 嘿,就是瞎折腾。