狂男风
1
释放 webview 占用
以前退出界面,界面进程和 msedgewebview2 进程会退出,但连接进程还在。
5.8 版,关闭窗口,会保留托盘图标。但是退出托盘图标,连接就断了。
如果不退出托盘图标,gephwry 进程调用的 msedgewebview2 进程就仍然占用不少内存。
我希望能够释放 gephwry 进程调用的 msedgewebview2 进程。
我不了解 wry 能否在释放 msedgewebview2 调用的情况下保留托盘图标。如果不能的话,我的请求将是:希望能够退出托盘图标(即退出 gephwry 进程)而不关闭代理连接。
geph5.exe 长期运行的作用?
5.8 使用了 geph5.exe 守护进程伴随电脑全程运行。它全程运行的必要性是什么?
在启动 geph5-client 以及配置操作系统和虚拟网卡之后,它的作用仅是监控 geph5-client 的运行状态然后对系统配置和虚拟网卡进行相应操作吗?
那么当用户断开所有连接后,它还继续运行的作用是什么?是用来计费(统计登录设备)的吗?
断开后 geph5-client 的作用?
geph5.exe 启动之后没有连接时,或者关闭连接之后,geph5.exe 会启动一个 geph5-client 进程。
这个 geph5-client 的作用是什么?它仍然在后台保持连接吗?
我使用 socks5 模式并关闭连接之后,geph5-client 进程仍然存在,但测试 9909 端口不通。说明此时 geph5-client 并没有连接?那么 geph5-client 在做什么?
建议非必要的话不要做进程保活,因为这个进程互相拉起的操作特别像流氓软件,容易被杀毒引擎判定为恶意程序。
1 个赞
任务管理器,终止其进程即可。并批处理终止 msedgewebview2?(前者试过,没注意后者)貌似 msedgewebview2 会追随 gephgui-wry.exe 而去?
。。。。。。
。。。。。。
禁用图形模式的开机自启与(除批处理命令行之外都需要的)计划任务,运行简单批处理命令行代理模式,除那啥外仅一个迷雾通进程:5.8更新后,只要断开迷雾通就连不上网,别说外网,内网都不行 - #4,来自 AnyWAT_后置快稳安
狂男风
3
好吧。听你的意见直接命令行用 geph-client,这样就不必纠结 gui 的问题了。
1 个赞
狂男风
4
我大概明白 geph5 长期运行的原因了。是为了能够管理虚拟网卡。但这个实现方式太非常规了。
如果要在windows实现vpn虚拟网卡tun的开机启动,建议以service的方式实现。
service和linux上的systemd一样具有保活机制,被杀会自动重启。这是官方的保活机制,不需要弄个守护进程监控子进程并不断拉起(手动保活和守护进程或许也是5.8被很多杀软误杀的最可能原因)。
不过我仍然没搞明白开发为什么要搞geph5.exe和geph5-client.exe两个父子进程。大多数vpn和虚拟网卡软件如zerotier、tailscale、wireguard都只有一个常驻的服务进程来处理虚拟网卡。直接把geph5-client.exe做成服务不就好啦?翻墙时连接节点安装网卡,断开时卸载网卡断开节点。geph5.exe可以作为通过ipc操作geph5-client的cli用户接口加以保留,但没必要做成服务进程,更没必要常驻。gephwry也一样没必要一直在后台,何况目前的实现方式还会占着msedgewebview2进程不释放内存,不如修改退出逻辑:退出时不断开网络。
1 个赞
一如既往,迷雾通完全开源、由社区资助——欢迎关注或贡献代码:GitHub 页面 !

还包括命令行下自身的各种操作?还有看不见的:
进程终止前者,后者追随而去。。。(此后Win11上还有 msedgewebview2进程,那是无法终结的系统自带。。。)
狂男风
6
我阅读了geph5-app的代码,它的作用如下:
- manager模式(守护进程)
启动时检测是否提权,没提权会报错退出。
生命周期中永久保活一个用于登录和查询出口的geph5-client
以及在连接时保活一个负责vpn或代理的geph5-client
自动修改防火墙、创建tun、设置系统代理
接收cli模式和gui传递的设置,重启运行中的geph5-client
- cli模式
将输入的命令行通过ipc传递给manager守护进程
注册和反注册manager也会要求提权
发行说明中提到的“防泄漏开关kill switch在vpn模式支持fail-closed防泄漏,隧道断开时流量立即停止,即使程序本身崩溃也不会泄露”。
其实就是说进程都没了之后,劫持整机流量的tun网卡还在,所以不会网络意外返回墙内。
虽然不会意外返回墙内,但此时的实际效果就是网络流量被一个无效的tun网卡劫持,导致整个电脑上不去网。
开发者可能认为这是个提高安全性的feature,但对于大多数安全要求没那么高的普通用户来说,这实际上是个影响电脑正常使用的bug,可以想见会发生很多“异常退出后整个电脑都上不去网”的用户体验反馈报告。
劫持整机流量是一个需要慎重的功能,甚至对于大多数人来说vpn模式也是一个过度设计的使用场景。大多数人通常使用代理模式就能够满足需求。尤其是对于免费用户来说,免费的geph仅能满足基本的浏览,代理整机的流量会导致很慢,所以反而需要避免使用全局代理。
因此我呼吁将默认模式调整为代理模式,而将vpn模式调整为可选功能供重度用户选择使用。
另外我仍然没从代码中看出来为何windows特权进程(manager)选择使用任务计划而不是服务项。
要知道服务项的api都是非常简单易用的,相反任务计划的api用起来则非常复杂。
我甚至从代码中看到任务计划方案里在结束进程时是hard kill而没法处理现场,这很不优雅,正好会造成前面说的“意外退出”的情况。
所以到底是什么原因促使开发团队使用任务计划而不是服务项?
不过读了代码之后,我认可了将manager与client分开运行的设计,这样manager只负责特权操作,client负责业务,权限边界清晰。
但是这个架构对于只使用http代理模式的人来说还是过于复杂了,我还是直接运行client比较简单省事。
关闭VPN模式,开启“本地代理”的代理模式,内网立马活血。。。
貌似,一般人都是“VPN啥啥”,甚至不知代理扩展为何物。。。默认VPN+(本地)代理模式刚好迎合。。。
VPN(开)+本地代理(开):VPN模式,且支持代理模式;
VPN(关)+本地代理(开):(仅)代理模式。没有
VPN(关)+本地代理(关)?
貌似,赛风格式的双协议、双端口代理更好?其它软件的混合(一个)端口,同样双协议。。。

PS:官方命令行代理模式一键开关代理命令行及相关进程,管理员命令提示符窗口,转到迷雾通文件夹——
关:geph5 unregister-manager 迷雾通进程消失、立马停摆
开:geph5 register-manager 立马进程重现、恢复正常
作为服务项,安装更新貌似需要停止旧版才能安装新版(替换文件)?
现在,官方命令行代理模式下,安装新版无需停用旧版,图形模式未试。
狂男风
9
计划任务也需要先停止进程才能更新文件。
setup.iss安装脚本里就是先停止再安装。
在Windows上不存在能在进程运行时更新进程文件的办法。你要更新geph5.exe就必须结束geph5.exe,geph5-client.exe同理。
而且,计划任务停止进程更加丑陋,它是hard kill强行停止,与异常退出没有什么区别,而不是像服务项那样能够在停止前后进行现场处理(比如保存状态、设置、日志以便重启后恢复,进行其他附加操作等等)。
只是说用户的操作,不是软件(内部)自身的处理。。。
当时比较诧异,特意目测、比较了一下安装前后文件的时间戳,尤其是一直运行的 geph5.exe
缓存文件太大,或难以连接,手动删除C:\ProgramData\geph\cache下的2较大文件就靠它了。(文件按字母升序排列,第一、三2文件)
PS:貌似第一、三2文件最大分别为30696、9584KB,滚动轮换的 manager.log 就忽略了,或手动删除较大的 manager.log.old(官网V5.8.3)
狂男风
11
我觉得开发团队选择任务计划而不是服务项的最可能原因,是不想为了适配Windows平台更改geph5-app跨平台统一的代码结构和逻辑。
因为geph5-app在systemd和launchd上都没有实现系统服务的回调,而如果在Windows平台使用服务项,那就要实现系统回调,这与其他平台不太一致,需要在代码中为Windows api做专门适配,破坏了跨平台的代码风格的一致统一。
即便如此,现在的实现方式也仍然需要为计划任务做很多适配工作。
其中最大的问题上面已经重复讨论了多次了:计划任务不能像服务一样在结束进程时给进程发信号做现场处理,而只能强行结束,然后再用cleanup_stale执行清理收尾。
其实这也没什么问题,不同实现都能达到目的,只是在工作量、鲁棒性、复杂度之间做取舍。
码盲纯用户的敝人,逃。。。
V5.7使用批处理命令行,是为了能修改其自身端口来抗断(无效,后置代理才有效)、及后来的(难连的)默认配置的6-7行,被逼的。。。竟然一试即可行。。。
V5.8的官方命令行使用,是被某用户逼的,其实也超简单。。。
便携版、软件追星,不,追新拥趸
不断观察、推测、尝试。。。