兔洞博客
兔洞博客
个人博客

Hello World 使用教程(SSR Plus+ 新版)

⚠️ 新旧版本关系

Hello World 是 ShadowSocksR Plus+(SSRP)的重建版:旧版 2019 年停更后,作者 fw876 于 2020 年接手重建,项目改名为 Hello World,包名仍是 luci-app-ssr-plus,所以 LuCI 菜单仍会显示「ShadowSocksR Plus+」。这些关系以 项目仓库 的说明和目录命名为准。

旧版 ShadowSocksR Plus+ 和现在的 Hello World 是同一个插件的两代:本页讲的就是 fw876/helloworld 这条代码线,旧版(2019 年停更)的内容已被本页完全覆盖,搜索旧名字会被自动转到本页。

软件介绍

Hello World

OpenWrt 上的 SSR Plus+ 重建版插件,Shadowsocks/SSR/Vmess/Trojan 多协议代理。

Hello World 是 OpenWrt 上的 LuCI 代理插件,代码在 fw876/helloworld。插件的 LuCI 包名沿用 luci-app-ssr-plus,所以搜固件、下载 ipk、看管理菜单时遇到的名字可能不一样,三个名字的关系下一节单独讲。

它把节点管理、订阅更新、透明代理、DNS 组件和多个代理核心打包成一套 OpenWrt 插件,装一个插件就把翻墙需要的几块拼图凑齐了。项目是 ShadowSocksR Plus+ 的重建版,旧版 2019 年停更后作者 fw876 于 2020 年接手重建,承接关系见 官方 README

截止到本文更新时间,仓库显示 4194 stars2683 forks,默认分支 dev,最近一次提交在 2026-08-11,最新版本 v196.7(2026-08-02 发布);stars 和提交数会随仓库变化,跟固件版本是两回事。

和电脑客户端比,软路由方案的区别: 电脑上的代理客户端只管本机流量,手机、平板、电视盒子还得各自装软件。软路由把代理放在网关这一层,全家设备连上 WiFi 就自动生效,这也是软路由教程存在的意义。

适合什么人用: 已经有 OpenWrt 路由器、想让全家设备统一走代理的人。路由器负责按规则转发流量,局域网设备不用逐个装客户端,也不用管服务器在哪、端口是多少。

先过一遍术语:

  • 节点:机场提供的一台代理服务器,包含协议、地址、端口、密码等信息;一个订阅通常带几十个节点,选哪个就是选哪条线路。
  • 订阅:机场给的链接,里面打包了全部节点信息,插件更新订阅后自动把节点列表拉下来,不用一个个手填。
  • 主服务器:当前实际启用的那个节点,在客户端页面选择,页面上的「主服务器」就是它。
  • 策略组:一组节点的集合,mihomo/Clash 按规则或延迟从中选一个使用,常见于 Clash 配置。
  • 透明代理:路由器把局域网设备发出的流量自动转发到代理链路,设备上不需要做任何设置。
  • DNS 防污染:防止运营商把境外域名解析成错误 IP,配错 DNS 会表现为「节点开着但网站打不开」。
  • 机场:提供代理订阅服务的商家,卖的是节点访问权,订阅链接就是机场发你的。
  • 线路:节点到目标网站的传输路径,中转、专线、直连的质量差异很大,直接影响速度和稳定性。

实测环境: 以下操作基于 OpenWrt 24.10.7 x86_64 软路由,安装 luci-app-ssr-plus v196.7(fw876 release 版),内核 mihomo 1.19.29 + xray-core 26.7.28。固件版本不同时,页面布局和选项叫法会略有出入,但整体流程一致。

优缺点先摆出来:

优点说明
多核心全家桶Xray、mihomo、NaiveProxy 一个插件全包,协议覆盖主流
订阅省心一次更新拉下几十上百个节点,不用手动逐条添加
透明代理局域网设备零配置,全家设备自动走代理
开源免费GPL-3.0 协议,代码在 GitHub 随时可查
持续维护fw876 从 2020 年接手维护至今,仓库仍有新提交
缺点说明
安装有门槛ipk 依赖要自己补,核心要单独装
组件要核对菜单出现时核心未必在位,装完要自己确认
界面偏传统LuCI 后台风格,跟手机 App 的现代界面没法比

看完优缺点,再决定是装插件还是直接换带包固件:想省事选固件,想自己控制组件选 ipk。

Hello World 和 SSR Plus+ 的纠葛

先理清这堆名字的关系:Hello World 是项目现在的名字,代码仓库是 fw876/helloworld,GitHub 上的 release、issue、README 都用这个名字。

ShadowSocksR Plus+ 是 LuCI 菜单显示的名字,也是老项目的名字——老版 2019 年停更后,fw876 接手重建,项目改名 Hello World,但菜单名一直没跟着改,所以进管理页面看到的还是 ShadowSocksR Plus+。说白了就是换了个马甲,但门牌号没换

luci-app-ssr-plus 是安装包名,下载 ipk、搜固件、opkg 安装都用这个名字,配置目录和部分脚本也沿用。

搜固件时三个名字都要试,只搜「Hello World」可能漏掉按包名发布的构建产物。在恩山论坛、固件发布页看到 luci-app-ssr-plus,指的就是这个插件。

想确认手上固件里有没有这个插件:LuCI 的系统 → 软件包页面搜 ssr-plus,能搜到包就是有,搜不到按下载安装章节补装。

功能范围

核心组件是 Xray、mihomo、NaiveProxy 加一个主程序入口,插件按节点协议把请求交给对应核心。仓库 Makefile 把组件拆成多个 INCLUDE_* 选项,编译固件时按需勾选,不用的组件可以不进固件。

协议覆盖:SS、SSR、VMess、VLESS、Trojan、Hysteria、TUIC、NaiveProxy、Shadow-TLS 等主流协议,配 Xray 还能跑 Reality。Hysteria、TUIC 这类走 UDP 的协议同样支持,这是不少老插件做不到的。

同一协议也有编译选项差异:SS 客户端在 Shadowsocks Client Selection 里二选一,选 INCLUDE_Shadowsocks_Rust_Client(Rust 实现)或 INCLUDE_Shadowsocks_NONE_Client(不装);SSR 勾 INCLUDE_ShadowsocksR_Libev_Client。页面能填某个协议的节点,不等于对应核心已经装进固件,装完按「安装后的检查」核对一遍。

辅助组件:Kcptun、Redsocks2、IPT2Socks、DNS2Socks、DNS2TCP、DNSPROXY、MosDNS、ChinaDNS-NG 等,其中 DNS 组件在深入配置的 DNS 配置 一节细讲。

Clash 生态:内置 Clash 管理入口,配置目录 /etc/ssrplus/clash,管理端口 16756,具体用法见深入配置的 Clash 配置管理 一节。组件按需编译还有个好处:OpenWrt 本身存储紧张的话,少装组件就是省空间,装进固件的东西越少越好维护。

下载安装

三种装法按小白易用度排序:离线 ipk 最省事,带包固件次之,自己编译最后

动手前先确认这几件事:

  • CPU 架构x86_64aarch64_genericramips 等架构不能互换,架构不匹配的包装进去就会报错。命令行执行 uname -m 可以看架构,LuCI 状态页也能看到。
  • OpenWrt 版本:包依赖和内核 ABI 随版本变化,用哪个版本的系统就下哪个版本的包。
  • 存储空间:核心二进制加起来几十 MB,先看剩余空间够不够。
  • 下载源:ipk、依赖、核心尽量来自同一个发布源,混搭不同来源的包容易撞依赖。
  • 协议和用途:要跑 VLESS、Reality、Trojan 就确保固件里有 Xray;要用 Hysteria、TUIC 这类 UDP 协议,固件还得带对应组件、防火墙放行 UDP;全家设备都要走代理,确认固件带透明代理转发。

确认完再选下面的方案,能省掉一大半报错。装之前顺手在 LuCI 的系统 → 备份/恢复里导出一份当前配置存到电脑,装插件虽然不动系统配置,留个备份总是心安。

方案一:离线安装 ipk(最省事)

适合路由器暂时不联网、或者想把手上一套验证过的包复制到多台设备的情况。这套方式实测最直接:下对包、传上去、装完、刷新页面就能用。

安装步骤:

  1. 在固件发布页或 Hello World Releases 页面 里找对应 CPU 架构 + OpenWrt 版本luci-app-ssr-plus ipk,同时把依赖包和要用的核心(Xray、mihomo 等)一起下下来。
  2. 把 ipk 传到路由器。LuCI 的 系统 → 软件包 页面支持直接上传安装,也可以命令行 scp 传到 /tmp 再装:
scp luci-app-ssr-plus.ipk root@192.168.1.1:/tmp/
  1. 命令行安装:
opkg install /tmp/luci-app-ssr-plus.ipk
opkg install /tmp/<核心包>.ipk
  1. 装完刷新 LuCI 页面,菜单里出现 服务 → ShadowSocksR Plus+ 就说明装好了。
  2. 顺手验证一下核心:opkg list-installed | grep xray,能看到包名说明核心也进去了。

几个注意点:

  • opkg 报依赖缺失时,记下缺的包名,从同一 OpenWrt 版本、同一架构的软件源补齐,不要强制忽略依赖硬装,缺了核心后面节点根本起不来。
  • 想卸载:opkg remove luci-app-ssr-plus,依赖的核心按需单独卸。
  • 多台同架构设备要装同一套包时,把 ipk 文件留一份在电脑上,复制到每台设备执行同样的安装命令即可,装完的路径和配置结构完全一致。
  • 下载 ipk 时留意文件名里的架构标识(如 x86_64),发布页通常直接标明,下错架构装不上。
  • 安装过程不要中断断电,装到一半断电可能留下残缺的包,后面查起来很麻烦。
  • 页面提示已安装但菜单没出现时,先重新登录 LuCI 或清一下浏览器缓存再看。
  • 装完先别急着配节点,按「安装后的检查」三步走一遍,确认菜单、核心都到位再进使用教程。

opkg 报错对照表:

报错特征原因处理
unknown package包名打错或源里没有核对包名和源地址
Cannot satisfy the following dependencies缺依赖包按提示包名补装
No space left on device空间不足清理 /tmp 或换大分区固件

照着表格对号入座,比反复重装有效率。

方案二:使用带包固件

部分第三方 OpenWrt 固件会把 luci-app-ssr-plus 和若干核心一起编译进去,刷完就能用,适合不想折腾编译的用户。选固件时看三样:

  • CPU 架构:固件发布页会标注 x86_64aarch64_genericramips 等,必须和路由器一致。
  • OpenWrt 版本和内核 ABI:包能不能装上不只看 CPU,还看版本匹配,旧固件配新包经常出事。
  • 包含的组件:确认 Xray、mihomo、NaiveProxy、Hysteria、DNS 组件真的在固件清单里,发布帖或固件包列表能看到。

两个提醒:

  • 刷机前先备份当前配置:LuCI 的 系统 → 备份/恢复 页面导出备份文件,存到电脑上,刷坏了能回来。
  • 菜单出现只能说明 LuCI 文件装了,核心和 DNS 程序不一定在。刷完在 系统 → 软件包 里搜 xraymihomo,确认要用的核心都在,再进使用教程。
  • 固件清单怎么看:发布帖通常会列「已集成软件」或放一个包列表文件,翻到插件名和核心名都在的那一版再刷,别只看截图里有菜单就下手。
  • 固件发布频率也值得看一眼:停更多年的固件带着老版本插件和核心,新协议支持跟不上,优先选还在更新的。
  • 带包固件的插件版本由固件决定,想追新版本插件就换方案一离线安装,两条路不冲突。
方案三:编译进 OpenWrt(进阶)

自己编译适合需要定制组件组合、或者想固定插件版本复现构建的场景。官方 README 给出三种放入编译树的方式:直接放进 package/helloworld、使用 git submodule、配置 src-git helloworld feed。仓库默认分支是 dev,clone 和 feed 里的分支名按官方仓库实际写。

直接放入 package:

cd openwrt
git clone https://github.com/fw876/helloworld package/helloworld
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

使用 git submodule(适合固定版本复现构建):

cd openwrt
git submodule add https://github.com/fw876/helloworld package/helloworld
git submodule update --init --recursive
./scripts/feeds update -a
./scripts/feeds install -a

submodule 方式把插件版本固定在一个提交上,构建结果可以复现,团队协作或长期维护固件时更好管。

使用 feed(适合同时维护多个第三方包):feeds.conf.default 增加一行 src-git helloworld https://github.com/fw876/helloworld,再执行:

./scripts/feeds update helloworld
./scripts/feeds install -a -p helloworld
make menuconfig

feed 方式把包的来源和安装步骤集中在 feed 配置里,同时维护多个第三方包时不用反复手写路径。

menuconfig 怎么勾: 进入 make menuconfig 后按 / 搜索 luci-app-ssr-plus,回车定位到对应选项,按 Y 选中,再按协议勾选组件。常用选项对照(选项名来自仓库 luci-app-ssr-plus/Makefile):

  • VLESS / Reality / VMess / Trojan:V2ray-core Selection 里选 INCLUDE_Xray,Trojan 节点也由 Xray 核心承载,没有单独的 Trojan 选项
  • Clash 配置和面板:勾 INCLUDE_Mihomo
  • NaiveProxy 节点:勾 INCLUDE_NaiveProxy
  • Shadow-TLS:勾 INCLUDE_Shadow_TLS
  • SS 客户端:Shadowsocks Client Selection 里选 INCLUDE_Shadowsocks_Rust_Client,不装选 INCLUDE_Shadowsocks_NONE_Client
  • SSR 客户端:勾 INCLUDE_ShadowsocksR_Libev_Client
  • 插件混淆INCLUDE_Shadowsocks_Simple_ObfsINCLUDE_Shadowsocks_V2ray_Plugin,混淆插件不是协议本体
  • DNS 组件INCLUDE_ChinaDNS_NGINCLUDE_MosDNS
  • 其他可选INCLUDE_GeoData(GeoIP/GeoSite 数据)、INCLUDE_KcptunINCLUDE_Http_Proxy

Hysteria、TUIC 在 luci-app-ssr-plus 的 Makefile 里没有对应选项,节点支持依赖 helloworld 仓库单独打包的 hysteriatuic-client 核心包,编译时把这两个包一起加进 feed 勾上即可。

所有组件全勾上固件体积会变大,按协议需求勾,排错范围也小。勾完按方向键退出子菜单,选 Save 保存配置再 Exit,直接关终端配置不会保存。编译命令本身用 make,完整流程参考 OpenWrt 官方构建文档。编译产出的固件刷机方式和官方固件一样,刷之前同样先备份配置。

安装后的检查

装完别急着配节点,先确认三件事:

  • 菜单出现 服务 → ShadowSocksR Plus+ = LuCI 文件装好了,进得去页面再进行下一步。
  • 菜单在但节点起不来 = 先查对应核心装没装,软件包列表里搜 xraymihomo,缺哪个装哪个。
  • 页面打开空白 = LuCI 前端和后端版本不一致,重装一遍同版本包,或者清一下浏览器缓存再进。
  • 核心装了但版本太老,新协议(比如 Reality)可能握手失败,优先装当前版本。

这三步过了,基本可以确定安装环节没问题,问题只会出在后面的节点和 DNS 配置上。

使用教程

下面按「进页面 → 认识界面 → 拉节点 → 选节点 → 启动」的顺序走一遍,照着做就能跑起来。

进入管理页面

浏览器输入路由器地址(默认通常是 192.168.1.1),输入用户名密码进入 LuCI。如果改过网段,在电脑的网络设置里看一下网关地址就是路由器地址。左侧菜单找到 服务 → ShadowSocksR Plus+,点进去就是插件主页面,后面所有操作都在这里完成。第三方主题的菜单布局略有差异,找不到「服务」就把左侧菜单全部展开看。

登录不进时先确认密码对不对、地址是不是当前网段;LuCI 和插件页面建议用较新版本的浏览器打开,老内核浏览器可能渲染异常,出现空白页先换浏览器试试。首次登录建议顺手改掉默认密码,路由器管理页面暴露在公网上的话更要改。

LuCI 登录页

图注:LuCI 登录页,输入路由器管理账号密码进入。

界面介绍

主页面从上到下:主服务器选择区、运行模式选择、DNS 设置,以及订阅、状态、日志等入口。日常使用最常碰的就是这三块设置。

客户端设置主界面

图注:客户端设置主界面,主服务器、运行模式、DNS 设置都在这一页。

  • 主服务器:当前启用的节点,下拉框里选,选完要保存并应用才生效。列表里节点多的话,先把候选节点测一遍速(见「节点测速」一节),再决定选谁。
  • 运行模式:决定哪些流量进代理,默认绕过中国大陆 IP 模式,具体见「代理模式与分流」。
  • DNS 设置:决定域名怎么解析,防污染方案和上游地址都在这,具体见深入配置的「DNS 配置」。
  • 状态页:看核心和转发是否在跑,启动后第一件事就是来这里确认三个绿色运行中。
  • 日志:出问题时看这里,报错信息比猜管用。

三者的搭配关系:先有节点(主服务器),再定分流(运行模式),最后调解析(DNS)。页面下方还有订阅管理(拉取节点)、备份恢复(导出配置)等入口,后面各节都会用到。状态页和日志页从页面顶部或侧边的入口进,启动后按「选择主服务器并启动」一节的步骤确认。

设置改完记得点页面底部的保存并应用,只保存不应用的话,改动不会生效,重启后还会回到旧设置。

订阅管理

订阅是机场给的链接,一个链接打包了全部节点信息,更新一次就把几十个节点拉到路由器上,比手填省事得多。实测流程(OpenWrt 24.10.7 + luci-app-ssr-plus v196.7):

  1. 打开订阅管理页面,粘贴机场订阅链接,订阅名称填一个自己能认出来的备注(比如机场名或"主力"),方便以后多个订阅时区分;名称不影响使用,不填也会用默认名。
  2. 保存并应用
  3. 更新订阅,等页面提示更新成功。
  4. 更新成功后节点列表出现你的机场节点,页面会显示拉到的总数——数量取决于机场订阅,几十到上百个都正常。跟机场后台的节点数对得上,说明订阅链路没问题。

订阅管理页面

图注:订阅管理页面,填好订阅链接和备注名,保存后点更新订阅。

更新订阅后的节点列表

图注:更新订阅成功后,节点列表出现机场下发的节点(数量以你的订阅为准)。

几个要点:

  • 订阅名称用来区分来源,同一个页面可以维护多条订阅(可以同时挂几个机场),节点列表按订阅归组显示。
  • 节点列表怎么看:列表里能看到每个节点的协议、地区和服务器信息,找自己常用的协议(比如 VLESS、Hysteria2)和地区,心里有个候选清单。
  • 订阅地址带访问凭据,只贴在路由器管理页面,别发到公开讨论区。
  • 更新失败先查路由器 DNS、系统时间、HTTPS 访问,再查机场是不是限制了请求来源。
  • 机场换链接后,在订阅管理里更新订阅地址再更新一次就行,不用删掉重加。
  • 订阅地址尽量用 HTTPS 开头的链接,HTTP 链接的订阅内容在传输过程中可能被篡改。
  • 节点大面积连不上时先更新一次订阅,机场经常调整线路,旧订阅里的节点可能已经下线。
  • 更新成功只代表配置取到了,能不能连还要看后面的启动步骤。
订阅格式:大部分直接能用,少数要转换
机场后台的"一键复制订阅",绝大多数是 v2ray 通用格式(一串 base64),Hello World 直接粘贴就能用。只有少数机场只给 Clash 格式(yaml)或自家客户端专用格式,粘贴后节点列表拉空——这种先拿在线订阅转换站转一下(bianyuan.xyzsubconverter.netlify.app 这类),选 v2ray 输出格式,把转换后的链接再填回来。判断标准就一条:节点列表空了先怀疑格式,别急着怀疑机场

节点测速

节点列表拉下来后别急着选,插件自带延迟测试入口,可以给节点挨个测一轮,把延迟高、连不通的筛掉。测出来的延迟是当前线路到节点的往返时间,受本地带宽、线路 QoS 和时段影响,数字会有波动,连续测几次取稳定值看。测速结果在节点列表里会更新,方便对比着选。

  • 节点很多时别反复全量测速,占用路由器资源,挑几个候选测就行。
  • 测速结果只代表当下网络状况,白天晚上差异可能很大,高峰期慢是常态,先别急着下结论。
  • 测速前确认当前网络没被占用满,一边下载一边测出来的延迟没有参考价值。
  • 隔几天再测一轮,线路质量会变,长期用的节点值得定期复查。
  • 延迟低的节点未必带宽大,测速看延迟,实际速度还得用起来感受。

手动添加节点

没有订阅、或者机场只给了单节点信息时,用手动添加。添加前把服务商给的协议、服务器地址、端口、密码、加密方式逐项核对,缺哪项问机场客服,别拿猜测值填表。域名、端口和密码要逐项核对,尤其注意端口是 TCP、UDP 还是两者都需要。

复制粘贴时注意别带多余空格和换行,网页复制经常混进看不见的字符,保存后连不上先怀疑这个。

Shadowsocks(SS): 服务器、端口、密码、加密方法四项是基础,加密方法必须和服务端一致,同为 AES 或 ChaCha 家族也不能随意替换。服务商给了插件参数就一起填上(Simple_ObfsV2ray_Plugin)。先只填基础字段保存测试,连通了再加插件和特殊传输,排错范围小。

ShadowsocksR(SSR): 在 SS 基础上多出协议、混淆、协议参数三项,服务商给的五个字段要完整对应。混淆名称和混淆参数必须成对,别把 SS 插件字段填进 SSR 混淆字段。固件没编 ShadowsocksR_Libev 组件时,SSR 节点可能只能保存不能运行。

VMess / V2Ray: 服务器、端口、用户 ID(UUID)、额外 ID、传输方式。UUID 整串复制,别把二维码识别结果里的空格或换行带进去。WebSocket 传输核对路径和 Host,gRPC 核对 service name,TLS 连接核对 SNI(SNI 填证书域名,不是服务器 IP)。走 Xray 特有传输时,先确认固件装了 Xray。

VLESS: 依赖用户 ID、服务器、端口加传输层组合,不能只复制一个地址和端口。VLESS + Reality 时字段更多:服务器名称(SNI)、公钥、Short ID、客户端指纹,全部来自同一份服务端配置,字段含义不同不能互换。Reality 节点需要 Xray 核心,固件没装 Xray 先补组件。

Trojan: 服务器、端口、密码、TLS 参数。这里的密码是 Trojan 的密码,跟普通代理密码不是一个概念;SNI 填服务端证书对应的名称,服务商给了域名就别擅自改成解析后的 IP。WebSocket 或 gRPC 形态的 Trojan 还要核对路径、Host 或 service name。

Hysteria / Hysteria2: 走 UDP 方向的协议,核对服务器、端口、认证信息和 TLS 参数。服务商给了上下行带宽或拥塞控制字段就按它的填,别把 TCP 节点的参数套过来。路由器防火墙要放行 UDP 出站,测试时把「核心启动」和「数据包可达」分开看,网页能打开只能证明 TCP 通。

TUIC: 需要服务器、端口、UUID 或认证字段加 TLS 配置。UDP 转发是 TUIC 的重要特征,防火墙策略要允许对应流量,TUIC 节点依赖 helloworld 仓库单独打包的 tuic-client 核心包。

NaiveProxy: HTTPS 形态,服务器、用户名、密码、域名一起匹配,单独改一项容易连不上。它走自己的 NaiveProxy 核心,页面能显示不等于它是 Xray 节点,填的时候先分清核心归属。

Shadow-TLS: 外层服务器参数和内层代理节点参数分开填,按服务商给的顺序来,外层地址和内层密码别串行。它是独立编译选项 INCLUDE_Shadow_TLS,不是所有固件的默认能力。

字段速查表:

协议关键字段对应核心
SS服务器、端口、密码、加密方法(+插件参数)SS 组件(Libev/Rust)
SSRSS 字段 + 协议、混淆、协议参数ShadowsocksR_Libev
VMess服务器、端口、UUID、额外 ID、传输方式Xray
VLESS用户 ID、服务器、端口、传输层;Reality 加 SNI、公钥、Short ID、指纹Xray
Trojan服务器、端口、密码、TLS 参数Xray / Trojan 组件
Hysteria / Hysteria2服务器、端口、认证信息、TLS 参数Hysteria 组件
TUIC服务器、端口、UUID 或认证、TLS 配置Tuic 组件
NaiveProxy服务器、用户名、密码、域名NaiveProxy
Shadow-TLS外层服务器参数 + 内层节点参数Shadow-TLS 组件

填表时对照着看,哪个协议缺哪个字段一目了然,照着服务商给的资料一项项核对。所有字段填完点页面底部的保存,字段多时先保存再核对,页面会保留输入值。

通用添加顺序: 第一步确认协议和核心匹配;第二步填地址、端口、认证字段,保存后看页面有没有保留输入;第三步补 TLS、传输、SNI、路径、UDP 选项;第四步启动单个节点看状态和日志,单节点通了再上订阅批量节点;第五步给节点起个能看懂的名字(协议-地区-线路),后面排错和故障切换都好认。手动添加的节点和订阅拉下来的节点在同一个列表里,都能选做主服务器,两种方式可以混着用。

选择主服务器并启动

节点拉下来后,在客户端页面把主服务器选成要用的节点,实测直接选列表第一个节点,点保存并应用。注意一定要点保存并应用,只改下拉框不保存,重启后又会回到旧节点。

客户端页面选择主服务器

图注:客户端页面选择主服务器,选中后保存并应用。

保存后到状态页确认运行状态。实测保存后状态页三个关键项全部绿色运行中TCP 透明代理UDP 中继DNS 防污染,三项齐了说明节点和转发链路都正常。有一项不是绿色就先看它对应的排查要点,别三项一起乱改。

状态页运行状态

图注:状态页显示 TCP 透明代理、UDP 中继、DNS 防污染全部运行中。

这三项各管什么:

  • TCP 透明代理:HTTP/HTTPS 这类 TCP 流量走代理链路,网页访问靠它。
  • UDP 中继:UDP 流量转发,游戏、语音、部分视频应用依赖它。
  • DNS 防污染:DNS 查询走防污染链路,保证域名解析不被劫持。

启动后局域网设备不用做任何设置,流量自动走路由器转发。验证方式:电脑浏览器打开 IP 查询网站看出口 IP 是不是节点所在地区,手机连同一个 WiFi 访问同样生效,说明透明代理对全家设备都起作用。换节点时重复同样的步骤:下拉选新节点、保存并应用、状态页确认三项绿色,整个过程十几秒。主服务器选定后,节点列表里其他节点仍然保留,随时可以切回来。

几个排查要点:

  • 启动按钮没反应,先看日志页有没有核心不存在、权限不足、端口占用、配置格式错误。
  • 一次只改一个变量:先切节点、再切模式、最后调 DNS,出问题好定位。
  • 停止服务可以验证「直连是否恢复」,也能缩小排查范围,排查完记得再启动回来。

代理模式与分流

运行模式决定哪些流量进代理。实测默认的绕过中国大陆 IP 模式:国内 IP 直连、国外 IP 走代理,日常用这个最省心。

模式行为适用场景
绕过中国大陆 IP国内直连、国外代理日常推荐,实测默认选项
全局代理所有流量走代理需要固定出口 IP 的特殊需求
直连所有流量直连排查问题、确认基础网络

不同版本叫法可能略有出入,认准页面上的选项说明再选。

分流是模式之外的规则层:国内地址直连、国外地址代理、广告域名拦截,规则格式要和所选核心匹配(mihomo 用 Clash 规则,Xray 用自己的路由规则)。规则文件可以从社区现成的规则集导入,也可以自己维护,具体格式和核心绑定。

规则集思路有两种:黑名单式只代理已知被墙的域名,其余直连,省流量;白名单式只直连已知国内域名,其余全部代理,覆盖更全。软路由上主流做法是国内外分流加广告拦截,规则集从社区维护的项目里挑还在更新的用,别装停更多年的老规则。广告拦截就靠规则里那些 REJECT 规则,开太多规则集反而拖慢匹配,够用就好。

切换模式后重新看一眼状态页和日志,别把旧模式留下的结果当成新模式的结果。

深入配置(进阶篇)

到这里已经能正常用了。下面这些设置给想进一步调优的人,按需取用,不用全开。进阶配置改之前先把当前生效的配置备份一份(「备份和恢复」一节有讲),改坏了能秒回。

深入配置高级设置页

图注:深入配置里的高级设置项,按需开启。

多核心选择

插件内置 Xray、mihomo、NaiveProxy 三个核心加一个主程序入口,按节点协议分配。主程序入口负责整体调度和页面状态展示,具体转发交给对应核心。

  • Xray:跑 VLESS、Reality、VMess、Trojan、SS 等,机场主流节点基本都走它,实测环境用的 xray-core 版本是 26.7.28
  • mihomo:跑 Clash 配置和策略组,适合用 Clash 规则生态的人,实测环境用的 mihomo 版本是 1.19.29
  • NaiveProxy:只接 NaiveProxy 节点,别把它当成 Xray 的一个传输选项。

三个核心可以同时装着,节点按协议自动分配,日常使用不用手动指定核心。哪类节点连不上就先看它对应哪个核心,缺核心就补核心,比乱调参数有效。

切换核心时先确认固件里装了对应核心(软件包列表搜包名),再切;切换后看状态和日志,确认旧核心已经停止,别让两个程序抢占同一监听端口。保留一个已知正常的节点当基准,切换时只换核心、不动服务器参数。若页面提示组件缺失,回固件构建或 ipk 安装环节处理,别用手工改配置绕过依赖检查,绕过一时爽,重启必翻车。

DNS 配置

DNS 把域名解析成 IP,代理插件还会按解析结果判断直连还是代理,所以 DNS 配错会表现为「节点开着但网站打不开」。

实测环境用的组合:DNS 方式选 DNS2TCP,上游用 Google DNS,同时开启禁止海外域名 IPv6,避免 IPv6 流量绕过 IPv4 分流策略。这个组合简单稳定,小白照抄就行。上游地址填之前先确认能用,填个不存在的地址只会拖慢解析。防污染的原理就是让境外域名走更可靠的解析链路,绕开运营商返回的错误结果。DNS2TCP 只解决传输通道,上游 DNS 的质量直接决定解析结果,公共 DNS 一般比运营商的稳。

各 DNS 组件是干什么的:

  • DNS2TCP:用 TCP 方向发 DNS 请求,规避普通 UDP DNS 被污染的情况,简单场景选它加一个可靠上游就够。
  • DNS2Socks:DNS 请求跟随 SOCKS 代理链路走,适合需要 DNS 跟着代理出口的配置;它修不了节点本身不可达的问题,DNS 请求也需要一条可用的代理链路。
  • ChinaDNS-NG:国内外 DNS 解析按规则组合,适合需要国内外分流的场景;启用前确认系统 DNS 监听端口没被其他服务占用,启用后用国内域名和境外域名各测一次。
  • MosDNS:最灵活也最复杂,支持缓存、分流、多上游编排,适合已经理清分流链路的用户;和 ChinaDNS-NG 同时用时要明确谁监听系统 DNS 入口,别形成循环转发,先用最小配置验证能启动,再逐步加缓存和分流。
  • DNSPROXY:独立 DNS 代理选项,用之前确认对应二进制已安装。

选型一句话:小白用 DNS2TCP + Google DNS(实测组合),要国内国外分流再加 ChinaDNS-NG,要 DNS 跟着代理走用 DNS2Socks,折腾党才碰 MosDNS

DNS 排错顺序: 先停代理服务测普通解析,确认路由器能访问上游 DNS;再启动单个 DNS 组件,查它监听的地址和端口;然后启动代理核心,看域名解析和代理连接是否同时恢复;最后恢复分流规则,分别测国内域名、境外域名和节点域名。路由器时间错误会影响 TLS 证书校验,HTTPS 订阅失败先查系统时间,系统时间不对连订阅都更新不了。

配完 DNS 用两个域名验证:国内站应解析出国内 IP 并直连,境外站应走代理链路,两个都对再收工,只测一个域名容易漏问题。测国内域名时留意解析出的 IP 归属,运营商 DNS 返回境外 IP 就说明分流规则有问题。

故障自动切换

前提是节点列表里至少有多个配置完整、协议可用的节点,只有一个节点谈不上切换。给节点起好稳定名称(协议-地区-线路),插件按延迟、可用性或服务商策略自动选择,检测行为看插件的 ping、check 页面。

  • 一次网络抖动不能认定节点永久失效,连续失败加日志错误更有判断价值。
  • 自动切换保持协议和核心一致更容易排错,跨协议切换会同时改变认证、传输和 DNS 行为,出问题都不知道该查哪层。
  • 切换后看一眼当前选中节点,确认客户端访问的是新节点而不是旧缓存,浏览器缓存骗人最狠。
  • 切换阈值、检查间隔这类参数页面上能调,小白保持默认就行,等真的频繁误切再动。
  • 多节点自动切换时尽量保持协议一致,混着 VLESS 和 Hysteria2 自动切,出口行为差异大,体验容易跳变。

Clash 配置管理

mihomo 走 Clash 配置,配置目录 /etc/ssrplus/clash。一份 Clash 配置大致分三块:proxies(节点列表)、proxy-groups(策略组)、rules(分流规则)。proxies 里是每个节点的连接参数;proxy-groups 把节点分组,可以手动选、按延迟自动选或按规则选;rules 从上往下逐条匹配,命中即停。改配置时三块要配套改,只改 rules 不动 proxies,引用的节点名对不上就白改。上传 YAML 前:

  • 先备份原配置,文件名能表示用途和日期,但别写订阅 token。
  • 检查 YAML 缩进,语法错误会让核心直接不加载,缩进错一格就废。YAML 里可以用中文注释,但别用 Tab 缩进,Clash 只认空格。
  • 代理组引用的代理名必须和代理列表完全一致,大小写、标点都不能差,名字对不上策略组就选不到节点。
  • 规则引用的 rule-provider 或外部文件要能被路由器访问,离线环境提前准备本地文件。
  • 管理端口 16756 只用于 Clash API 管理接口,不是代理端口,防火墙限制访问来源,别暴露到公网。

如果页面提供 Clash 面板入口,优先从面板操作配置,别把 OpenClash 的目录、端口、菜单名套到 Hello World 上,两套插件各管各的。改完配置文件后重启代理服务,或者点页面上的重启按钮,改动才生效。

备份和恢复

升级固件、换核心、清理配置前,先导出一份备份,存到路由器之外(电脑或网盘),路由器里那份跟着设备一起没。

  • 恢复前确认 OpenWrt 版本、插件版本、核心组件相容,旧配置不一定能被新字段完整解释,跨版本恢复先小范围试。
  • 恢复后先检查节点列表和订阅地址,再启动服务;带 token 的订阅地址别出现在共享日志里。
  • 备份不含核心二进制,换设备时要按新设备架构重新装组件,光恢复配置文件核心还是空的。
  • 恢复配置前先把新设备的核心装好,顺序反了页面报错别慌,补装核心再重启服务就行。
  • 恢复后如果页面报配置格式错误,多半是版本差异,把报错字段删掉或重填就行,别整包回滚。
  • 备份文件名带上日期,恢复时能按日期认出对应版本,别存一堆同名文件。
  • 养成习惯:每次改完能稳定跑一周的配置,导出一份存电脑,出问题直接恢复到最后一次稳定的。

日志排查

启动失败优先看日志页,按报错类型对号入座:

  • 文件不存在:核心或 DNS 组件没装,回软件包列表确认,别反复保存同一组节点参数。
  • 端口占用:有重复服务或旧进程,netstat -tlnp 查监听端口,停掉冲突服务再启动。
  • 配置解析失败:字段格式、YAML 缩进、协议组合的问题,回退到最小配置,一项项加回来。
  • 连接超时:域名解析、路由、防火墙、TCP/UDP 类型、服务端状态逐个查,超时是链路问题不是配置格式问题。

日志页在管理页面有独立入口,打开后先看报错时刻附近那几十行,别从头翻到底;报错通常集中在启动那一刻。

日志里可能带订阅 URL、密码、token,复制到问题记录前先替换成 [REDACTED],别把凭据带到群里。日志页可以按级别过滤,平时看 error 和 warn 就够,debug 全开日志刷得飞快,排查完记得关。

分层验证顺序: 先验路由器能解析节点域名,再验节点端口能连,再验核心能启动,最后验局域网设备走没走透明代理。哪一步失败就修哪一层,别跳层改配置,跳层改等于同时改两个变量,坏了不知道怪谁。

IPv6 与 UDP

IPv6 流量进不进代理,由 OpenWrt 防火墙、核心支持和插件转发一起决定,IPv4 正常时 IPv6 也可能有问题,要分别访问 IPv4 和 IPv6 站点测试。

只想要 IPv4 的话,实测做法是开禁止海外域名 IPv6,避免一部分流量绕过 IPv4 分流策略,域名解析只回 IPv4 记录,链路更干净。开 IPv6 前先确认节点支持 IPv6 出口,节点不支持的话,IPv6 流量开了也是白开。

UDP 协议(Hysteria、TUIC)依赖 UDP 方向,节点参数正确也可能被路由器或上游限制。UDP 测试和 TCP 测试分开做,网页能打开只证明 TCP 通。用 UDP 协议前确认固件编译了对应客户端,防火墙没拦出站 UDP。游戏连不上但网页正常,八成是 UDP 链路的问题,按这个思路查比瞎换节点有效。判断 IPv6 通不通,访问一个 IPv6 测试站点,能加载就是通的,打不开再按上面排查。

常见问题(FAQ)

常见问题

以下问题按出现频率排,答案都能在正文对应章节找到更细的说明。

1. 安装后菜单为什么还叫 ShadowSocksR Plus+?

LuCI 包名仍是 luci-app-ssr-plus,菜单沿用了历史名称,项目本身已改名 Hello World,两个名字指的是同一个插件。安装包、菜单、GitHub 项目名对不上是正常现象,认准 fw876/helloworld 这个仓库就行。

2. 菜单出现了,核心为什么起不来?

菜单由 LuCI 文件提供,核心要单独安装。软件包列表里搜 xraymihomo,缺哪个装哪个。装了核心还起不来,再看日志页有没有端口占用或配置格式错误。

3. 订阅更新失败怎么办?

先查路由器 DNS、系统时间、HTTPS 访问和订阅地址有效性,再查机场有没有换订阅格式或限制请求来源。订阅 token 别贴进公开日志,贴出去等于把账号密码公开了。

4. 节点列表有内容但连不上?

核对协议、服务器、端口、认证字段和核心是否一一匹配,再看状态页和日志页确认进程有没有起来。最常踩的坑是核心没装、端口写错、协议字段串行。订阅节点和手动节点分开测,能快速定位是订阅格式问题还是手填错了。

5. VLESS-Reality 选什么核心?

Xray。Reality 的 SNI、公钥、Short ID、指纹按服务端给的填,参数之间不能互换,也不能从普通 TLS 节点推测,Reality 参数错了连握手都过不去。

6. Clash 模式怎么开?

先确认 mihomo 装好了,再从插件的 Clash 管理入口上传配置,配置目录 /etc/ssrplus/clash。YAML 语法错了核心直接不加载,上传前先本地校验一遍。

7. 16756 是代理端口吗?

不是。它是 Clash API 管理端口,代理端口在节点参数里填,跟这个端口无关。这个端口要限制访问来源,别暴露到公网。

8. DNS 污染时先换节点吗?

先别换。按「DNS 配置」一节的顺序验证 DNS 链路,DNS 通了再判断节点是不是真挂了。节点没坏换节点等于白折腾,还掩盖了 DNS 的真问题。

9. ChinaDNS-NG、DNS2Socks、MosDNS 选哪个?

要国内外 DNS 分流选 ChinaDNS-NG,要 DNS 跟随代理出口选 DNS2Socks,要复杂规则编排选 MosDNS;简单场景 DNS2TCP + Google DNS 就够,实测这套组合跑得稳。

10. Hello World 和 OpenClash 怎么选?

OpenClash 是另一套 LuCI 插件,菜单、目录、配置模型都不互通。已经用 SSR Plus+ 节点列表的人,从 Hello World 开始最顺,迁移成本最低。

11. Hello World 和 PassWall 怎么选?

两者都能管代理,但包名、核心依赖、页面结构不同。想要多核心加 Clash 页面,选 Hello World;已经在 PassWall 生态里配好规则的人没必要折腾迁移。

12. 旧版 SSR Plus+ 教程还能用吗?

概念通用,菜单、字段、核心结论不通用。旧版文章见 ShadowSocksR Plus+(旧版)使用指南,新版的界面和字段认准 fw876/helloworld 仓库当前构建。

13. IPv4 正常但 IPv6 失败?

分别查 IPv6 DNS、路由器防火墙、核心 IPv6 能力和上游网络。不需要 IPv6 就开「禁止海外域名 IPv6」,实测这个选项能挡住大部分 IPv6 绕行问题。

14. TCP 正常,Hysteria 或 TUIC 失败?

查 UDP 出站、防火墙、客户端组件和服务端端口,别只查 TCP 端口或网页访问。UDP 被 QoS 或防火墙拦了,TCP 再顺也白搭。

15. 订阅链接能分享给别人排错吗?

不能直接发,订阅链接可能带长期 token。把脱敏后的协议、域名、端口和错误日志给别人看,凭据自己留着。

16. 备份恢复后节点少了?

恢复文件和当前版本、组件字段、订阅格式可能不一致。确认恢复过程成功,再更新一次订阅并查日志,节点列表一般就回来了。

17. 保存成功但服务马上停?

保存只代表配置写进去了,服务启动还需要核心、依赖、合法参数和可用端口,从日志第一条错误开始处理,第一条错因往往就是根因。

18. 所有核心都编译进去吗?

不建议全选。Makefile 把组件拆成多个选项,按协议和 DNS 需求勾选,体积更小、排错范围也更小。全选除了体积大,出问题都不知道查哪个组件。

19. 更新订阅后节点数量变少了?

节点数量由机场侧决定,套餐调整、线路下架都会反映在订阅里。更新后变少先看机场公告,通常属于正常调整;如果一次少了一大半,检查订阅地址是不是被限制或换了格式。对比一下机场后台的节点列表,两边一致就说明订阅没问题。

20. 路由器重启后配置还在吗?

配置保存在路由器文件系统里,正常重启不会丢,开机后到插件页面确认服务状态即可。升级固件、恢复出厂设置前,先按「备份和恢复」一节的步骤导出一份配置。

21. 测速结果忽高忽低正常吗?

正常。测速走的是节点链路,受本地带宽、线路 QoS、时段影响,数字波动是常态。连续测几次看稳定值,别被单次高延迟吓到,高峰期测出来的数本来就没参考价值。选主服务器优先看稳定值而不是单次最低值。

22. 换机场后旧节点还在列表里?

订阅更新后旧节点可能保留在列表里。换机场前先备份配置(备份恢复页面),再清理无效条目,避免旧节点混在新列表里选错。

23. 插件页面正常,但所有节点都连不上?

先确认路由器 WAN 本身能上网(不挂代理先测直连),再确认核心装了、防火墙没拦。软路由上「全部节点连不上」最常见的原因是核心组件缺失或没保存并应用,按这两条查基本能定位。状态页三项全红的话,服务基本没起来,回启动步骤重走一遍。

24. 国内网站也走代理,变慢了?

运行模式选成了全局代理。回到客户端页面把运行模式切回绕过中国大陆 IP 模式,保存并应用,国内流量就直连了。

25. 日志报端口占用怎么处理?

先查是哪个程序占的端口,netstat -tlnp 看监听列表,找到冲突服务停掉或改端口,再重新启动代理。两个程序抢同一个端口,后启动的那个必然起不来。

26. 开代理后国内视频网站打不开?

运行模式多半被切成了全局代理,或者分流规则太旧把国内域名也送进代理了。先确认模式是绕过中国大陆 IP,再更新规则集,按「代理模式与分流」一节的思路查。

27. 固件升级后插件不见了?

升级固件可能把后装的包清掉。升级前先按「备份和恢复」导出一份配置,升级后检查插件还在不在,不在就按方案一重新装,装完恢复配置即可。

旧版 vs 新版对比

下面这张表把两条代码线的差异一次性列清楚,选固件、看教程时对着查。

对比项旧版 ShadowSocksR Plus+Hello World 新版
项目来源旧代码线,2019 年停更fw876/helloworld 重建线
项目仓库历史仓库或旧版镜像fw876/helloworld
LuCI 包名luci-app-ssr-plus仍沿用 luci-app-ssr-plus
LuCI 菜单ShadowSocksR Plus+ShadowSocksR Plus+
入口位置服务菜单内服务 → ShadowSocksR Plus+
核心模型以旧版配置为主Xray、mihomo、NaiveProxy 多核心可选
Xray有限或依固件而定Makefile 提供 INCLUDE_Xray
mihomo非旧版核心重点Makefile 提供 INCLUDE_Mihomo
NaiveProxy通常不在旧版范围Makefile 提供 INCLUDE_NaiveProxy
SS支持范围取决于旧固件INCLUDE_Shadowsocks_Rust_ClientINCLUDE_Shadowsocks_NONE_Client 二选一
SSR旧版核心功能INCLUDE_ShadowsocksR_Libev_Client 可选
V2Ray旧版常见协议V2ray-core Selection 里选 INCLUDE_XrayINCLUDE_NONE_V2RAY
Trojan旧版常见协议由 Xray 核心承载,无独立选项
Hysteria通常没有依赖 hysteria 核心包,无 INCLUDE_* 选项
TUIC通常没有依赖 tuic-client 核心包,无 INCLUDE_* 选项
Shadow-TLS通常没有INCLUDE_Shadow_TLS 可选
DNS2Socks依旧版固件依赖仓库 dns2socks-rust 包,不是 Makefile 选项
MosDNS依固件打包INCLUDE_MosDNS 可选
ChinaDNS-NG依固件打包INCLUDE_ChinaDNS_NG 可选
Clash 页面不是旧版重点有 Clash 管理入口(上传 YAML + 面板)
Clash API依旧版实现管理端口 16756
Clash 目录依旧版实现/etc/ssrplus/clash
订阅页面有旧版差异独立订阅管理页,订阅名称可自定义
状态页面有旧版差异状态页显示核心运行状态
日志页面有旧版差异日志页查看核心输出
备份恢复有旧版差异管理页面内置备份恢复
编译方式旧固件自己的方式官方 README 提供 package、submodule、feed 三种方式
维护状态2019 年停更截止到本文更新时间,最近一次提交在 2026-08-11,最新版本 v196.7(2026-08-02 发布)

表里最值得记住的两行:包名没变luci-app-ssr-plus)、核心模型变了(多核心可选)。网上搜教程时看到旧版的截图,先对照这张表再动手。

最后的选择建议

只需要传统 SS 或 SSR 时,先确认目标固件装了对应核心(SS 的 shadowsocks-rust-sslocal、SSR 的 shadowsocksr-libev-ssr-local),再决定要不要换插件。

需要 VLESS-Reality、Hysteria、TUIC、NaiveProxy 时,以核心和依赖为筛选条件,别只看菜单截图。

需要 Clash 配置、策略组和规则目录时,确认 mihomo、Clash 管理入口、/etc/ssrplus/clash 同时存在。

需要复杂 DNS 分流时,先理清 DNS 监听、代理出口和上游的关系,再选 ChinaDNS-NG、DNS2Socks 或 MosDNS。

Hello World 的优势是把多协议、多核心、DNS 组件集中在 SSR Plus+ 这条 LuCI 管理线上,代价是安装包、核心、DNS 依赖需要自己核对。动手前把「菜单存在、核心存在、节点参数正确、DNS 链路可达」拆开检查,软路由代理问题比盲目重装更容易定位。

延伸资料

项目功能和编译方式以 Hello World 官方仓库dev 分支 README 为准。

OpenWrt 基础构建流程可参考 OpenWrt 官方文档

关于 OpenWrt 插件和固件差异,可对照 恩山无线论坛KoolCenterOpenWrt 中文网 的相关讨论,里面的菜单截图和包版本对应各自的固件环境,动手前先对一下自己的架构和版本。

不同教程站可能使用不同固件分支、不同架构和不同核心组合,阅读时先分清「教程作者的固件环境」和「Hello World 官方代码」。

路由器代理插件没有脱离架构、内核、核心、DNS 和防火墙的通用一键答案,按组件逐层确认才是更稳定的使用方式。照着上面的顺序走一遍:确认架构 → 装好核心 → 拉下节点 → 启动确认 → 调 DNS,绝大部分问题到不了 FAQ 那一步就解决了。

Comments

评论

本地 Worker 预览版,后续可切换到 Cloudflare D1。

正在加载评论...

连接本地评论服务中...

Hello World SSR Plus+ ShadowSocksR Plus+ luci-app-ssr-plus OpenWrt 软路由 Xray
使用指南