家里闲置了一台Mac,最近在想能不能把作为旁路由,装上Clash,来实现家里所有设备屏蔽广告和魔法的功能。
查了些资料,也踩了些坑,但是最后实现效果还是很理想的。Mac的性能,用来当旁路由,绰绰有余,性能刚刚的。
下面记录下教程,以及踩过的坑,以供参考。
先弄清楚旁路由到底是个啥?在旁路由里,流量是怎么流动的?
可以参考这篇文章: https://zhuanlan.zhihu.com/p/112484256
一定要理解流量走向:
注意请求,都是先从你的设备(比如手机),送到主路由器上,然后送到旁路由上(在这里也就是Mac的Clash上),然后送回到主路由上,最后发到广域网里。
建议使用 Clash Verge:https://github.com/zzzgydi/clash-verge ,配合Meta内核,使用TUN模式屏蔽广告。
网上都是推荐使用ClashX Pro,配合增强模式,来实现旁路网关的。但我更偏向于TUN模式,而且这两种我都试过,个人体验上,还是前者更好用一些,推荐。
下载包,安装好。
注意,内核需要权限,如果日志报错Start TUN listening error: configure tun interface: Connect: operation not permitted
,请参考https://github.com/zzzgydi/clash-verge/issues/490,执行如下语句:
sudo chown root:admin /Applications/Clash\ Verge.app/Contents/MacOS/clash sudo chmod +sx /Applications/Clash\ Verge.app/Contents/MacOS/clash sudo chown root:admin /Applications/Clash\ Verge.app/Contents/MacOS/clash-meta sudo chmod +sx /Applications/Clash\ Verge.app/Contents/MacOS/clash-meta
自行添加。
记得使用TUN模式。
旁路由IP最好不要变动。
参考:https://blog.csdn.net/qq_15437667/article/details/50743182
步骤如下。
sudo sysctl -a | grep forward
sysctl -w net.inet.ip.forwarding=1 sysctl -w net.inet6.ip6.forwarding=1
sudo vim /etc/sysctl.conf
然后贴入
net.inet.ip.forwarding=1 net.inet6.ip6.forwarding=1
wq保存并退出。
观测,除了clash verge的日志,和面板左下角的折线图,还可以利用yacd站点来观测。
地址:https://yacd.metacubex.one/
应用内外部控制填::9090
,yacd站点里,填旁路由IP。
可以使用手机或另一台电脑进行测试。
手机连接Wi-Fi,高级设置,IP设置,静态,网关填Mac的IP,DNS1也填Mac IP。
其实选择使用第五步手动连接已经可以满足大部分需求了,如果不想手动连,那么可以设置路由器的DHCP服务器,来实现所有连接了路由器的设备都自动走旁路由。
路由器上,将DHCP服务器设置为旁路由即可。
本文作者:Ray
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
特别感谢:alicenetworks