Commit Graph
142 Commits
Author SHA1 Message Date
DSH Agent 9a64853db4 server_config: 新增 RRPP 订阅后端规则集下发文档(PAC → classical 规则集)
- 新增 §12:PAC 不能直接下发的原因、三个规则集产物、PAC 更新后的再生成流程、
  mihomo/Shadowrocket 两种客户端接入方式与验证口径
- 新增 rrpp-subscription/:API.md(订阅端点/method/rules 参数/规则集说明)
  与 gen_rulesets.py(PAC → 客户端规则集转换脚本,幂等、原子替换)
- method 新增 shadowrocket(.conf:远程 RULE-SET + FINAL,不猜测 REALITY 参数)
- method=clash 新增 &rules=provider|inline|global
2026-09-19 18:46:54 +08:00
RRRosmontis bdd9d3498d fix(uot-relay): 数据报级错误不再杀隧道 + 地址族健壮性
实测复现:目标为关闭的 UDP 端口时,连接式 socket 收到 ICMP port unreachable
→ ConnectionRefusedError → 被兜底 except 接住并 stop.set() → 整条 UoT 隧道被关
(客户端见 'UoT TCP 流已关闭',多隧道同秒集体死亡)。

修复:
- 一律用未连接 UDP socket(不接收 ICMP 错误)
- send/recv 的数据报级错误只丢包继续;EAGAIN 等可写重试(1s 上限)
- 按地址族惰性建 socket(v4/v6 混用)、IPv6 recvfrom 4 元组归一化
- connect 模式预建 socket(修掉主循环空池即关连接的回归)

五节点已部署并验证:狂发 200 包到关闭端口/无路由目标后隧道仍存活;
UoT DNS 端到端 JP/US/AQ/HK2 通过,RU 为该节点出口 UDP 限制(实测 4/10)
导致的偶发超时,非 relay 问题。
2026-09-19 16:41:19 +08:00
RoyirinRosmontis 41204df78a release: publish 9999091904 999909190441 2026-09-19 04:43:17 +08:00
RoyirinRosmontis d0e739eff1 fix(lite): hide tun network command windows 2026-09-19 04:36:54 +08:00
RoyirinRosmontis e406d614b7 refactor(lite): keep tunnel startup details out of main log 2026-09-19 04:29:24 +08:00
RoyirinRosmontis 357fd26a49 fix(lite): bundle tun runtime and quiet connection logs 2026-09-19 04:27:20 +08:00
RoyirinRosmontis 9d5bc527d3 feat(lite): add opt-in tun ipv6 mode 2026-09-19 04:20:34 +08:00
RoyirinRosmontis 2315735979 fix(lite): report tun worker startup errors 2026-09-19 04:07:27 +08:00
RoyirinRosmontis 889dcb88e5 style(lite): restore intended mode hover contrast 2026-09-19 04:01:02 +08:00
RoyirinRosmontis 9224ad33fe style(lite): swap mode card hover colors 2026-09-19 03:54:59 +08:00
RoyirinRosmontis 50364dc17a feat(lite): merge TUN mode with IPv6 routing 999909190333 2026-09-19 03:41:41 +08:00
RRRosmontis 3e29012d9c server_config: CONNECT 出站超时 60s→10s,并补充排障口径
实测(2026-09):目标为黑洞 IP 时,nginx 出站超时 60s > lite 客户端 15s,
表现为客户端 'read operation timed out' 而非 502,形似代理卡死,实为超时错配。
改为 10s 后黑洞目标 10.2s 返回、正常目标 0.4-0.7s 不受影响(五节点已生效)。

README 新增 5.6 节:三个超时的口径 + 'CONNECT 502' 的排查顺序
(先判断目标是否本身不可达 → 再看 nginx 错误类型 → 最后才怀疑 CONNECT 模块),
并建议客户端日志记录原始域名(案例:Dropbox 旧 IP 失效导致误判)。
2026-09-19 01:23:38 +08:00
RoyirinRosmontis e4d57bc90d 更新 README.md 2026-09-19 00:41:12 +08:00
RoyirinRosmontis fd433fc43e 更新 README.md 2026-09-19 00:40:37 +08:00
RoyirinRosmontis a054a547e5 更新 README.md 2026-09-19 00:38:19 +08:00
RRRosmontis 2e56f82e7b server_config: 新增 UoT v2(UDP over TCP)支持
全节点(jp/us/ru/aq/hk2)已部署并实测通过(UoT DNS 端到端 ✅ + TCP 回归 ✅):

- nginx 模板:map $request 识别 sing-box UoT v2 magic 地址
  (sp.v2.udp-over-tcp.arpa)→ 127.0.0.1:15201;default_server 块加
  proxy_connect_address;read/send timeout 10m
- 新增 uot-relay/:Python 标准库 UoT v2 relay(connect/non-connect 双模式,
  仅监听 127.0.0.1,空闲 9 分钟断开)
- README 5.5 节:部署方法 + 客户端协议 + 四个实测坑
  ($connect_host 未注册变量 / data_timeout 与 read_timeout 同槽 /
  CONNECT 恒落 default_server / 拒绝端口 0)
2026-09-19 00:31:41 +08:00
RoyirinRosmontis e16ef58182 style(lite): unify compact settings buttons 2026-09-18 22:29:28 +08:00
RoyirinRosmontis f4d777113c feat(lite): add tray settings and reset controls 999909182137 2026-09-18 21:43:09 +08:00
RoyirinRosmontis 26926f6469 feat(lite): enable built-in PAC by default and publish 9999091820 999909182036 2026-09-18 20:39:34 +08:00
RoyirinRosmontis a0e2600399 feat(lite): add built-in PAC mode and publish 9999091820 999909182030 2026-09-18 20:34:18 +08:00
RoyirinRosmontis 01de67610d feat(lite): add detailed runtime logs and publish 9999091817 999909181706 2026-09-18 17:10:03 +08:00
RoyirinRosmontis 384a6107a8 style(lite): unify settings action labels 2026-09-18 16:46:33 +08:00
RoyirinRosmontis fb47f9e1d2 style(lite): compact settings dialog buttons 2026-09-18 16:43:05 +08:00
RoyirinRosmontis 71a67d7dca feat(lite): 持久化代理模式配置并发布 9999091816 999909181618 2026-09-18 16:23:40 +08:00
RoyirinRosmontis 8063b6d4e8 feat(lite): 发布多跳代理跳板 9999091814 999909181435 2026-09-18 14:40:44 +08:00
RoyirinRosmontis aac616eed9 fix: 修正发布版本时间戳 999909171702 2026-09-17 17:07:52 +08:00
RoyirinRosmontis 9bbfe900c8 删除 lite/rrpp_client_nodes.template.json 2026-09-17 17:05:20 +08:00
RoyirinRosmontis c58ef59889 feat: 支持第三方节点订阅 2026-09-17 16:57:47 +08:00
RoyirinRosmontis 9dbaabd4a9 修复:Nuitka onefile 更新路径 999909162304 2026-09-16 23:45:40 +08:00
RoyirinRosmontis 6673d28503 改进:显示更新下载进度并就地保存 999909162303 2026-09-16 23:35:38 +08:00
RoyirinRosmontis 6fb2926627 清理:移除本地辅助脚本与测试工具 2026-09-16 23:20:16 +08:00
RoyirinRosmontis 02d36c72f7 重构:模块化 RRPP Lite 并更新入口 999909162302 2026-09-16 23:13:28 +08:00
RoyirinRosmontis c37d8af821 新增:PAC 明确直连域名空模板 2026-09-16 21:45:48 +08:00
RoyirinRosmontis cddd3afd18 Merge remote-tracking branch 'origin/main' 2026-09-16 19:13:38 +08:00
RoyirinRosmontis 0603224de2 修复:完善 PAC 分流与启动取消 999909161906 2026-09-16 19:10:12 +08:00
RoyirinRosmontis 3ce5e57dae 更新 README.md 2026-09-16 19:09:37 +08:00
RoyirinRosmontis 9376e35025 修复:PAC 规则解析与关键域名分流 999909161743 2026-09-16 17:46:54 +08:00
RRRosmontis 110a526fc6 server_config: 同步伪装页为线上实际版本(md5 4eb73450)
仓库内 fake-site/index.html 为旧版(md5 e0f5cbcb),与四个生产节点实际
服务的版本不一致。已用线上(us 节点)实际抓取版本替换,恢复所有节点
2026-09-11 12:53:56 +08:00
RoyirinRosmontis 9b7b817cb7 更新 README.md 2026-09-11 02:06:47 +08:00
RoyirinRosmontis a39647d46f 更新 README.md 2026-09-11 02:06:21 +08:00
RoyirinRosmontis be02d1b17f 更新 README.md 999909110156 2026-09-11 02:01:47 +08:00
RoyirinRosmontis 53c36e143f 更新 README.md 2026-09-11 02:01:30 +08:00
RoyirinRosmontis 23ba368737 修复:- 系统代理设置保存/恢复:覆盖前备份原 ProxyEnable/ProxyServer/ProxyOverride/AutoConfigURL(内存+settings.json 防崩溃丢失),关闭/退出时恢复用户原有代理而不是清空;启动残留清理只认本程序精确地址(127.0.0.1:1080 精确匹配 + PAC URL 正则),不再误删其他代理软件(如 Clash)在 127.0.0.1 上的 PAC
- CONNECT 目标解析支持 IPv6 字面量:剥掉方括号再拆 host:port,[::1]:443 不再解析成 "[::1]"(直连/白名单/内网绕过判定失效的根因)
- 更新包校验加固:release 附件按 RRPP_Lite_<tag>.exe 名字精确匹配(不再固定取第一个);下载后与 API 记录的 size 比对;发布流程附带 .sha256 边车时校验 SHA-256
- 上游代理认证注入按完整头名精确匹配:Proxy-Authorization 不再误判为已有 Authorization;注入位置紧跟请求行保证上游读到我们的认证
- 远程同步后节点按 settings 记录的域名重匹配:服务端调整节点顺序时不再静默连到别的节点;启动校验等待订阅同步完成(最多 15 秒)后再执行
- DNS 分流判定缓存加 300 秒 TTL:域名换 IP 后不再长期沿用旧的直连/隧道判断(_is_private_ip/_is_china_ip/_is_whitelisted 换 _ttl_cache,保留 cache_clear 兼容)
- is_proxy_on 状态判定同步收紧为本程序 PAC 地址(其他软件的 PAC 不再让状态灯误亮)
2026-09-11 01:56:04 +08:00
RoyirinRosmontis cb3552f595 修复:- 上次选中的节点在本机已不可用(如 IPv6 专用节点但本机无 IPv6 出口)时启动不再停留其上:新增 _verify_selected_node/_first_reachable_index,启动后台校验并自动回退到第一个可达节点、写入设置、刷新标题栏(原来只在点开启代理时才报错) 999909102118 2026-09-10 21:18:25 +08:00
RoyirinRosmontis 2a20215d9e 修复:- 节点菜单 IPv6 专用节点不可用提示改为直接写在菜单项上([不可用:本机无 IPv6]),原来只挂在 tooltip 上不明显 2026-09-10 21:16:52 +08:00
RoyirinRosmontis c3286593a6 修复:
- IPv6 专用节点识别不到:服务端 subscription?method=rrpp_client 吐的是旧扁平格式,ipv6_only 字段被后端丢掉、只在 remark 里留 "(IPv6)"。判定改为三级:ipv6_only 字段 -> remark 含 IPv6 -> 域名解析兜底(解析结果只有 IPv6 无 IPv4)
- 可达性探测改用该节点自己的 HTTP 端口(原来固定按 443 探测),IPv6 地址直接取自解析结果,避免端口不对造成误判
- 本机无全局 IPv6 地址时判定不可达(菜单置灰,提示「不可用:本机无 IPv6」),有 IPv6 时只标注不禁用
- 节点可达性判定不再打印日志
2026-09-10 21:14:59 +08:00
RoyirinRosmontis 9e766d8132 新增功能:
- 节点菜单标注 IPv6 专用节点(nodes.json 的 ipv6_only 字段):本机有 IPv6 出口时标 [IPv6],没有时标 [IPv6 专用 · 本机不可用] 并置灰不可选(带原因 tooltip),避免选中后连不上
- 新增 _local_has_ipv6()(查本机全局 IPv6 地址)/_node_reachable()(ipv6_only 节点真实探测 IPv6 连通性,按域名缓存)/_node_ipv6_only();_reload_nodes() 时清空可达性缓存
- 开启代理时若当前节点 IPv6 专用且本机无 IPv6 出口,直接报错提示切换节点(不再静默失败断网)
- 节点菜单构建拆出 _build_node_menu() 便于离屏测试
2026-09-10 21:01:02 +08:00
RoyirinRosmontis 259a1ae41f 修复:
- 节点 HTTP 代理参数读取不到真实字段导致认证恒为 401:新增 _http_method(),_endpoint_port() 与 _proxy_auth_basic() 改为优先读取新版 nodes.json 的 methods.http.port/username/password,缺失时回退节点顶层键(兼容旧扁平结构)
- 实测原逻辑下所有节点均返回 401 Authorization Required(认证串为空,US 节点端口也从 1205 落到默认 443)
2026-09-10 20:56:12 +08:00
RRRosmontis bcb113e8c9 移除误提交的 __pycache__,补 .gitignore 2026-09-10 10:52:48 +08:00
RRRosmontis 6d204c77fb server_config: SS 升级 2022-blake3 + http 独立凭据 + fail2ban 基线
- SS 方法 aes-256-gcm → 2022-blake3-aes-256-gcm(SIP022 抗重放探测),
  PSK 为 base64(32字节) 格式;模板 config.json 同步更新
- nginx CONNECT Basic Auth 改为每节点独立密码;补充无 apache2-utils 时
  用 openssl passwd -6 的替代写法;注明 htpasswd 实时读取无需 reload
- 新增 2.5 节 fail2ban sshd 基线(含 systemd backend 与 LXC 注意事项)
- 验证清单加 fail2ban 检查项

落实状态:jp/us SS 已升级并验证;四节点 http 独立凭据已生效并验证;
fail2ban 已在 jp/us/ru/aq 全部运行(sshd jail)。
2026-09-10 10:52:35 +08:00