OpenVPN Connect vs. OpenVPN GUI: onde o Windows guarda os perfis
Dois clientes Windows, dois modelos de perfil: a GUI lista ficheiros .ovpn de uma pasta, o Connect mantém um armazém de importação. Depois remova ou importe corretamente.
No Windows, "onde está o meu perfil OpenVPN" tem duas respostas diferentes, e escolher a errada custa uma tarde. A GUI comunitária do OpenVPN trata um diretório como a sua lista de perfis: cada ficheiro .ovpn na pasta configurada aparece no menu da bandeja, e um ficheiro removido dessa pasta desaparece. O OpenVPN Connect trabalha a partir de um armazém de importação, por isso mantém um perfil que apagou do disco e ignora um ficheiro que lá copiou. A comparação abaixo é a que uso para decidir que pasta abrir antes de tocar em nada.
Uma lista de pasta contra um armazém de importação
A GUI comunitária enumera os ficheiros ao arrancar: lê um diretório de configuração, escolhido na instalação, e um ficheiro .ovpn que esteja lá é um perfil. Feche o cliente, copie um ficheiro para essa pasta, volte a iniciá-lo, e a entrada está no menu.
O Connect, em vez disso, constrói a sua lista a partir de registos que escreveu durante a importação, pelo que um ficheiro copiado é invisível enquanto um perfil importado sobrevive à eliminação da transferência original. É essa única diferença que explica a maioria dos relatos de que os dois clientes guardam os perfis em locais diferentes, porque é verdade.
A GUI comunitária: que pasta é realmente usada
Duas pastas importam. Uma instalação por utilizador lê %USERPROFILE%\OpenVPN\config; uma instalação para todos os utilizadores lê C:\Program Files\OpenVPN\config, ou o caminho x86 quando o cliente é de 32-bit. Se um perfil aparece apenas para uma conta Windows, está na pasta por utilizador e a outra conta nunca o verá.
Não deduza o caminho a partir do instalador. A GUI aceita um argumento --config_dir e lembra-se do diretório com que foi iniciada, pelo que um atalho pode apontar para um local completamente diferente. Verifique o destino do atalho e o campo Start in, ou as definições da GUI, antes de criar qualquer ficheiro.
Remover é remover ficheiros. Feche primeiro a GUI para que não retenha a entrada em memória, apague o .ovpn juntamente com quaisquer ficheiros de certificado ou chave guardados ao lado, e volte a iniciar o cliente.
A pasta para todos os utilizadores exige uma eliminação elevada. Uma eliminação que ali não faz nada em silêncio é UAC, não um erro do cliente.
Connect: o armazém de importação e a dupla armadilha do AppData
As versões 2.x e 3.x atuais guardam os perfis em %APPDATA%\OpenVPN Connect\profiles. As versões à volta da 2.5 usavam, em vez disso, %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile, e é por isso que as respostas antigas e novas dos fóruns parecem contradizer-se. Uma máquina atualizada no local ainda pode ter as duas.
Os caminhos ficam deturpados ao serem recontados. O %AppData% já resolve para AppData\Roaming, pelo que escrever %AppData%\Roaming\OpenVPN Connect\profiles se expande para AppData\Roaming\Roaming e não aponta para nada. Use a variável ou o caminho literal, nunca uma mistura dos dois.
Elimine através do cliente: abra Profiles, use o ícone do lápis, escolha Delete. Isso remove o registo e a cópia guardada em conjunto. Remover a pasta enquanto o Connect está a correr pode deixar um registo que não abre nada, e essa é a queixa "profile still shows up" na sua outra forma.
A cópia importada é a que o cliente executa. Editar o .ovpn deixado em Downloads não muda nada, porque o Connect lê a sua cópia guardada; para mudar um remote ou um cipher, edite o perfil dentro do cliente, ou edite o ficheiro e importe-o de novo .
Porque é que um perfil eliminado volta
Duas instalações da mesma família de clientes é a razão habitual. Uma GUI por utilizador e uma GUI para todos os utilizadores têm diretórios de configuração separados, pelo que eliminar de uma deixa a outra intacta e a bandeja continua a listar o nome. Programs and Features é onde confirma se ambas estão instaladas.
A segunda razão é um perfil que nunca esteve na pasta que verificou. Abrir um .ovpn uma vez a partir de uma partilha de rede ou de uma pasta Downloads pode copiá-lo para o diretório de configuração por utilizador, e os perfis Connect importados existem apenas em AppData. Antes de editar qualquer coisa, procure o nome do ficheiro em %USERPROFILE% e em %APPDATA%. Uma pasta de perfil costuma guardar a chave privada ao lado do .ovpn, por isso nunca cole a pasta num ticket ou chat para provar que perfil removeu - indique antes o nome do ficheiro e a data/hora.
As versões mais antigas da GUI também guardam as preferências do cliente no registo. Se a bandeja ainda listar um nome depois de o ficheiro desaparecer e houver apenas uma instalação, reinicie o cliente uma vez e verifique novamente o diretório de configuração do atalho antes de ponderar tocar nas chaves do registo.
Dois túneis ao mesmo tempo: primeiro os adaptadores, depois a rota
A GUI pode manter várias ligações, uma por adaptador virtual; acrescente adaptadores a partir da entrada do menu Start que instala o TAP-Windows6, e depois confirme a contagem em Network Connections, porque dois túneis simultâneos precisam de dois adaptadores e ambos devem obter o endereço automaticamente. O encaminhamento é o limite mais difícil. Dois perfis que redirecionam todo o tráfego competem pela rota predefinida, e só um a pode possuir, pelo que obtém falhas intermitentes em vez de dois túneis a funcionar. Mantenha um túnel completo e dê ao segundo um perfil de split-tunnel que empurre apenas a sua própria sub-rede.
Os intervalos privados sobrepostos não se resolvem acrescentando um adaptador. Se ambos os servidores distribuírem 10.8.0.0/24, o segundo túnel colide ao nível do endereço e nenhuma configuração do cliente os separará.
Os nomes dos adaptadores dizem-lhe o que está a ver. O Get-NetAdapter no PowerShell lista os adaptadores TAP-Windows e o adaptador Wintun por nome, o que é mais rápido do que contar ícones em Network Connections quando um túnel subiu no errado.
Iniciar um perfil com nome a partir de um script
A GUI recebe um nome de perfil relativo ao seu diretório de configuração, pelo que um lançador fica assim: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". Um caminho absoluto, ou um processo iniciado num diretório de trabalho diferente, falha em silêncio, e é por isso que um atalho que funciona com duplo clique se quebra sob o Task Scheduler.
Defina o diretório de trabalho em vez de esperar. Num lançador AutoHotkey isso é SetWorkingDir, C:\Program Files\OpenVPN\config; no Task Scheduler é o campo Start in da ação. Passar --config_dir com o mesmo caminho torna o lançador independente de ambos.
Antes de terminar, exporte o perfil, anote o adaptador, a sub-rede e a sub-rede que ele encaminha, e guarde os certificados de cada cliente na sua própria subpasta. Depois confirme que a pasta pertence ao cliente que realmente executa, e elimine através do cliente quando esse cliente tiver um armazém de importação. É essa ordem que impede o mesmo perfil de reaparecer após o próximo reinício.