路由器使用ShellCrash实现科学上网

前言

由于学校放假了,上周末就回老家了。

鉴于老家只有一台华硕路由器,只能正常访问国内网站,连访问Github也要看心情,寻思着要不要买一台小主机组个软路由玩玩,不然这个网真的无法忍受。

于是在逛了几天闲鱼之后,还是决定不买小主机了,原因在于:

小主机价格太贵 ,支持AES指令集的CPU小主机(比如3160),就要300,再加上现在疯长的内存,一台搞下来500左右,性价比不高。

最后,搜索了一下看看能不能尝试直接在路由器上搭建类似OpenWRT上的OpenClash这类应用达到上网的目的,没想到还真有,遂进行尝试。

介绍

用到的应用是 ShellCrash:juewuy/ShellCrash · GitHub

  • 多内核支持:在 Shell 环境下便捷管理及切换 mihomo 与 sing-box 内核。
  • 灵活配置管理:支持在线导入订阅连结及配置文件,简化配置流程。
  • 自动化任务:支持配置定时任务,实现配置文件与规则的自动定时更新。
  • 图形化面板:支持在线安装并使用本地 Web 面板(Dashboard),直观管理内置规则与流量。
  • 多模式运行:支持路由模式、本机模式等多种流量转发模式切换。
  • 一键维护:内置脚本在线更新功能,保持版本与功能的及时更迭。

设备支持

路由器: 理论上支持绝大多数路由器,只要能够获取root权限并且通过SSH登陆终端;(我的路由器是华硕的,本身就支持SSH以及后台登陆账号就是root权限)

其他路由器请自行查询相关资料,少数路由器可以直接刷机,刷成iStore或者OpenWRT,可以的话建议直接刷机一步到位。

华硕路由器可以刷官改固件或者梅林固件,鉴于路由器往往受限于自身硬件性能,刷机后可以外挂存储以及通过创建虚拟内存等方式提升性能,建议刷机。

koolcenter官改,梅改版固件网址:KoolCenter 固件下载服务器

gnuton/asuswrt-merlin.ng固件:GitHub - gnuton/asuswrt-merlin.ng: Extends the support of Merlin firmware to more ASUS routers

安装

本文以华硕TUF-AX3000路由器(刷了koolcenter官改固件)为例进行操作。

如不需要外挂存储以及创建虚拟内存,请直接从第三步开始阅读。

第一步:外挂存储

准备一个读写速度快的U盘,一般建议:读100M/s,写30M/s,格式化为ext4格式插入路由器。

来到软件中心,安装 USB2JFFS

然后进行挂载:

第二步:虚拟内存

来到软件中心,安装虚拟内存

如果硬盘读写测试不通过,可以直接连接SSH后通过终端命令进行创建:

# bs=1M count=512 表示创建一个 512MB 的文件
dd if=/dev/zero of=/swapfile bs=1M count=512
mkswap /swapfile
chmod 600 /swapfile
swapon /swapfile

第三步:安装ShellCrash

访问 juewuy/ShellCrash · GitHub ,查看安装方式,我这边采用:

路由器设备安装 - 使用 curl 安装: - jsDelivr CDN 源,就一条命令:

export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
  && sh -c "$(curl -kfsSl $url/install.sh)" \
  && . /etc/profile &> /dev/null

根据相应的选择进行安装即可,下一步安装目录每个人都不同,一般根据自身选择即可,别名就是快捷启动命名,我选择 2:sc

接着就可以在终端输入 sc 呼出ShellCrash面板,第一次会有引导模式,选择 1 路由设备配置局域网透明代理,后面的自动任务配置可以根据自身需求选择:

第四步:配置ShellCrash

主界面

  1. 功能设置

    路由模式以及DNS设置一般不需要,最多在DNS设置中-修改DNS服务器-一键配置加密DNS;

    域名嗅探建议开启,作用是把原本只有“IP地址”的数据包,还原回“域名”,从而让 ShellCrash 的分流规则判定得更准确;

    自定义端口及密钥,修改一下本机host地址,也就是路由器地址,华硕的是192.168.50.1,小米应该是 192.168.3.1

    ipv6设置:这个分情况,如果不使用ipv6,那么全部关,如果国外不使用ipv6,国内使用,那么ipv6透明路由关,ipv6-DNS解析打开;如果国外国内都使用ipv6,那么都开(这边设置错了可能无法访问国外网站);

  2. 启动设置

    一般不需要动,唯一要看的可能是 设置自启延时,也就是路由器重启后与ShellCrash的启动加载先后顺序造成问题的情况下需要让ShellCrash晚点启动。

  3. 更新与支持

    切换内核文件,Mihomo或者SingBoxR根据自身需求选择;

    安装本地Dashboard面板,选择自己喜欢的管理面板;

    配置自动更新,可以自行设置;

  4. 管理配置文件

    前几个都是生成配置文件的,但是只支持订阅链接的形式,不支持直接输入配置文件。也就是直接输入 https://<订阅地址> 即可。

    这边就是常规的添加订阅链接,生成模版,不多赘述。

配置完成后,回到主界面选择 启动/重启服务 :

验证

启动服务后,我们可以访问 http://<路由器IP>:9999 进入管理面板,如果没有配置密码,只需输入连接的IP地址即可。

定义各种规则后,尝试访问 google.com ,完美!

优化

各种规则的匹配会产生大量的日志,也就是会造成大量的磁盘读写造成性能浪费,可以在管理面板后台把日志的等级设置为 warning 或者 error

最后

毕竟路由器的性能有限,对比常住的家的网络来说,确实能够感觉到一点局限性,最明显的就是访问速度明显有点延时,不过总体还在能够接受的程度。


AdguardHome搭配使用

虽然我不建议在路由器上再装AdguardHome,但是架不住喜欢折腾,虽然我装了之后也被我卸载了。

华硕路由器安装AdguardHome通过以下方式安装:

1.路由器后台安装Entware

2.连接终端

opkg update
opkg install adguardhome-go

3.访问<ip>:3000进行配置,假设其dns监听端口为 3001

4.设置上游服务器为localhost:1053,即ShellCrash的dns地址

5.回到ShellCrash主界面-功能设置-dns设置-dns劫持端口,输入AdguardHome的dns监听端口3001

一般来说,路由器有512M内存,运行了ShellCrash后,尤其是观看外网视频,负载会直线上升,基本很难有多余的内存给AdguardHome使用了,很容易造成内存溢出导致程序卡死或者退出。有能力的小伙伴可以玩玩。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部
0
希望看到您的想法,请您发表评论x