在 gnome 3.36 下,qv2ray 登录时启动,"program_noproxy": ["qv2ray"] 无法生效。
sixg0000d opened this issue · comments
sixg0000d commented
日志输出如下
systemd-cgls
Control group /:
-.slice
├─user.slice
│ └─user-1000.slice
│ ├─user@1000.service
...
│ │ ├─gnome-launched-qv2ray.desktop-3205.scope
│ │ │ └─3205 /usr/bin/qv2ray
...
└─noproxy.slice
└─3484 /usr/bin/v2ray -config /home/domain/.config/qv2ray/generated/config.gen.json
可以看出 gnome 在 gnome-launched-qv2ray.desktop-3205.scope 下启动了 qv2ray,该 qv2ray 进程没有在 noproxy.slice 下。
(如果这时重启 cgproxy,或重启 qv2ray ,新启动的 qv2ray 进程将会进入 noproxy.slice。但如果不重新启动 cgproxy ,注销桌面再启动,新自启的 qv2ray 进程仍不会被 "noproxy" 。)
~ $ journalctl -b 0 -u cgproxy
-- Logs begin at Sun 2020-07-26 20:53:16 CST, end at Thu 2020-09-03 02:34:45 CST. --
9月 03 02:25:06 myfedoralll systemd[1]: Started cgproxy service.
9月 03 02:25:06 myfedoralll cgproxyd[2043]: info: noproxy program: /usr/bin/v2ray /usr/bin/qv2ray /opt/electerm/electerm /usr/local/bin/tcping
9月 03 02:25:06 myfedoralll cgproxyd[2043]: info: proxied program:
9月 03 02:25:06 myfedoralll cgproxyd[2043]: info: noproxy cgroup: /noproxy.slice
9月 03 02:25:06 myfedoralll cgproxyd[2043]: info: proxied cgroup: /proxy.slice /
9月 03 02:25:06 myfedoralll cgproxyd[2043]: info: table: 10007, fwmark: 39283, mark_newin: 39271
9月 03 02:25:06 myfedoralll cgproxyd[2067]: iptables: applying tproxy iptables
9月 03 02:25:07 myfedoralll cgproxyd[2161]: iptables: noproxy cgroup: /noproxy.slice
9月 03 02:25:07 myfedoralll cgproxyd[2161]: iptables: proxied cgroup: /proxy.slice /
9月 03 02:25:07 myfedoralll cgproxyd[2043]: info: socketserver thread started
9月 03 02:25:07 myfedoralll cgproxyd[2043]: info: loading /usr/lib64/cgproxy/libexecsnoop.so
9月 03 02:25:07 myfedoralll cgproxyd[2043]: info: dlsym startThread func success
9月 03 02:25:07 myfedoralll cgproxyd[2043]: info: execsnoop thread started
9月 03 02:26:03 myfedoralll cgproxyd[2043]: info: execsnoop; noproxy: 3205 /usr/bin/qv2ray
9月 03 02:26:05 myfedoralll cgproxyd[2043]: info: execsnoop; noproxy: 3434 /usr/bin/v2ray
9月 03 02:26:05 myfedoralll cgproxyd[2043]: info: execsnoop; noproxy: 3440 /usr/bin/v2ray
9月 03 02:26:06 myfedoralll cgproxyd[2043]: info: execsnoop; noproxy: 3484 /usr/bin/v2ray
日志并无异常
(看上去 qv2ray 进程将越过透明代理,但实际上从 qv2ray 中节点的 tcping 结果皆为个位数,qv2ray 流量应该是经过了透明代理)
配置文件如下
/etc/cgproxy/config.json
{
"comment":"For usage, see https://github.com/springzfx/cgproxy",
"port": 60080,
"program_noproxy": ["v2ray", "qv2ray", "/opt/electerm/electerm", "tcping"],
"program_proxy": [],
"cgroup_noproxy": [],
"cgroup_proxy": ["/"],
"enable_gateway": false,
"enable_dns": true,
"enable_udp": true,
"enable_tcp": true,
"enable_ipv4": true,
"enable_ipv6": true,
"table": 10007,
"fwmark": 39283
}
~/.config/autostart/qv2ray.desktop
[Desktop Entry]
Name=qv2ray
GenericName=V2Ray Frontend
Exec=/usr/bin/qv2ray
Terminal=false
Icon=qv2ray
Categories=Network
Type=Application
StartupNotify=false
X-GNOME-Autostart-enabled=true
sixg0000d commented
目前临时的解决方案是,将 ~/.config/autostart/qv2ray.desktop
中的 Exec 键改为 Exec=cgnoproxy /usr/bin/qv2ray
。
或者不使用 XDG Autostart 的方式,而是使用 systemd 的方式来实现开机启动 Qv2ray。
sixg0000d commented
安装Qvplugin-Command插件,在插件设置里的“pre-connection”栏里加上一句
sh -c "cgnoproxy --pid $(pgrep -x qv2ray)"
使用该方法解决了