OpenConnect no macOS: pacote, arquivo de versão ou clone git
O Homebrew fornece um binário e um script de rede; uma árvore de código-fonte não fornece nenhum dos dois até você gerá-los e executá-los. Saiba qual a sua conexão usa.
Três caminhos dão a você um cliente OpenConnect em um Mac, e eles deixam coisas diferentes no disco. Uma fórmula do Homebrew instala um binário compilado e o script de rede que configura rotas e DNS. Um arquivo de versão dá a você código-fonte com um sistema de compilação gerado. Um clone git dá a você código-fonte sem ele. Escolher o errado é o motivo pelo qual as pessoas encontram um configure ausente poucos minutos depois de começar um tutorial.
Duas máquinas diferentes sob o mesmo nome
O caminho do pacote é um único comando, e é o padrão correto para quem tem como trabalho conectar-se em vez de desenvolver.
brew install openconnect
O que ele instala importa mais do que o comando. Você obtém o binário do cliente e também um vpnc-script que o cliente chama para programar a interface, as rotas e o resolvedor. Os dois trabalham em par: o binário encerra a sessão TLS e entrega a interface resultante ao script, e o script é a parte que sabe como este sistema operacional quer que sua rede seja alterada.
Essa separação explica toda uma classe de relatos confusos. Um cliente que se conecta, relata sucesso e depois envia o tráfego pelo caminho errado costuma ter um problema de script, não de túnel, e reinstalar a fórmula só corrige isso porque o script também é reinstalado. Verifique o suporte atual da fórmula para macOS e para a arquitetura de CPU antes de planejar com base nela; um Mac que executa um shell perfeitamente pode ainda não ter um pacote atual compilado para ele.
O que o caminho do código-fonte realmente faz
Um arquivo de versão chega com um sistema de compilação gerado, então o conhecido ./configure existe desde o início. Um clone git não, porque os arquivos gerados são produtos de compilação e não coisas que o projeto armazena. Essa é toda a razão pela qual ./autogen.sh aparece nas instruções para clones e não para arquivos de versão.
./autogen.sh
./configure
make
make install
Cada linha faz algo específico, e saber qual falhou economiza muitos chutes. A etapa autogen executa as autotools para produzir o configure. A etapa configure testa o compilador, as bibliotecas e os cabeçalhos de que o cliente precisa, e então escreve os makefiles que refletem o que encontrou. A etapa make compila. A etapa install copia os resultados para algum lugar no seu caminho.
É nessa última linha que o conselho costuma dar errado. A instalação não é prova de que a compilação funcionou, e executá-la em uma pasta de downloads arbitrária com privilégios elevados é uma boa maneira de espalhar arquivos que você não vai lembrar depois. Se o configure falhar por falta de uma biblioteca, a saída útil é o primeiro erro impresso, não as últimas vinte linhas do log.
A sessão e a configuração de rede são separadas
Essa distinção decide se uma conexão realmente transporta tráfego. Estabelecer a sessão TLS dá a você uma interface no lado do cliente. Aplicar rotas, endereços e resolvedores DNS é um segundo passo feito através do script de rede, e uma compilação que produziu um binário sem o script tem meio cliente.
A mesma separação explica por que duas máquinas com clientes idênticos se comportam de forma diferente: o script consulta a configuração de rede do sistema, e essa configuração inclui tudo o mais que tenha reivindicado uma rota. Quando um túnel dividido envia o tráfego para um lugar inesperado, o túnel está fazendo seu trabalho e a decisão de roteamento é o que deve ser examinado.
Então, ao depurar, pergunte qual camada falhou. Uma sessão que nunca se estabelece é protocolo, certificado ou credenciais. Uma sessão que se estabelece e não encaminha nada é a interface e o script. Um cliente instalado que funciona de uma rede e não de outra é alcançabilidade, e nenhuma quantidade de recompilação muda isso.
Saiba qual binário você está executando
Uma compilação instalada à mão e um binário empacotado podem conviver felizes, e qual deles executa depende do seu caminho e não das suas intenções. Descubra isso antes de informar um número de versão a alguém.
which -a openconnect
openconnect --version
brew list --versions openconnect
O primeiro comando lista cada cópia que o seu shell consegue ver, na ordem em que ele as tentaria. O segundo diz qual respondeu. Quando isso não bate com o que você espera, você está executando uma compilação de um experimento antigo, e nenhuma mudança de configuração vai movê-la.
Instalar um cliente não é aprovar um gateway
Um binário funcional não torna uma implantação compatível. Confirme o protocolo do gateway, o fluxo de autenticação e qualquer requisito de dispositivo gerenciado com as pessoas que o possuem, porque esses são fatos de política e de camada de aplicação que uma compilação não pode fornecer.
As instruções de compilação do projeto cobrem com mais detalhes a sequência autotools e o requisito do script de rede, e são a referência a seguir e não um post de blog mais antigo que a sua versão do macOS. Se o objetivo é simplesmente conectar, pegue o pacote, mantenha o script e deixe o compilador de fora.