前言

之前折腾了Windows下用clash给windows的热点附上魔法,但实际体验还是很不理想啊。tun模式会接管所有流量,导致我访问局域网设备受限(而且我的Switch因为频段问题还没法连网…)
想了想还是买了给r2s来折腾软路由,专业的事还得交给专业的去做。
虽然r2s性能不算强,但家里网是100兆的,200多的r2s对付一下是绰绰有余,据说500兆都够。不是400多的r4s买不起,而是200多的r2s更有性价比
正好手头有个闲置的64g的tf卡,开整!(其实16g就够了)

烧录固件

下载写盘工具balena
https://github.com/balena-io/etcher/releases
下载固件,这个固件仓库开源且收藏量很高,应该比YouTube上分享的不知道哪来的固件靠谱得多
https://github.com/stupidloud/nanopi-openwrt

推荐使用2021-08-24编译的版本,实测稳定得多
https://github.com/stupidloud/nanopi-openwrt/releases?q=2021-08-24&expanded=true

下载后不用解压,直接用balena写入

这样就算成功了

插上电源,sys灯闪烁表示系统启动
接下来用网线将r2s的lan口和电脑的网口连接,r2s的wan口和光猫或者上游路由器的lan口连接
访问192.168.2.1,进入openwrt的后台,默认账号是root,密码是password

配置openclash

固件里是不自带内核的,需要下载内核,但是直接在r2s里下载很可能因为网络原因导致下载失败,这时候可以先把内核下载到电脑上,再将内核上传到r2s
点击下载内核到电脑

然后将内核上传到/etc/openclash/core
通过scp命令传输文件,账号密码和后台管理的账号密码一致

1
scp ./clash-linux-armv8.tar.gz root@192.168.2.1:/etc/openclash/core

通过ssh访问openwrt,账号密码和后台管理的账号密码一致

1
ssh root@192.168.2.1

进入/etc/openclash/core文件夹,解压

1
tar -zxvf clash-linux-armv8.tar.gz

再回后台看看,已经读取到内核了

添加订阅链接

添加好后拉到最底下点击应用配置就会自动启动clash

启动完成后可以点击打开控制面板,就能通过界面选择节点

接下来连接了r2s的电脑就能翻墙了

openclash白名单

我现在把软路由的lan口连接了路由器的wan口,现在所有连了路由器wifi的设备都能科学上网了。
但我不想所有连接路由器的设备都走代理。
发现在访问控制这里设置需要走代理的设备,个人使用的是白名单模式

将设备ip添加到白名单,然后点击应用,再去访问谷歌
emm… 好像不太对

在openclash的后台看一下就会发现,openclash识别的ip全是路由器的ip。
因为路由器做了一层NAT,软路由无法识别到路由器下面的设备的ip,而路由器的ip不在白名单中,其下面的设备自然就没法科学上网了。

上网搜了一下,说是dns改成防火墙转发可以解决,不过我看了半天还是没学会…
我选择将路由器改为AP模式,一般路由器都是能改了,我用的小米路由器,在上网设置这里

拉到最底下然后切换工作模式就行


选择有线中继,这样DHCP就交给软路由负责了

我使用miwifi.com来访问路由器后台的,在点下一步之前先记住路由器的ip。因为原先路由模式下,小米路由器有设置DNS将miwifi.com绑定在自己的后台ip。改为ap模式后,就没有小米路由器的DNS服务了,那么通过miwifi.com是没法访问路由器的后台的,只能用ip访问。不过可以在r2s的DNS服务里再将miwifi.com绑定在路由器的ip。

现在再设置一下白名单,我把电脑的ip填入白名单里。


现在电脑能科学上网了。再看看其他设备。嗯?怎么好像其他设备连国内的网都上不了了…

再去网上搜索一下,虽然不知道这里设置出了什么问题,不过有同样需求的网友们似乎并不是在这里管控白名单的。

点击规则设置,打开自定义规则

自定义规则里已经有了一些示例

##IP段:192.168.1.2-192.168.1.200 直连
##- SRC-IP-CIDR,192.168.1.2/31,DIRECT
##- SRC-IP-CIDR,192.168.1.4/30,DIRECT
##- SRC-IP-CIDR,192.168.1.8/29,DIRECT
##- SRC-IP-CIDR,192.168.1.16/28,DIRECT
##- SRC-IP-CIDR,192.168.1.32/27,DIRECT
##- SRC-IP-CIDR,192.168.1.64/26,DIRECT
##- SRC-IP-CIDR,192.168.1.128/26,DIRECT
##- SRC-IP-CIDR,192.168.1.192/29,DIRECT
##- SRC-IP-CIDR,192.168.1.200/32,DIRECT

##IP段:192.168.1.202-192.168.1.255 直连
##- SRC-IP-CIDR,192.168.1.202/31,DIRECT
##- SRC-IP-CIDR,192.168.1.204/30,DIRECT
##- SRC-IP-CIDR,192.168.1.208/28,DIRECT
##- SRC-IP-CIDR,192.168.1.224/27,DIRECT

##此时IP为192.168.1.1和192.168.1.201的客户端流量走代理(策略),其余客户端不走代理

好好好,这么玩是吗…
确实还很贴心地提供了在线IP段转CIDR地址的网站http://ip2cidr.com

我要查看一下DHCP的配置的ip池范围,不走代理的设备用DHCP自动分配的ip,

看来他是从x.x.x.100开始分配的

那么我们就设置100-255走直连,其他走代理
打开这个网址http://ip2cidr.com
填写ip范围然后这个网站会帮你计算

把计算结果配到自定义规则里去
接下来把要走代理的设备分配一个静态ip地址,要ip段小于100,静态地址分配的租期没有意义,直接设置为永久好了(不用设也行)。


设备断开wifi再重新连接(清一下租约)
访问下Google,可以正常上网

再换台ip段在100-255的设备,能上国内网,但是上不了外网
看看clash日志,可以看到规则这里显示的是我们配置的SrcIPCIDR,说明规则是生效的。

大功告成,后面有哪些设备需要走代理的就手动分配一下静态ip好了!