最近博主入住了新的宿舍,在网络上面也有了新的需求,于是折腾了一下iStoreOS作为旁路由给手机前置的模式。鉴于上次在博客更新的论文通讯引来不少唏嘘,我们还是回归正轨搞点网络相关的吧~
一、背景
最近博主顺利完成了升学,但是由于宿舍位于家属区没有校园网接入,学校装修时只在弱电箱预留了通往每一个房间的网线。考虑到博主这个阶段每天除了睡觉之外在宿舍的时间屈指可数,于是拉了一条最便宜的移动校园宽带,套餐是最长4年的每月39r的校园卡(165G国内流量+100分钟通话)和10r每月的200M宽带。反正学校会相应提供通信补贴,搞一张信号更好的移动卡也是比较实用的。
移动提供的光猫型号是星网锐捷H50G,性能尚可但是没有内置的WiFi,因此加上通往三个房间的网线需要4个有线网口。其中,AP我选择的是华为FTTR子猫K662d,仅需30块即可获得AX3000规格的无线体验。华为K662d的两个网口在检测到上联存在DHCP和网络连入时会自动切换到AP模式,非常适合当做光猫的天线来使用,但是要注意软件版本较早的R22这样使用才不会断网。
这时候你可能会好奇,博主这种喜欢折腾的人怎么会不买路由器直接用光猫拨号呢?这说来呢有四个方面的原因:第一是在宿舍时间太少,花几百软路由意义不大;第二是硬件,除了7981b路由和太乙,还得加一个交换机才够用,而内存太小Tailscale还跑不动;第三是之前的满怀期待被瑞莎A5E浇灭的很透彻,短时间内并不想再碰ARM开发板的软路由。
最后一点也是最重要的,我的Radxa E20C拿去硕导位于校外的新办公室了,博主手里现在完全没有适合充当软路由的硬件了。这套组网结构如上下图,主要是做了分流用于接入实验室内网和解决文献访问等问题,总体是较为稳定可靠的。因为与本文无关,就不在此展开赘述了,有兴趣的话我们可以私下交流(博主终于学会了打网线,第一次做弱电箱的规划)。
二、需求
直通光猫联网在电脑上并没有什么明显的影响,毕竟Tailscale和校园网代理等应用挂在后台是无感的,此外还可以简便地添加hosts来实现调试的需求。但换到使用最多的手机上就完全是另一回事了,在没有root的条件下各种网络层面的应用都只能通过系统VPN接口来调起并且互相冲突,让博主这个习惯了呆在软路由下面的人十分不适(尤其是Tailscale APP)。博主的老笔记本常年开机当台式机在用,于是想到在电脑上开一个OpenWrt的虚拟机作为旁路由,主要实现以下需求:
① DHCP:由光猫控制,下发IPv4和IPv6,手机指向旁路由
② DNS:由软路由控制,强制为接入设备的解析并剔除IPv6解析
③ 网络:只处理IPv4,旁路由仅SLAAC从光猫获取IPv6用于打洞
④ 功能:前置Tailscale虚拟组网和学术资源分流代理
⑤ 接入:手机WiFi连接时指定网关和DNS为旁路由
三、实践
虚拟机
OpenWrt有诸多优秀的开发版可供使用,诸如ImmortalWrt(点击前往)和Kwrt(点击前往)等,但是对于单臂路由而言,首次使用时均需编辑/etc/config/dhcp
为LAN指定固定IP后才能够进入Web界面进行可视化的管理。而iStoreOS(点击前往)能够智能识别联网模式,从虚拟机启动后即可通过IP访问管理界面,此外还具备简便的在线更新、商店和镜像源切换等便捷功能。因此,博主的最终选择使用iStoreOS作为旁路由的系统。
一般情况下OpenWrt的镜像为img格式,我们只需要使用StarWind V2V转换器(点击前往)将其转换为vmdk挂载即可正常开机使用。如图,导入和导出时均选择Local file选项,同时导入选择解压后的img文件、导出选择vmdk文件即可,磁盘类型选择growable。如上图所示,仅需按照正常的虚拟机引导进行创建,如不使用docker给予1c 512M配置即可稳定运行。随后删除先前硬盘并挂载转换而来的vmdk,并将网络适配器设置到桥接的VMnet上。如果不清楚桥接到的网卡是否正确,可以在VMware工具栏的编辑-虚拟网络编辑器中进行查看和修改。
虚拟机的开机自启VMware 17已经支持,不好用的话只需要写一个包含vmrun的bat脚本丢进StartUp文件夹即可。
1 2 3 4 5 |
# Windows开机启动文件夹 # C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp # 以下为StartVM.bat脚本内容 @echo off D:\Software\VMware\vmrun.exe start "E:\VM\iStoreOS\iStoreOS.vmx" |
旁路由
iStoreOS自带的网络向导可以简便地将OpenWrt配置为旁路由模式,仅需按照其流程选择自动配置即可。
配置完成后,来到网络-接口界面可以看到当前路由器仅有IPv4,并不具备IPv6联网能力。此时,可以通过添加新接口按钮增加一个协议为DHCPv6、设备为br-lan的接口,保存后旁路由即可从光猫拿到IPv6地址。
目前DHCPv6有一个普遍存在的问题,宽带的PPPoE定期下线重播时,之前获得的DHCPv6可能尚未超过有效期而释放进而导致IPv6网络不通的情况。我们可以通过修改接口的设置,分别在常规设置与高级设置中取消或禁用下图中的选项,以关闭有状态的DHCPv6而仅通过SLAAC获取无状态的IPv6地址。
最终效果如下图,至此旁路由自身网络配置完成。
此外,可以在网络中-DHCP/DNS的过滤器中,根据需求取消重定向保护并勾选过滤IPv6 AAAA记录。如此的原因是在博主的配置方案中,终端设备上的IPv6依旧由光猫直接下发,不会经过旁路由。通过禁止IPv6解析,既不影响依赖IPv6的工具直通公网,同时避免解析到v6时访问会绕过旁路由的问题。其余诸如DNS、软件源和插件等iStoreOS均提供了非常友好的向导,可以根据自己需求进行配置。
应用
Tailscale的安装和接入不再赘述,其正常运行后我们能够看到一个tailscale0的接口。
最主要的是如图防火墙的设置,转发到和来自的源区需要均包含LAN。
接入
接入的过程非常简单,不管是手机还是电脑,只要在DHCP获得的信息基础上修改网关和DNS指向旁路由即可。接下来,不管是Tailscale的虚拟局域网,还是前置代理的学术资源,抑或是Adguard的DNS过滤均可使用。
在摸索接入过程中,博主发现虽然安卓的WLAN设置虽然有HTTP代理的选项,但是很多应用并不调用系统代理,因此旁路由仍然是解决这一问题的最优选择。另外,一些工具中包含DNS重定向,即强制需要代理的设备使用专用 DNS 服务器功能也应当进行勾选。
四、结语
旁路由的配置方案有很多种,还包括主路由修改DHCP参数到旁路由、主路由关闭DHCP由旁路由下发等无感方案。对博主而言,这些对想要解决的问题无益,就没有继续进行探索了(很大一部分原因是运营商的光猫并没有很多自主权)。
博主也是刚刚接触OpenWrt半年,随手做的小记势必有很多不完美的地方,欢迎大家在评论区指出问题和提出建议~
*原创文章,转载请注明出处
旁路由IPV6透明代理怎么搞