实例里按应用走代理(VpnService 只接名单里的应用)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 15/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- android, go
- Domínio
- mobile, networking
Direção de pesquisa
The issue names no source files; the entry points are VpnService.Builder.addAllowedApplication, the adb push from the manager to the guest, and the existing per-package split in the execution bridge. Start by settling the open questions in the issue: VPN versus iptables, UDP and DNS handling, and what happens when the proxy drops. Done means the acceptance checks pass: allowed apps use the host proxy, others connect directly, and the VPN reconnects after a restart without re-authorization.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
要做什么
用户在实例里选哪些应用走代理,其余照常直连。比如海外游戏走代理,国服游戏和别的应用不受影响。
做法:在实例里放一个 VPN 服务,用 VpnService.Builder.addAllowedApplication(包名) 只把选中的应用接进 VPN,再把它们的流量转给宿主上的代理。
现在的情况
- 实例的网络由 qemu 在宿主上直接发出,Windows 系统代理管不到。
- 宿主的代理软件开 TUN 模式能接住,但它只看得到 qemu 这一个进程,整台实例要么全走代理、要么全直连,分不出客体里的应用。
- 在实例里自己装支持「分应用代理」的 VPN 客户端能做到,用的也是这个接口;但每台实例都要各装一份、各配一遍。
大致怎么做
- 客体:一个小 VPN 应用。开 tun,只用
addAllowedApplication加名单里的包,把 TCP 和 UDP 转成 SOCKS5 发给宿主代理。它自己的连接不在名单里,不会绕回 VPN。 - 宿主:不自带代理,也不做订阅链接(11-02 定),用用户已有的代理软件(HTTP / SOCKS5 端口),订阅在那个软件里导入。客体经
10.0.2.2访问宿主的回环地址,所以代理只监听 127.0.0.1 也能用,不用开「允许局域网连接」。 - 管理器:每台实例设代理地址和应用名单,用 adb 推给客体里的 VPN 应用。默认地址可以照 #23 的规则从 Windows 手动代理里取,把 127.0.0.1 换成 10.0.2.2。
还要定的
- 用 VPN 还是 iptables。 实例有 root,也可以用 iptables 按应用的 UID 把流量重定向到客体里的透明代理,不建 VPN。
- VPN:标准接口,不靠 root;但名单里的应用能看出自己走了 VPN,有的游戏查到 VPN 会提示或不让登录。名单外的应用列网卡时可能也看得到
tun0。 - iptables:应用看不出来;但要 root,和系统镜像绑得更紧。
- VPN:标准接口,不靠 root;但名单里的应用能看出自己走了 VPN,有的游戏查到 VPN 会提示或不让登录。名单外的应用列网卡时可能也看得到
- UDP 和 DNS。 不少游戏走 UDP,HTTP 代理转不了,要用 SOCKS5 的 UDP 转发。名单里应用的 DNS 也要走代理,不然海外域名可能解析错。
- 授权弹窗。 第一次开 VPN 系统会弹确认框。打算用 adb 预先授权(
appops set <包名> ACTIVATE_VPN allow),再设成始终开启,开机后自动连上。要实测。 - 代理断了怎么办。 名单里的应用是断网,还是退回直连。
- VPN 应用放哪。 像宿主输入法那样单独一个仓库、由管理器装进实例,还是放进系统镜像。
- 名字。 执行桥已经有「按包名分流」(名单外的进程撤回桥),这个功能在界面和文档里叫「按应用走代理」,免得混。
验收
- 名单里的应用走宿主代理,名单外的直连:两个应用分别查出口 IP。
- 名单里应用的 UDP 和 DNS 也走代理。
- 代理只监听 127.0.0.1 也能用。
- 重开实例不用再点授权,VPN 自动连上。
相关
- #25:游戏中心,有人希望能下海外游戏
- #23:管理器的代理规则(Windows 手动代理、
HTTPS_PROXY) - ModAVD/ModAVD#56:用户提的同一个需求(指定的应用走代理、每台实例各自设),另外希望能直接填代理订阅链接,这部分不做(见上面「宿主」一条)
- Linguagem predominante
- Go
- Estrelas
- 0
- Forks
- 1
- Merge médio
- 2h 42min
- PRs com merge (30d)
- 13
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ModAVD/ModAVDManager
-
netsimd 卡住后,这台机器上所有模拟器都开不了机Abertabug P1 platform:windows
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 12/100
ModAVD/ModAVDManager#32 ·
Mantenedores costumam responder em até 1 dia
-
游戏中心:管理器下载安装包,装进实例Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 15/100
ModAVD/ModAVDManager#25 ·
Mantenedores costumam responder em até 1 dia
-
开机失败或超时时,留下客体现场(logcat、dmesg 等)Talvez já em andamento @qiyinxi assumiu há 2 dias. Abertaenhancement P2
ModAVD/ModAVDManager#24 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
bug P3 platform:windows
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 42/100
ModAVD/ModAVDManager#23 ·
Mantenedores costumam responder em até 1 dia
-
bug P3 platform:windows
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
ModAVD/ModAVDManager#22 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de ModAVD/ModAVDManager
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
yetone/magpie#5265 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Azure/aztfexport#690 · 1 reação ·
-
dm: kin-openapi v0.144.0 is affected by five CVEs (panic / auth bypass) — bump to v0.149.0Talvez já em andamento @GMHDBJD assumiu hoje. Abertaaffects-26.3 affects-26.9 affects-7.5 affects-8.1 affects-8.5 area/dm dependencies severity/major type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
kubecost/ibm-finops-agent#289 ·
Mantenedores costumam responder em até 2 dias
-
ai-driven-fuzzing bug Minor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
linagora/cozy-stack#5162 ·
Mantenedores costumam responder em até 1 dia