5897 字
29 分钟Add commentMore actions
ShellCrash使用指南
juewuy
/
ShellCrash
Waiting for api.github.com...
00K
0K
0K
Waiting...
NOTE

ShellCrash 本身只是一个脚本,还需要搭配 Mihomo/singbox 等内核来使用。

功能简介:#

  • 通过管理脚本在Shell环境下便捷使用Mihomo/Singbox内核
  • 支持在Shell环境下管理
  • 支持在线导入订阅及配置链接
  • 支持配置定时任务,支持配置文件定时更新
  • 支持在线安装及使用本地网页面板管理内置规则
  • 支持路由模式、本机模式等多种模式切换
  • 支持在线更新

设备支持:#

  • 支持各种基于OpenWrt或使用OpenWrt二次定制开发的路由器设备
  • 支持各种运行标准Linux系统(如Debian/CenOS/Armbian等)的设备
  • 兼容Padavan固件(保守模式)、潘多拉固件以及华硕/梅林固件
  • 兼容各类使用Linux内核定制开发的各类型设备

更多设备支持需提供设备名称及运行 uname -a 返回的设备核心信息至 issue

安装与使用#

安装方式:#

  • 确认设备已经开启SSH并获取root权限(带GUI桌面的Linux设备可使用自带终端安装)
  • 使用SSH连接工具(如puttyFinalShell ,系统自带终端等)路由器或Linux设备的SSH管理界面或终端界面
  • 在SSH界面执行目标设备对应的安装命令,并按照后续提示完成安装

在线安装:#

如无法连接或出现SSL连接错误,请尝试更换各种不同的安装源!

  • 标准Linux设备安装:
Terminal window
sudo -i #切换到root用户,如果需要密码,请输入密码
bash #如已处于bash环境可跳过
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && bash /tmp/install.sh && source /etc/profile &> /dev/null

或者

Terminal window
sudo -i #切换到root用户,如果需要密码,请输入密码
bash #如已处于bash环境可跳过
export url='https://gh.jwsc.eu.org/master' && bash -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
  • 路由设备使用curl安装
Terminal window
#GitHub源(可能需要代理)
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null

或者

Terminal window
#jsDelivrCDN源
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null

或者

Terminal window
#作者私人源
export url='https://gh.jwsc.eu.org/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
  • 路由设备使用wget安装
Terminal window
#GitHub源(可能需要代理)
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null

或者

Terminal window
#jsDelivrCDN源
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
  • 老旧设备使用低版本wget安装
Terminal window
#作者私人http内测源
export url='http://t.jwsc.eu.org' && wget -q -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
  • 虚拟机/Docker环境安装:

虚拟机或Docker环境推荐使用Alpine镜像安装

这里以Docker为例 (其他虚拟机请自行查找安装Alpine镜像安装教程)

Terminal window
#注意,以下命令请分步执行!
#Docker一键启动Alpine镜像
docker run -d --name ShellCrash alpine sleep infinity
#进入容器内sh环境
docker exec -it ShellCrash sh
#安装必要依赖
apk add curl
apk add nftables
#执行安装命令
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null

运行时的额外依赖#

NOTE

大部分的设备/系统都已经预装了以下的大部分依赖,使用时如无影响可以无视之

依赖包重要性作用
curl/wget必须全部缺少时无法在线安装及更新,无法使用节点保存功能
iptables/nftables重要缺少时只能使用纯净模式
crontab较低缺少时无法启用定时任务功能
net-tools极低缺少时无法正常检测端口占用
ubus/iproute-doc极低缺少时无法正常获取本机host地址

本地安装:#

如使用在线安装出现问题,请参考:本地安装ShellCrash的教程 进行本地安装!

使用脚本:#

安装完成管理脚本后,执行如下命令使用~

Terminal window
crash #进入对话
crash -h #帮助列表

目录结构#

安装目录:#

默认安装目录为/etc/clash/data/clash

可手动指定任意目录安装,安装完成后可以使用【echo $CRASHDIR】命令查询安装目录

目录包含以下文件:

  • CrashCore:clash或者singbox核心文件

  • menu.sh/start.sh/getdate.sh:ShellCrash运行脚本文件

  • Country.mmdb:Geoip数据库文件

  • configs/:脚本设置相关文件

  • yamls/:clash的yaml相关配置文件

  • jsons/:singbox的json相关配置文件

  • /ui/*:本地dashboard网页文件及PAC文件

服务文件:#

OpenWrt的服务文件为/etc/init.d/shellcrash

Debian/Centos/Armbian等标准Linux系统的服务文件在/etc/systemd/system或者/usr/lib/systemd/system/下,名为shellcrash.service

功能说明#

  1. 启动/重启内核服务

  2. 功能设置:

    1. 切换运行模式:支持切换多种运行模式,主要涉及iptablesnftables的不同配置
    2. 切换DNS模式:支持切换fake-ip或者真实ip的dns模式
    3. 跳过本地证书验证:当节点出现证书验证错误时使用此选项可以使节点正常使用
    4. 只代理常用端口:只代理22,53,587,465,995,993,143,80,443等常用端口,主要用于屏蔽p2p流量
    5. 过滤局域网mac地址:使用黑名单或白名单方式依照局域网设备的网卡mac地址进行过滤,被过滤的设备不会走clash的dns以及透明路由
    6. 设置本机代理服务:使用环境变量或者iptables/nftables对本机发出的流量进行路由,路由设备通常无需开启
    7. 屏蔽QUIC流量:使用iptables或者nftables,对443端口的udp请求进行reject,由于改善YouTube访问速度,如果你需要使用ChatGPT,建议不要开启
    8. 绕过CN-IP(Redir-Host模式):使所有在CNIP列表内的地址不走clash内核的透明路由,以提升对应地址的访问速度
    9. 管理Fake-ip过滤列表:用以自定义额外的Fake-ip-filter域名,防止部分地址因fake-ip导致无法访问
  3. 停止内核服务: 停止内核服务并且停止相关的一切路由、防火墙以及本机代理规则

  4. 内核启动设置:

    1. 允许/禁止开机启动:禁止或者启用开机启动服务
    2. 使用保守模式:不使用OpenWrt的procd或者Linux的Systemd服务进行启动,改为使用linux系统通用的nohup &方式启动并配合crond服务进行进程守护
    3. 设置自启延时:首次开机启动时,延迟若干秒进行启动,用于解决部分设备直接启动时无法正确启动或者无法正确配置透明路由的问题
    4. 启用小闪存模式:将体积较大的内核文件、GeoIP数据库文件等放在内存或者自定义的外置存储目录中,减少闪存占用
  5. 管理自动任务:功能强大的自动任务,可智能配置各种定时任务及条件任务。

  6. 管理配置文件:生成、下载、管理clash及singbox配置文件,并配置相关内容自定义覆写

  7. 进阶设置

    1. ipv6相关:对ipv6进行支持的相关配置
    2. 配置公网及局域网防火墙:脚本默认屏蔽了面板及http代理端口从公网的访问流量,可以通过此处进行开启
    3. 启用域名嗅探:Meta专属功能,通过读取ip链接中的域名信息,对域名进行还原,可以优化TV平台视频软件的连接效果
    4. 配置内置DNS服务:对clash的内置DNS进行额外配置
    5. 重置/备份/还原脚本设置
  8. 其他工具

    1. 测试菜单:一些用于debug或者测试运行的快捷命令
    2. 新手引导:用于重新进入新手引导
    3. 日志及推送工具:用于查看ShellCrash脚本的运行日志,或者配置日志推送通道将相关日志推送到Telegram等软件
    4. 小米系统自动更新:用于禁止小米路由系统的自动更新
    5. 小米设备软固化SSH:用于小米路由官方系统通过脚本内置软件在开机启动时自动打开SSH服务
    6. 配置DDNS服务(限OpenWrt):下载额外的脚本,可以打开OpenWrt定制系统更多的DDNS设置
    7. 小米设备Tun模块修复:由于部分小米路由设备,修复因刷机等导致的Tun模块丢失问题
  9. 更新/卸载

    1. 更新管理脚本:在线更新管理脚本
    2. 切换核心:在线更新/切换核心
    3. 更新Geo数据库:在线更新各种Geo数据库文件
    4. 安装本地Dashboard面板:安装本地面板
    5. 安装更新本地根证书文件:用于解决部分设备出现SSL证书验证失败的问题
    6. 查看本地PAC文件:用户部分设备快捷配置本地http代理
    7. 切换安装源及安装版本:内置了多个不同安装源以及安装版本用以切换,也包括版本回退
    8. 卸载:完全移除所有ShellCrash的相关文件和相关环境变量,该操作不可逆
Terminal window
crash -t #测试模式
crash -h #帮助列表
crash -u #卸载脚本
crash -s start #启动/重启服务
crash -s stop #停止服务
crash -s updateyaml #更新配置文件
安装目录/start.sh init #开机初始化

控制面板#

有多种控制面板可供选择,你可以通过访问在线地址来直接使用控制面板:

面板类型在线地址
Clash 官方面板http://clash.razord.top
Razord-meta 面板http://clash.metacubex.one
yacd 面板http://yacd.haishan.me
Yacd-meta 面板http://yacd.metacubex.one
metacubexd 面板http://d.metacubex.one

使用在线控制面板时需要配置主机的 host 和端口(ShellCrash 启动 Clash 时提示),但如果你的 host 非 https,那么你应该确保访问在线面板的 http 版本,否则将被浏览器拒绝连接。

TIP

当然,建议直接将面板安装到设备上: 通过 ShellCrash 的更新/卸载选项进入安装本地Dashboard面板功能即可执行安装

常见问题汇总#

一些运行中常见的问题汇总

日经问题#

  • XX设备能不能安装?

理论上只要开启/破解了SSH的Linux设备都可以安装,请先用安装脚本自行尝试,如果无法安装或者无法运行也可以找作者适配

  • XX设备能跑多快?

设备能跑多快取决于你设备的CPU性能,或者是否支持硬件解码AES加密

软解性能:常见的双核mt7621,使用chacha20系加密,极限可以跑满100M;常见的A53 4核SOC,极限可以跑500-700M。

硬解性能:AX3600/AX6等支持硬解AES的设备跑单层aes加密可以跑满千兆

  • XX功能能不能实现?

提问前请先去2-功能设置,7-进阶设置,8-工具列表里确认是否有相关功能!

如果是确认没有的功能请去→Github提交issue!

  • 与XX应用是否兼容?

由于ShellCrash的Redir/混合/Tun模式在运行中需要劫持局域网流量及DNS才能进行透明代理,所以ShellCrash不能与各类同样基于流量劫持的应用直接共存,例如:

广告过滤插件网游加速器SmartDNS、以及各类同类代理应用

但是你依然可以通过以下方式兼容运行

​ 1、如果是依赖劫持DNS服务的应用比如SmartDNS或者广告过滤插件,请参考:https://t.me/ShellClash/148

​ 2、使用ShellCrash的局域网过滤功能或纯净模式,分设备进行代理


  • 为?什?么?PING?不?通?

ping命令基于ICMP协议,clash暂不支持代理ICMP协议,请使用curl或直接浏览器访问进行测试!!!

部分教程对应的脚本版本可能已经比较陈旧,请酌情参照!

脚本安装运行相关#

  • 安装失败,提示无法连接或者完全没反应

​ 可能是安装源被运营商屏蔽了,请切换和尝试使用不同的安装源或者使用本地安装

  • 安装失败,提示tar 相关错误

​ 可能是安装目录剩余空间不足或者权限不足,请切换安装目录或者使用root用户安装

  • 安装失败,提示Https相关错误

​ 请使用wget及http源安装

  • 安装/重装失败,提示Failed to connect 127.0.0.1……

​ 可能是之前设置了本机代理,并且没有正确使用脚本卸载的原因,可以使用如下命令清除本机代理后再安装

unset all_proxy && unset ALL_PROXY

  • 下载更新内核、脚本、面板、数据库等文件一直失败

​ 请使用0-返回上级菜单,9-更新,7-切换安装源功能,切换安装源,并尝试使用可以正常更新的源

​ 如果依然无法更新,使用本地安装

  • 在线生成配置文件失败或者导入订阅失败

​ 请确保配置文件是标准的clash配置文件格式,如果不确定配置文件格式请使用6-1在线生成配置文件功能

​ 如果依然无法获取,可以使用脚本提示的链接在浏览器中手动下载该配置文件后并使用Winscp手动上传到/tmp文件夹,之后运行脚本即可导入

  • 安装的新版本有问题,如何回退到旧版本?

​ 目前只支持回退到一部分release版本

​ 使用9-更新,切换安装源,切换版本功能,切换至想回退的版本,之后重新更新脚本或内核文件即可完成回退

脚本服务运行相关#

  • 如何导入配置文件、订阅链接、节点分享链接?

​ 支持导入各种形式的订阅链接,使用6-1功能即可

​ 支持导入各种形式的节点分享链接,使用6-1或者6-6自定义节点(限clash内核)功能即可

​ 不支持直接填写节点数据,请尽量使用分享链接!trojan的分享链接格式为trojan://password@host:port

  • 如何使用自定义的端口、设置、规则以及锚点、ruleset等高级功能?

​ 你可以通过6-配置文件管理,6-自定义配置文件,功能来管理或者调整以上功能

  • 内核服务无法正常运行 ​ 请先使用8-测试菜单,1-查看内核运行报错信息 ,查看运行时的报错并根据报错内容排查是否是配置文件有问题。

    • 如果提示为 “空” 或者 “Bus error” 或者 “Permission denied” ,则代表内核不完整,请前往更新页面重新安装内核

    • 如果提示为 “ERRO[0000] rules [0000]” 则代表自定义配置文件有问题,请自行检查配置规则

  • 本地面板下载或安装失败

​ 如果有下载或安装失败,请首先尝试使用9-7更换安装源重新安装

​ 如果换源安装依然失败,请使用 df -h $clashdir 命令检查设备存储空间是否充足

​ 如果依然不能解决问题,请前往Github 下载面板文件,解压之后用winscp手动上传到安装目录(echo $clashdir) 的/ui文件夹下

  • 斐讯官方/官改固件设备设置开机启动无效,必须手动重启clash

​ 这是固件启动后会重置iptables的问题导致的,请取消开机启动功能,之后把以下语句 sleep 120 && /etc/clash/start.sh start ​ 写入路由器管理界面-高级设置-开机启动,功能内即可

  • 其他设备设置开机启动无效,必须手动启动clash

​ 部分固件可能尚未适配,请自行寻找添加开机启动脚本的方法,并将如下语句添加为开机执行: export clashdir="你的安装目录"&&$clashdir/start.sh init

网络相关问题#

  • 无法访问一切国外网站但国内正常

    ​由于部分中继设备不使用nat转发而是直接使用路由表转发,所以无法配置透明路由,此类设备无法使用主路由模式,如果强行使用,必须依照旁路由设置,将设备的DNS和网关地址都指向运行clash服务的设备

    ​也可能是节点配置问题,请先确认节点可用。之后在Dashboard面板中对节点进行手动测速,以及查看访问日志,判断问题所在

    ​如果节点测速失败且日志上显示任何与 x509 相关的错误,请使用6-1重新生成配置文件,并保证启用跳过本地证书验证功能

    ​如果节点测速成功但依然无法访问,且没有日志显示,则是内核没有正确接管流量,请尝试切换不同的运行模式

  • 无法访问部分国外网站,提示证书错误等,或者Dashboard面板只显示IP没有域名

    1. 可能是由于本地DNS污染导致的,redir-host模式下,可能需要手动配置dot或者doh类型的加密dns;通常直接把dns模式切换到fake-ip模式都能够解决此类问题;也可以升级到最新版本,在使用Meta或者Pre内核的前提下,启用域名嗅探功能
    2. 可能是浏览器启用了安全DNS导致clash内核无法接管DNS服务,请更换浏览器访问,或者在浏览器设置中关闭安全DNS服务
    3. 也可能是部分老旧设备固件版本太低不支持iptables-nat协议,此类设备建议使用纯净模式
    4. 旁路由请确认子设备没有启用ipv6,否则dns会由ipv6查询不会经过旁路由设备
  • 浏览器内无法访问部分网站,但APP或更换浏览器则正常

​ 这是由于部分浏览器启用了安全DNS导致脚本本身的DNS劫持失效

​ 请自行使用搜索引擎查找关键词:【{你的浏览器名称}+禁用安全DNS】,以获取禁用安全DNS的办法!

  • 无法访问国内网站但国外地址正常

​ 这应该是没有启用IP转发导致的,请在工具界面重新进入新手引导,参考引导指示启用ip转发功能

  • 一部分国内网页打不开,网页错版,乱码等

​ 这是由于使用了部分去广告规则,规则误杀导致的,如果不喜欢去广告规则请使用默认不带去广告的规则或者使用自己定义的规则文件,也可以在网页面板中手动开关去广告规则。

  • 无法登录ChatGPT

​ ChatGPT的账号验证部分使用了udp流量,需要代理udp方能连接,请使用除Redir模式之外的代理模式(2-1)

  • 无法使用wireguard协议

​ 为了节省空间及优化内存占用,脚本内置的内核均未编译wireguard模块,也未编译gvisor,请使用自定义内核功能,安装原版内核或编译了相关模块的内核(9-2-5)

  • TV、机顶盒或游戏机设备上的奈飞或类似应用提示检测到代理服务

​可能是由于使用的规则未能准确覆盖奈飞的IP地址导致的,

​解决方式1:使用Meta或者Pre内核,并启用域名嗅探功能

解决方式2:将面板中的“漏网之鱼”或者“黑名单”代理节点设置为可以解锁奈飞的节点(注意该方式可能会造成奈飞节点流量滥用)也可能是你的机场节点不支持原生的奈飞解锁

解决方式1:使用混合模式+fake-ip的设置组合

解决方式2:更换支持奈飞解锁的机场

  • 无法正确配置旁路由模式

​ 配置旁路由的模式与其他类似应用的配置模式是完全一致的

​ 你需要将所有需要使用ShellCrash服务的设备的网关地址和DNS服务器地址指定为旁路由的IP地址

​ 你可以分设备单独使用手动的方式指定,也可以使用主路由或者旁路由(不推荐)的DHCP服务指定

​ 如果你是搭配路由器的DHCP服务使用,请务必在配置完成后重启全部路由设备

​ 注意:旁路由模式下,子设备的ipv6必须关闭,否则会出现DNS异常导致网页访问失败的问题

  • 游戏无法连接服务器、谷歌商店应用无法下载……

​ 请使用2-功能设置,1-切换clash运行模式功能,切换使用支持代理UDP的模式,即可对游戏和应用商店的udp流量进行代理

​ 部分节点送中之后无法使用谷歌服务,请尝试切换节点

  • 全局模式不生效

​ 全局模式设置后,默认使用的规则其实是全局直连,需要回到节点选择界面手动指定用于全局模式的节点方可正常使用全局代理模式

  • 上传的配置文件/导入机场配置文件后面板显示空白

​ 可能是你的设备缺少openssl根证书文件导致无法正确获取在线规则,请使用9-更新,安装本地根证书功能进行安装

  • 如何添加自定义规则及自定义设定?

​ 如果想添加其他自定义设定,或者自定义规则,或者其他配置文件相关功能,可以使用【6-6配置文件覆写】功能

其他问题#

  • 国内测速跑不满带宽?

​默认国内流量也会进内核,DNS模式处于Redir-host模式时可以通过开启【CN_IP绕过内核】功能绕过国内流量以提升速度

CAUTION

这样做会失去国内分流及去广告效果

  • 如何禁止视频流量使用UDP协议(提升速度)?

可以使用脚本内置的功能设置里的屏蔽QUIC功能进行设置

  • 如何添加自建节点?

​ 在导入配置文件功能中,使用在线生成配置文件功能,之后输入节点分享链接后选择生成配置文件即可

​ trojan的分享链接格式为trojan://password@host:port

  • 如何代理本机的Docker服务?

​ Docker网卡需设置为桥接模式,在【功能设置-本机代理】中启用增强模式

  • 如何使用自定义host?

​ 解决方式1:在路由器管理面板或/etc/hosts文件中添加你想要指定的host内容,然后重启clash服务

​ 解决方式2:使用第三方DNS客户端,之后使用7-6-1,将dns服务器指定为第三方客户端的DNS接口地址

  • 如何使用第三方DNS?

​ 请使用7-6-1,将dns服务器指定为第三方客户端的DNS接口地址

  • 部分智能家居/多媒体网关等设备网络连接出现问题?

​ 请使用功能设置里的局域网设备过滤功能对相关设备进行过滤

  • DDNS服务失效?

​ 群辉DDNS,请使用6-6自定义规则功能,并添加如下规则

​ 其他DDNS请在在线面板自行查找日志并截取域名

- DOMAIN,checkip.synology.com,DIRECT
- DOMAIN,ddns.synology.com,DIRECT
ShellCrash使用指南
https://p1ume.vercel.app/posts/shellcrash/
作者
p1ume
发布于
2023-07-21
许可协议
CC BY-NC-SA 4.0