Você adiciona um segundo portátil à conta que já funciona no telemóvel, e o túnel do telemóvel cai em menos de um minuto. Ou o novo dispositivo nunca termina a ligação, e o cliente termina numa mensagem de política em vez de um tempo limite. A rede está bem nos dois casos; a decisão foi tomada acima dela. Um login partilhado é uma identidade, e a maioria dos serviços VPN conta essa identidade e não o número de dispositivos que possui. Trabalho a partir do ecrã do cliente para fora, porque normalmente mostra que camada o recusou.

Leia a mensagem do cliente antes de tocar na rede

Três falhas parecem-se e não são. Um tempo limite significa que os seus pacotes não chegaram a nada. Um erro de TLS ou de certificado significa que o ponto final respondeu mas o aperto de mão falhou. Uma recusa de autenticação ou de política significa que a gateway leu as suas credenciais e depois recusou-as. Só a terceira pertence a uma história de limite de sessões, por isso fixe-a primeiro.

Os clientes OpenVPN guardam as linhas interessantes no painel de registo. Desça até à última tentativa de ligação e não até ao ciclo de novas tentativas que se segue, e procure AUTH_FAILED ou uma cadeia de motivo enviada. O cliente relata frequentemente uma recusa genérica sem explicação, por isso o passo seguinte é o servidor, não as definições do cliente. As aplicações dos fornecedores são piores: uma mensagem de limite de dispositivos é útil, mas uma ligação que colapsa após dois segundos é uma decisão de política, não uma palavra-passe errada. Anote o nome do dispositivo e a hora exata em qualquer caso; um operador pode emparelhar esse par com um registo de acesso em segundos.

Conte as sessões onde o servidor as conta

O contador que importa vive na gateway. O OpenVPN escreve um ficheiro de estado quando o servidor é iniciado com --status, listando cada cliente ligado com o seu nome comum, endereço real e contadores de tráfego.

cat /var/log/openvpn-status.log
# or query the management socket directly
echo "status 2" | socat - UNIX-CONNECT:/run/openvpn/server.sock

Duas linhas com o mesmo nome comum são duas sessões vivas sob um certificado. Por predefinição o OpenVPN não mantém ambas: sem --duplicate-cn, uma segunda ligação com o mesmo certificado substitui a primeira, e o dispositivo mais antigo perde o túnel. Essa substituição é a assinatura de um limite de identidade. Uma perda de pacotes aleatória não desliga educadamente exatamente um dispositivo no momento em que outro aparece.

O WireGuard não tem tabela de sessões para inspecionar. wg show wg0 imprime os pares e o seu último aperto de mão, e cada dispositivo inscrito é um par com a sua própria chave. Uma conta partilhada ali é um ficheiro de configuração copiado para várias máquinas, e o limite vem do que distribui essas configurações: um portal do fornecedor, uma contagem de lugares ou uma regra ligada ao seu endereço público. O manual do OpenVPN 2.6 documenta as opções do lado do servidor se mantiver a sua própria gateway.

Separe os quatro limites que se escondem atrás de uma só mensagem

A maioria dos pedidos de conta partilhada é uma de quatro decisões de admissão. O cliente não as consegue distinguir, mas o padrão de que dispositivo falha consegue.

A mesma identidade, segunda ligação. O novo dispositivo funciona e o antigo morre no mesmo instante. É uma regra de concorrência por identidade aplicada pela gateway ou pelo sistema de contas. Nada está avariado; o serviço faz o que a sua política diz.

Contagem de lugares ou dispositivos no plano. Os primeiros dispositivos ficam ligados e o seguinte é recusado enquanto os outros continuam. Verifique a lista de dispositivos do fornecedor antes de mudar um cliente, porque um limite de licença não se corrige do lado do cliente.

Um teto ligado ao seu endereço público. Dois portáteis atrás de um só router doméstico falham enquanto o mesmo login funciona a partir de um hotspot do telemóvel. Mova o segundo dispositivo para outra rede para o testar. Se aí se ligar, está a ver uma regra por endereço ou uma regra NAT, não a contagem da conta.

Um máximo de todo o servidor. Todos na gateway falham na mesma hora de ponta, incluindo contas que ontem estavam bem. O --max-clients do OpenVPN comporta-se assim, e não tem nada a ver com os dispositivos que inscreveu.

Limpe as sessões obsoletas antes de comprar mais lugares

Uma sessão que terminou mal ainda pode ocupar um lugar. A contabilidade RADIUS escreve um registo quando uma sessão começa e fecha-o quando a sessão para; quando um cliente desaparece, a paragem nunca chega e o servidor mantém a sessão até expirar uma atualização intermédia ou um tempo limite. Numa gateway FreeRADIUS pode ver os registos abertos:

SELECT username, acctsessionid, acctstarttime
FROM radacct WHERE acctstoptime IS NULL;

Um registo aberto com hora de início antiga e sem tráfego pertence a um dispositivo que já partiu. Feche-o pela consola do operador ou com um pedido de desconexão, antes de assumir que o limite era real. Os telemóveis voltam a ligar-se quando o Wi-Fi passa para a rede móvel, e um portátil pode ter um túnel no sistema operativo e outro dentro de uma aplicação do fornecedor, o que conta como duas sessões de uma só máquina.

Deixe de partilhar uma identidade entre dispositivos que funcionam juntos

A correção duradoura é estrutural. Dê a cada dispositivo o seu próprio certificado com um nome comum único, ou a sua própria conta, e registe que pessoa e que máquina o detém. No OpenVPN isso significa um certificado de cliente por dispositivo, com --duplicate-cn desligado a menos que queira comportamento de tomada de controlo; no WireGuard, um par de chaves por dispositivo, gerado ali e nunca copiado.

Clonar um perfil para contornar um limite de dispositivos quebra a revogação: revogar uma cópia corta todos os dispositivos que a partilham, e o registo já não consegue dizer que máquina fez o quê. Se o limite é comercial, a correção honesta é um lugar adicional; se é política interna, peça uma segunda identidade com os mesmos direitos de acesso.

Verifique numa ordem fixa

Teste a reparação da mesma forma em cada vez, para que o resultado signifique algo.

  • Termine a sessão em cada dispositivo e confirme que a lista ativa do servidor está vazia; uma entrada que não se limpa é uma sessão obsoleta, não um erro do cliente.
  • Ligue os dispositivos um de cada vez e observe a lista entre as ligações.
  • Se dois tiverem de funcionar juntos, confirme que ambas as linhas têm identidades diferentes e que ambas mantêm o aperto de mão fresco.
  • Repita após uma passagem de Wi-Fi para móvel, porque uma reconexão pode criar um segundo registo.

Se o dispositivo antigo continua a cair quando o novo se liga, a gateway está a aplicar uma regra por identidade para a qual não lhe foi concedida exceção. Leve ao operador os nomes dos dispositivos, as marcas temporais e a lista de sessões ativas; isso transforma uma queixa vaga numa pergunta de política a que ele pode responder.

Artigos relacionados