O teu túnel dividido exclúe o lanzador, non o xogo
Un lanzador inicia outro executable para a partida, e ese proceso ten os seus propios sockets. Atopa o proceso real, fai coincidir o identificador correcto e despois proba.
Engades o lanzador á lista de exclusións, a descarga pasa de lenta a rápida e a partida segue aterrando nun servidor afastado. Nada está roto. O lanzador e o xogo son dous procesos con dous conxuntos de sockets, e excluír un non di nada do outro. A descarga acelerouse porque a descarga era o tráfico do lanzador; a partida é a conexión doutra cousa, aberta por un executable que a túa regra nunca viu.
Un instalador, moitos procesos
O software de xogos moderno é unha pequena constelación. Hai un cliente que che inicia sesión, un actualizador que descarga contido, un lanzador que inicia o xogo e un executable do xogo que pode xerar un segundo proceso para o anti-trampas ou para a capa de emparellamento. Cada un pode manter as súas propias conexións cara aos seus propios destinos.
Unha regra de exclusión normalmente nomea un deles. Cal nomea depende enteiramente do identificador que admite o cliente VPN, e iso é o que os usuarios raramente comproban. Algúns clientes comparan unha ruta de executable, outros un identificador de paquete ou bundle, e outros un nome de proceso que dous binarios non relacionados poden compartir. Le a regra antes de ler a lista de procesos, porque a regra limita mesmo o que podes expresar.
O síntoma, polo tanto, non é «o túnel dividido está roto». É «a regra cobre un proceso que non é o que leva o tráfico que me importa», que é unha afirmación moito máis estreita e moito máis reparábel. Unha vez que o dis así, o seguinte paso deixa de ser unha conxectura.
Atopa o proceso que posúe a conexión da partida
Inicia o xogo, entra nunha partida e mira quen posúe os sockets en lugar do que hai na pantalla. En Windows, a lista de procesos máis unha consulta de sockets por proceso respóndeno en dous comandos:
Get-Process | Where-Object { $_.ProcessName -match 'launcher|game|client' } | Select-Object Id,ProcessName,Path
Get-NetTCPConnection -State Established | Select-Object OwningProcess,RemoteAddress,RemotePort | Sort-Object OwningProcess
O segundo comando imprime un id de proceso, non un nome, así que une as dúas saídas por id. A fila que buscas é a que ten o enderezo remoto do servizo do xogo, e o proceso que a posúe é o executable que a túa regra debe nomear.
En Linux a mesma pregunta require un comando por tipo de socket, e paga a pena comprobar ambos, porque a conexión dunha partida pode ser UDP mentres todo o demais é TCP:
ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'
Se o xogo se executa nun contedor ou nunha capa de compatibilidade, o proceso que atopes pode ser un shim en lugar do binario que instalaches. Nese caso, o identificador que importa é o que ve o cliente, que pode ser a ruta do shim, e ningunha cantidade de edición do ficheiro orixinal o afectará.
Fai coincidir o identificador que admite o teu cliente
Le a documentación do cliente sobre a regra de exclusión antes de engadir nada. Os tres modelos habituais compórtanse de forma distinta, e un deles é unha trampa.
| Identifier | How it behaves | Failure mode |
|---|---|---|
| Executable path | Matches exactly the file at that path | Breaks when an update moves the binary |
| Process name | Matches any binary with that name | Too broad; catches unrelated software |
| Package or bundle id | Matches a signed application group | May include services you did not intend |
As regras de ruta son as máis precisas e as máis fráxiles. Unha actualización do lanzador que traslada o executable deixa a regra apuntando a un ficheiro que xa non se executa, e o síntoma volve sen que nada cambie de forma evidente. As regras de paquete sobreviven a iso, e tamén poden cubrir silenciosamente procesos auxiliares nos que nunca pensaches, o que resulta cómodo ou alarmante segundo o auxiliar.
Admita o que admita o cliente, non engadas entradas para cada executable que atopes. Unha lista montada por ensaio e erro ata que unha sesión funcionou non se pode revisar, e acumulará silenciosamente excepcións para software non relacionado. Nomea o proceso que atopaches e anota para que servía.
Proba na partida, non nunha descarga
A velocidade de descarga do lanzador é a peor proba posible, porque exercita exactamente o proceso que xa estaba excluído. Usa o que fallaba e comproba a ruta en lugar da pantalla de rendemento do propio xogo:
ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015
O primeiro comando necesita o enderezo ao que resolveu o servidor da partida, que poden darche o rexistro de conexións do xogo ou o teu cliente. Se a ruta nomea a interface física, a regra funciona. O segundo mostra se existe unha sesión, o que separa «excluído pero o servidor está caído» de «non excluído».
Mantén fixos a rexión e a rede de acceso mentres probas. Unha partida que aterra nun centro de datos distinto en cada intento produce enderezos distintos, e acabarás perseguindo un obxectivo móbil en lugar de validar unha regra. Dúas execucións co mesmo enderezo valen máis que dez con diferentes.
Volve comprobalo despois da próxima actualización
Calquera regra baseada en rutas ten unha vida útil medida en ciclos de parches. Cando o xogo deixe de respectar a exclusión un mes despois, o primeiro que hai que comprobar é se o executable se moveu, e o segundo, se apareceu un novo proceso auxiliar ao seu lado.
O modelo de exclusión de aplicacións que documenta un cliente é unha referencia razoable de como se describen estas regras, aínda que os detalles varían entre produtos. Le o teu, rexistra o identificador que usaches e anota a data. Ese rexistro é o que converte un misterio nunha corrección de cinco minutos a próxima vez que o lanzador publique unha actualización.
Se o cliente simplemente non pode expresar o límite que necesitas, unha política máis ampla aprobada é mellor que un montón de excepcións non documentadas. Amplo e entendido vence a estreito e equivocado, sobre todo cando a versión estreita é a que todos cren que está en vigor.