cebc9a1c4f
接续 447f3f4(系统扩展可加载),修复"扩展能起但连上无法上网"的运行时问题,
现已在 macOS 15(cara)端到端连通:出口=节点 IP、国外站可达、DNS 经隧道解析。
服务端(clientconfig.go):
- route.rules 首条加 {"action":"hijack-dns","port":[53]}(排在 LAN 直连规则前)。
否则发往隧道 DNS(172.19.0.2:53)的查询被 172.16.0.0/12 吞去直连,域名解析失败。
sing-box 1.13 按端口劫持(protocol:dns 需先 sniff,不稳)。
客户端——保留三个真 bug 修复:
- startTunnel 的 libbox 启动移到后台队列:避免在 provider 队列同步阻塞,与
openTun→setTunnelNetworkSettings 回调三方死锁(隧道永远卡 connecting)。
- startOrReloadService(options:) 传非空 LibboxOverrideOptions():传 nil 致空指针 SIGSEGV。
- startDefaultInterfaceMonitor 阻塞到首个 path 更新再返回:修 "no available network interface"。
- 清除排障期临时诊断代码;CFBundleVersion 递增(sysextd 按版本去重)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JEHzjEcFzvGwgbxT6Wbt6c
14 lines
437 B
Swift
14 lines
437 B
Swift
// main.swift — System Extension 入口
|
|
//
|
|
// System Extension 是可执行程序(非 appex 的 NSExtensionMain 插件),需显式 main。
|
|
// NEProvider.startSystemExtensionMode() 读 Info.plist 的 NEProviderClasses,
|
|
// 按系统请求实例化并运行 PacketTunnelProvider。dispatchMain() 保持进程常驻。
|
|
|
|
import Foundation
|
|
import NetworkExtension
|
|
|
|
autoreleasepool {
|
|
NEProvider.startSystemExtensionMode()
|
|
}
|
|
dispatchMain()
|