Configurador · VPN
Conecte pessoas e unidades com segurança — e descubra o que está errado na VPN atual
OpenVPN: cole o .ovpn que já existe e veja o que está inseguro ou obsoleto, ou monte cliente e servidor novos com redes, DNS e certificados no lugar. WireGuard: chaves geradas no seu navegador, servidor e um arquivo por cliente. E decida quem chega onde: a secretária só no servidor de arquivos e em horário comercial, o fornecedor só no ERP, o estagiário fora do financeiro, a filial na rede toda; desative ou revogue quem saiu. Nada, nem as chaves, sai da sua máquina.
Tecnologia
OpenVPN para o que já existe e para usuário e senha; WireGuard para o novo: mais simples, mais rápido, uma chave por aparelho.
Importar (opcional)
O arquivo é lido aqui: o linter aponta o que corrigir e o formulário recebe o que foi lido. Blocos inline (ca, cert, key, tls-crypt) são mantidos e nunca enviados.
O que gerar
Servidor remoto
Mais de um: o cliente sorteia (remote-random) e tenta o próximo se um cair.
O nome (CN) do certificado do servidor: com os comandos desta página, servidor. Vazio para não verificar.
Servidor
Gera client-config-dir, route e iroute de cada filial, e manda a rede dela para os outros clientes.
Quem não está aqui recebe um IP de .200 em diante, calculado pelo nome: acrescentar alguém não muda o IP dos outros. Antes de instalar, clique em Fixar, para os IPs ficarem escritos.
Quem acessa o quê
Viram regra de firewall no servidor (acesso.sh). Com ao menos uma liberação, o que não foi liberado é descartado; o ! retira acesso.
Como escrever as regras
Uma linha por regra: quem (cliente, @grupo ou todos), destino (IP, rede, faixa, @grupo, filial ou tudo) e, se quiser, portas, dias e horário.
secretaria 192.168.10.5:445Um cliente, um IP, uma porta (tcp).@financeiro @servidores:139,445Grupo de clientes, grupo de destinos, várias portas.todos 192.168.10.2:53/ambosTodos os clientes; DNS em tcp e udp. Só udp: /udp.ti 192.168.10.0/24:ping,22,3389Ping e portas na rede inteira.suporte 192.168.10.10-20:5900-5910Faixa de IPs e faixa de portas.estagiario !192.168.10.20O ! retira o acesso.fornecedor !tudoJunto com uma liberação dele, fica só nela, mesmo que todos tenham mais.secretaria tudo seg-sex 08:00-18:00Horário de Brasília; fora dele, bloqueado. Passa da meia-noite: 22:00-06:00.filial-sp 192.168.10.5Nome de filial vale pela rede inteira dela, como origem ou destino.Quem vence: a regra do cliente vence a do grupo, que vence a de todos. No mesmo nível, vale a mais específica (um IP antes de uma rede, com porta antes de sem porta) e, no empate, a negação. Se houver ao menos uma liberação, o que não foi liberado é descartado; só com negações, o resto continua liberado.
Dias: seg, ter, qua, qui, sex, sab, dom, faixas (seg-sex) e listas (sab,dom). O servidor compara em UTC; a conversão do horário de Brasília já vem feita. Linhas com # são comentário.
Corta na hora (firewall) e recusa a próxima conexão (disable na ccd). Para quem saiu da empresa ou perdeu o aparelho, revogue também o certificado: os comandos aparecem nos arquivos gerados.
Com uma liberação, o resto da rede remota fica fechado para a matriz; com ! só tira aquele IP. Vazio: a filial inteira continua alcançável.
Quem chega pela VPN acessa a porta no IP do túnel do servidor e é levado ao host interno. Sem "quem", vale para todos. Liberar o direcionamento não libera o host inteiro.
Para filiais e parceiros com IP fixo. Vazio: a porta fica aberta para a internet, como de costume para usuários móveis.
Transporte
Rotas e DNS
Viram route no cliente e push "route" no servidor.
Vazio para não empurrar DNS.
Vão pela internet do próprio cliente, não pela VPN (route … net_gateway). No túnel completo, para o que não deve passar pela empresa.
Segurança
Vazios, o arquivo sai com marcadores "cole aqui". Preenchidos, ficam no .ovpn gerado; nunca saem do navegador.
Importar o wg0.conf em uso (opcional)
Quem já existe continua com a chave e o IP dele; só os clientes novos recebem arquivo. O texto é lido aqui e a chave do servidor não sai do navegador. Importar com a caixa vazia desfaz a importação.
Servidor
Vazio para não definir DNS no cliente.
Rotas
O AllowedIPs de cada cliente é calculado sem esses endereços: eles vão pela internet do próprio cliente.
Clientes
Sem IP, recebe o próximo livre. Clique em Fixar antes de tirar alguém da lista: assim ninguém muda de IP. A chave de cada um não muda quando outro entra ou sai.
Chaves X25519 com o gerador criptográfico do navegador. Recarregar a página gera outras: baixe os arquivos antes de sair.
Quem acessa o quê
No WireGuard cada cliente já tem IP fixo; as regras vão para o acesso.sh do servidor. Com ao menos uma liberação, o que não foi liberado é descartado.
O [Peer] fica comentado no wg0.conf, com IP reservado, e o syncconf tira o cliente na hora. A chave dele deixa de valer; para voltar, tire o nome daqui.
O nome tem de estar na lista de clientes. A rede entra no AllowedIPs daquele peer no servidor e no dos outros clientes; o .conf dele vira o do roteador da filial.
Sem link compartilhável nesta ferramenta: a configuração contém chaves.
O que o arquivo importado tem de errado
Arquivos gerados
Servidor e clientes WireGuard
Uma chave por cliente, criada no navegador e mantida enquanto a página estiver aberta. Entregue a cada pessoa só o arquivo dela; o aplicativo oficial importa o .conf no computador e no celular. Firewall e NAT ficam no acesso.sh, chamado pelo PostUp.
Quem acessa o quê
| Quem | Origem | Regras, na ordem em que valem |
|---|
Conferir
remote-cert-tls serverO cliente só aceita servidor cujo certificado foi emitido para servidor; impede que um cliente roubado se passe pela VPN.tls-cryptCriptografa e autentica o handshake com uma chave compartilhada; sem ela, o servidor nem responde.data-ciphersCifras negociáveis; AES-256-GCM e CHACHA20-POLY1305 são as atuais. "cipher" sozinho é o jeito antigo.route / redirect-gateway def1Split: só as redes listadas passam pelo túnel. Completo: todo o IPv4 passa, inclusive a internet; no OpenVPN, o IPv6 da rede do cliente continua fora.route … net_gatewayFora do túnel: aquele destino sai pela internet do próprio cliente, mesmo com túnel completo.pull-filter ignoreO cliente ignora o que o servidor empurra; útil quando o servidor manda túnel completo e o cliente só quer a empresa.dhcp-option DNSDNS interno para resolver nomes da empresa; no Windows, block-outside-dns evita vazamento. Como a opção só existe no Windows, o arquivo traz antes ignore-unknown-option, para não quebrar no Linux e no macOS.client-config-dir + irouteNo servidor, diz qual cliente (pelo nome do certificado) está na frente de qual rede: é o site-to-site.ifconfig-push + nopoolIP fixo para um cliente, na ccd dele. O nopool com ifconfig-pool separa a faixa dinâmica (.2 a .199) dos fixos (.200 em diante): ninguém pega o IP de outro.push-removeNa ccd, tira de um cliente o que o servidor empurra para todos: a filial não recebe rota para a própria rede; com rotas por cliente, cada um recebe só o que usa.disable / crl-verifydisable recusa a conexão daquele certificado e é reversível; revogar e publicar a CRL é definitivo. Aqui a CRL vale 10 anos: vencida, ninguém conecta.acesso.sh (VPN_ACESSO)Chains próprias no FORWARD e no NAT: o script esvazia e refaz as regras a cada execução, sem duplicar nada e sem mexer no resto do firewall. O OpenVPN chama ao subir (up); o WireGuard, no PostUp.! e ordem das regrasRegra do cliente vence a do grupo, que vence a de todos; no mesmo nível, a mais específica vence e, no empate, a negação. O firewall avalia na ordem da tabela "Quem acessa o quê".-m time (UTC)Dias e horário: o servidor compara em UTC; o horário de Brasília já vem convertido, inclusive quando o período passa da meia-noite (--contiguous). Fora do horário, a regra vira bloqueio.-m multiport / iprangeVárias portas numa regra (até 15 posições; o gerador divide se passar) e faixas de IP que não fecham um CIDR.ufw allow fromFecha a porta da VPN para todo mundo exceto os IPs de origem listados: filiais e parceiros com IP fixo.FORWARD -o túnel -d IPO sentido matriz → filial: só os IPs remotos listados são alcançáveis; o resto da rede da filial recebe DROP.DNAT --to-destinationDirecionamento de porta: só para quem chega no IP do túnel do servidor, e o FORWARD aceita só a conexão direcionada (--ctstate DNAT): liberar o direcionamento não libera o host inteiro.dh noneTroca de chaves só por curva elíptica (ECDHE); dispensa gerar o dh.pem demorado.AllowedIPs (WireGuard)No cliente, o que vai pelo túnel; no servidor, de onde aquele cliente pode vir. 0.0.0.0/0 é túnel completo; com algo fora do túnel, o IPv6 sai como ::/1 e 8000::/1 para o aplicativo do Windows não bloquear o resto.wg syncconfAplica o wg0.conf novo sem derrubar a interface: entra quem é novo, sai quem foi desativado. Não cria rota de filial nova.PersistentKeepalivePacote a cada 25 s para manter o NAT aberto; sem ele, o servidor não alcança o cliente de volta.PresharedKeySegunda chave, simétrica, por cliente; protege contra quebra futura das curvas elípticas.| Mensagem | Causa provável | O que fazer |
|---|---|---|
| TLS Error: TLS key negotiation failed to occur within 60 seconds | Porta fechada no firewall, ta.key diferente do servidor, ou relógio errado. | Confira a porta com nmap, o ta.key dos dois lados e a data do cliente. |
| AUTH_FAILED | Usuário e senha errados ou certificado revogado. | Teste a credencial; revogado é intencional. |
| OpenSSL: error:... unsupported | cipher ou auth obsoletos (BF-CBC, MD5). | O linter aponta; gere o arquivo corrigido. |
| Options error: Unrecognized option or missing or extra parameter(s) | Diretiva que esta versão ou este sistema não conhece: block-outside-dns fora do Windows, opção nova em servidor antigo. | Remova a diretiva ou ponha antes dela ignore-unknown-option; o arquivo gerado já sai assim. |
| ERROR: Cannot ioctl TUNSETIFF tun: Operation not permitted | Sem root, ou módulo tun ausente. | Rode como root ou pelo systemd; carregue o módulo tun. |
| wg: Handshake did not complete after 5 seconds | Chave pública trocada, Endpoint errado, porta UDP bloqueada ou AllowedIPs sem o túnel. | Compare as chaves dos dois lados e libere a porta UDP. |
| RTNETLINK answers: File exists | Rota já existe: outra VPN ativa ou rede local igual à da empresa. | Desative a outra VPN ou renumere uma das redes. |
| Conecta, mas não acessa a rede da empresa | Falta push "route" no servidor, ip_forward desligado ou NAT ausente. | Confira sysctl, a regra MASQUERADE e as rotas empurradas. |
| VERIFY ERROR: depth=0, error=CRL has expired | Lista de revogados vencida; o padrão do easy-rsa é 180 dias. | EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl e instale o crl.pem com permissão 644. |
| Options error: --crl-verify fails with 'crl.pem': No such file or directory | crl.pem ausente na pasta do servidor. | Gere a CRL e copie com sudo install -m 644 pki/crl.pem /etc/openvpn/server/. |
| WARNING: Failed running command (--up/--down) | acesso.sh sem permissão de execução ou com erro. | sudo install -m 755 acesso.sh; rode-o à mão para ver a mensagem. |
| iptables: No chain/target/match by that name. | Módulo do kernel ausente (time, multiport, iprange) ou chain apagada. | sudo modprobe -a xt_time xt_multiport xt_iprange e rode o acesso.sh de novo. |
| Regra com horário vale na hora errada | Relógio do servidor errado; as regras usam UTC. | timedatectl: NTP ativo e hora certa. O fuso configurado no servidor não importa. |
| Depois de recarregar o firewall, a VPN parou de filtrar ou de encaminhar | ufw reload ou iptables-restore refizeram as tabelas e as chains do acesso.sh sumiram. | Rode o acesso.sh de novo; no WireGuard, wg-quick down e up também resolve. |
| Cliente desativado continua conectado (OpenVPN) | O disable da ccd vale só na próxima conexão; a sessão aberta continua. | O acesso.sh já corta o tráfego; para derrubar a sessão, reinicie o serviço. |
[Peer]; no OpenVPN, revogue o certificado (easyrsa revoke) e publique a CRL.[Peer] já invalida a chave.Se o acesso remoto virou permanente, a Allcom pode revisar arquitetura, permissões, autenticação e rotas para que a VPN acompanhe a necessidade atual — não apenas continue funcionando.
Cifras obsoletas, um arquivo para todo mundo e ninguém sabendo quem acessa. A Allcom migra para configuração atual, uma identidade por pessoa e registro de acessos, com monitoramento e atuação imediata.