You are here: Home > 更新手札 > 时隔4年,又升级了爬墙工具

时隔4年,又升级了爬墙工具

这次算是个小升级,服务器这边没变化,卸载了个DNS服务,不用了。

而客户端这边,买了个软路由,换成了clash,不用原生v2ray了。

clash玩法就比较多了,规则匹配ip匹配等等,而且有了个新设备,选择性就更大了。目前我用的是比较简单的GFWList白名单方案,虽然GFWList很多年没更新了,可以先观察几个月看看有没有必要升级。

总的思路就是:原来的硬路由当主路由,只保留NAT、路由、DHCP、DNS、Wifi热点、交换机的功能,加解密的功能则由软路由来完成。

然后我又看到一个巧妙的利用clash fakeip的做法:https://blog.lv5.moe/p/use-dns-to-create-split-routing-for-different-domain-or-ip-ranges,很有启发,在它的基础上,我形成的解决方案就是把新软路由当作旁路由来处理,正常流量不经过软路由,只有需要翻墙的流量才经过软路由。也就是说,就算万一软路由死机了、断电了,也完全不影响正常上网。

所以我目前的方案是:DHCP分发的网关、DNS还是主路由地址。主路由的DNS根据GFWList来分发,如果在GFWList里面,转发给旁路由的clash,直接返回一个fakeip;然后主路由添加一个路由规则,fakeip段的数据包转发给旁路由,旁路由添加一个iptables规则,把fakeip段的包转到clash端口……

如果软路由比较稳定,那么可以考虑主DNS也挪到旁路由里,搭配china dns使用:中国的网站直接返回真实IP通过主路由访问,境外的网站返回fakeip通过旁路由的clash,由clash里面的规则进一步判定需要不需要走vmass协议出去……

好了,记录一下配置:

主路由:

  • dns:配置和原来一样,GWFList里面的每个域名都要配一个dns地址,只是从原来的vps的地址换成了旁路由的地址,并且不用通过ipset打标签了。
  • 路由表:原来是通过命令 route add -net 198.18.0.1/16 gw 192.168.x.x设置,后来发现就算加到rc.local里面自动运行也不能保证在重启的时候加上路由表,后来发现openwrt应该在/etc/config/network里面设置静态路由表。等我设好之后,发现在管理网页“网络”-》“静态路由”里面就可以设置……而我之前是在“状态”-》“路由表”里面找,没有看到设置的地方……

旁路由:

  • clash:打开redir端口和dns端口(测试期间可以开socks5端口,以后考虑要不要把redir端口换成tproxy);我这不需要网页控制,所以关闭RESTful web API接口;打开dns,打开fake-ip模式;配置好proxy,目前因为转过来的肯定都要走proxy,所以把rules都删掉了,只留一个MATCH,PROXY。然后因为用的原生clash,没有用luci-app-clash,也没有用openclash,所以还要自己写启动脚本放到/etc/init.d/下面……
  • iptable:在启动里面增加一行:iptables -t nat -A PREROUTING -p tcp -d 198.18.0.0/16 -j REDIRECT –to-port xxxx(clash的redir端口)。如果以后要改成tproxy模式,这里肯定也得改,可以参考这里

发表回复

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