Cliente VPN para Mac: Network Extension versus System Extension
Network Extension é uma capacidade e System Extensions um mecanismo de entrega: separe os dois para escolher a etapa de aprovação no macOS e o log a ler.
Dois termos da Apple são usados como se nomeassem a mesma coisa, e essa confusão leva as pessoas ao painel de ajustes errado. Network Extension descreve uma capacidade: uma forma suportada de implementar túneis VPN, proxies e filtros. System Extensions descreve um mecanismo de entrega e aprovação para extensões no espaço do usuário. Um cliente VPN moderno para Mac geralmente precisa dos dois, por isso nenhum dos rótulos explica sozinho um sintoma. Separar os dois responde qual componente inspecionar e qual etapa de aprovação esperar.
Duas perguntas, não um rótulo
Pergunte o que o componente faz antes de perguntar como ele é instalado. A capacidade decide qual classe de provedor existe e, portanto, qual código trata dos seus pacotes. O mecanismo de entrega decide como o binário chega, como é aprovado e onde o estado dele é registrado. Um produto pode implementar um túnel de pacotes sem distribuir uma extensão de sistema em versões mais antigas, e pode distribuir uma extensão de sistema que implemente algo diferente de um túnel.
As extensões de kernel são o terceiro termo que as pessoas misturam. Eram a forma mais antiga de executar código de rede privilegiado, exigiam aprovações diferentes, e a Apple afasta desenvolvedores delas há anos. Aplicar uma receita de aprovação de extensão de kernel a um cliente moderno perde tempo num diálogo que nunca aparecerá.
Leia as notas de implantação do fornecedor para a versão do macOS que você usa em vez de um post de fórum de uma versão anterior. A arquitetura mudou mais de uma vez, e as instruções envelhecem mal. Uma nota que menciona aprovação de extensão de kernel descreve outra época do produto.
O que o Network Extension oferece
A estrutura oferece tipos de provedor para as tarefas de rede comuns: um túnel de pacotes para o tráfego VPN, um proxy de aplicativos para fluxos por aplicativo, um filtro de conteúdo para inspecionar o tráfego e o tratamento de proxy DNS para o comportamento do resolvedor. O tipo de provedor determina o que a extensão pode fazer, e um cliente que distribui dois provedores pode estar fazendo dois trabalhos diferentes.
Isso importa durante o diagnóstico porque o mesmo sintoma de conectividade pode vir de um túnel, de um filtro ou de um proxy DNS. Bloquear um site é uma decisão do filtro, não alcançar uma sub-rede privada costuma ser uma decisão do túnel, e resolver o endereço errado costuma ser uma decisão do resolvedor. Nomear o tipo de provedor estreita a busca antes de qualquer log ser lido.
Nada na estrutura implica uma postura de privacidade. Uma extensão no espaço do usuário ainda tem permissões, configuração e um operador por trás, então trate a arquitetura como detalhe de implementação e não como sinal de confiança. Pergunte quem opera o endpoint e o que ele está configurado para coletar.
O que o System Extensions muda
O mecanismo move o código privilegiado do kernel para o espaço do usuário, e muda a forma como o sistema operacional pede consentimento. A ativação é uma etapa separada da instalação, e o usuário ou um perfil MDM precisa permiti-la. Um cliente que instala mas nunca ativa parece presente na pasta Applications e não faz nada pela conectividade.
O estado é registrado pelo sistema e não pelo aplicativo, o que é útil porque pode ser consultado. O comando abaixo lista as extensões que o sistema conhece e o estado de ativação delas.
systemextensionsctl list
scutil --nc list
O primeiro comando responde se o componente está instalado e ativado. O segundo lista as configurações VPN que o sistema possui, o que é outra pergunta e muitas vezes a que importa quando falta um perfil de conexão em vez de ele estar quebrado.
Qual inspecionar para um determinado sintoma
Combine o sintoma com a camada antes de abrir um painel de ajustes. Uma configuração ausente é uma questão de perfil, um componente instalado mas inativo é uma questão de entrega, e um componente ativo que não deixa o tráfego passar é uma questão de capacidade.
| Symptom | First place to look |
|---|---|
| No VPN entry at all | Configuration profile or scutil list |
| Client installed, nothing happens | Extension activation state |
| Tunnel up, private host unreachable | Tunnel provider routes and policy |
| One app blocked, others fine | Filter or app proxy provider |
O fluxo de log é a evidência compartilhada das duas últimas linhas. Ler o subsistema de extensão de rede diz qual provedor tratou o fluxo, e uma decisão do filtro parece diferente de uma falha de túnel mesmo quando o usuário descreve os dois como VPN quebrada.
log show --last 10m --predicate 'process == "nesessionmanager"'
Não conclua que uma extensão está ativa porque há um ícone na barra de menus. Os ícones sobrevivem a ativações falhas, e um ícone desatualizado é uma das razões mais comuns para uma chamada de suporte começar no lugar errado. Leia antes o estado de ativação, porque é isso que o sistema registra.
Aprovação, MDM e o mito da extensão de kernel
Em Macs gerenciados, a etapa de aprovação pertence ao perfil MDM, e um usuário que clica em Allow no System Settings ainda pode ser bloqueado por uma política que não foi atualizada. Pergunte à equipe de desktops qual mecanismo aprova a extensão para essa frota antes de pedir ao usuário que clique em algo.
Num Mac não gerenciado, o aviso de aprovação aparece uma vez e uma recusa pode ser permanente até a extensão ser reinstalada. Esse comportamento explica a máquina em que o cliente funcionava antes de uma atualização do sistema e agora relata uma conexão que nunca se estabelece.
Anote o tipo de provedor, o estado de ativação e o mecanismo de aprovação do cliente que você implanta. Esses três fatos respondem à maioria das perguntas futuras sobre uma VPN de Mac sem reabrir o debate entre capacidade e entrega.