Kanpachi
Resumo
Kanpachi é uma LAN virtual privada para jogar entre amigos: o sucessor espiritual do Hamachi. Um túnel cifrado com WireGuard ponto a ponto conecta a sala; o adaptador virtual fica fechado, e abre só as portas do jogo escolhido, só no host, só na direção dos membros presentes. Sem contas, sem telemetria, sem encaminhamento de portas. Software livre sob AGPL-3.0, em três linguagens: UI em Flutter, binários e CLI em Go, motor de túneis em Rust.
Pontos-chave
- Dividi o produto em três linguagens pelo que cada uma faz melhor: Flutter para a janela de desktop, Go para cada binário (cliente, daemon, seed), Rust para o motor de túneis, construído sobre um fork próprio do EasyTier fixado por tag em vez do binário oficial. Esse binário abre um portal de administração sem autenticação em 0.0.0.0:15888, alcançável por qualquer processo local; linkar a biblioteca deixa o portal fora do build. — 0 sockets em escuta no motor, contra 0.0.0.0:15888 aberto no easytier-core, em 3 linguagens e 4 binários (kanpachi, kanpachid, kanpseed, kanpachi-engine)
- Desenhei o modelo de segurança em torno de um adaptador virtual que nasce sem uma única regra de permissão. Cada abertura é explícita, por perfil de jogo, na direção dos IPs dos membros presentes, e se recalcula inteira quando alguém entra, sai ou troca de jogo. — O tipo FirewallRule não tem como expressar 'qualquer um'
- Separei o daemon privilegiado da janela: o serviço de Windows roda como LocalSystem e sustenta a sala, o app Flutter não tem privilégios. Fechar a janela deixa a sala aberta; jogar nunca mais pede administrador. — 1 único UAC em toda a vida do produto, durante a instalação
- Montei o catálogo de perfis de jogo em JSON (portas, descoberta LAN, verificação por executável) para ninguém precisar saber que Project Zomboid fala UDP 16261-16262. Existem portas, com 445 e 3389 à frente, que nenhum perfil consegue pedir. — 11 perfis de jogo testados em partida real
- Empacotei as duas plataformas: instalador Inno Setup para Windows, pacote Debian para Ubuntu 22.04+, unidades systemd e uma quarentena que mantém fechados SMB, RDP e administração remota a partir da internet mesmo com o Kanpachi parado. — Instalador Windows, pacote .deb, 3 workflows de release no GitHub Actions
- Cacei vazamentos de memória no daemon produtivo: cada leitura do store de firewall do Windows deixava para trás o seu enumerador com uma foto de todas as regras da máquina. Seis ciclos de abrir e fechar sala levavam o processo de 80 MB a 426 MB sem volta. — 346 MB de vazamento em 6 ciclos de sala, fechado