
Configure seu próprio servidor OpenVPN no Debian, Ubuntu, Fedora, CentOS, Arch Linux e mais
Instalador OpenVPN para Debian, Ubuntu, Fedora, openSUSE, CentOS, Amazon Linux, Arch Linux, Oracle Linux, Rocky Linux e AlmaLinux.
Este script permitirá configurar e gerenciar seu próprio servidor VPN seguro em apenas alguns segundos.
Este script deve ser executado no seu próprio servidor, seja um VPS, um servidor dedicado ou até mesmo um computador em casa.
Uma vez configurado, você poderá gerar arquivos de configuração do cliente para cada dispositivo que deseja conectar.
Cada cliente poderá rotear seu tráfego de internet através do servidor, totalmente criptografado.```mermaid graph LR A[Phone] -->|Encrypted| VPN B[Laptop] -->|Encrypted| VPN C[Computer] -->|Encrypted| VPN
VPN[OpenVPN Server]
VPN --> I[Internet]
## Porquê OpenVPN?
OpenVPN era o padrão de facto para VPNs de código aberto quando este script foi criado. WireGuard surgiu depois e é mais simples e rápido para a maioria dos casos de uso. Consulte [wireguard-install](https://github.com/angristan/wireguard-install).
Dito isto, o OpenVPN ainda faz sentido quando precisas de:
- **Suporte TCP**: funciona em ambientes restritivos onde o UDP está bloqueado (redes corporativas, aeroportos, hotéis, etc.)
- **Chaves privadas protegidas por palavra-passe**: as configurações do WireGuard armazenam a chave privada em texto simples
- **Compatibilidade legada**: existem clientes para praticamente todas as plataformas, incluindo sistemas mais antigos
## Funcionalidades
- Instala e configura um servidor OpenVPN pronto a usar
- Interface CLI para automação e scripting (modo não interativo com saída JSON)
- Renovação de certificados tanto para clientes como para servidor
- Listar e monitorizar clientes ligados
- Desconexão imediata do cliente ao revogar certificado (através da interface de gestão)
- Utiliza [repositórios oficiais do OpenVPN](https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos) quando possível para as versões estáveis mais recentes
- Regras de firewall e encaminhamento geridas de forma transparente (suporte nativo para firewalld e nftables, recurso ao iptables)
- Sub-redes VPN configuráveis (IPv4: predefinido `10.8.0.0/24`, IPv6: predefinido `fd42:42:42:42::/112`)
- MTU do túnel configurável (predefinido: `1500`)
- Se necessário, o script pode remover limpidamente o OpenVPN, incluindo configuração e regras de firewall
- Definições de encriptação personalizáveis, definições predefinidas melhoradas (consulte [Segurança e Encriptação](#security-and-encryption) abaixo)
- Utiliza as funcionalidades mais recentes do OpenVPN quando disponíveis (consulte [Segurança e Encriptação](#security-and-encryption) abaixo)
- Variedade de resolvedores DNS a serem enviados para os clientes
- Opção de usar um resolvedor auto-hospedado com Unbound (suporta instalações Unbound já existentes)
- Escolha entre TCP e UDP
- Suporte flexível para IPv4/IPv6:
- Ponto de extremidade do servidor IPv4 ou IPv6 (como os clientes se ligam)
- Clientes apenas IPv4, apenas IPv6 ou pilha dupla (endereçamento VPN e acesso à Internet)
- Todas as combinações suportadas: 4→4, 4→4/6, 4→6, 6→4, 6→6, 6→4/6
- Prevenção automática de fugas: bloqueia o protocolo indesejado em modos de pilha única
- Modo não privilegiado: executar como `nobody`/`nogroup`
- Bloquear fugas DNS no Windows 10
- Nome do certificado do servidor aleatório
- Opção de proteger clientes com uma palavra-passe (encriptação da chave privada)
- Opção para permitir que vários dispositivos usem o mesmo perfil de cliente simultaneamente (desativa endereços IP persistentes)
- **Autenticação por impressão digital do par** (OpenVPN 2.6+): Autenticação simplificada ao estilo WireGuard sem uma AC
- Muitas outras pequenas coisas!
## Compatibilidade
O script suporta estas distribuições Linux:
| | Suporte |
| ------------------- | ------- |
| AlmaLinux >= 8 | ✅ 🤖 |
| Amazon Linux 2023 | ✅ 🤖 |
| Arch Linux | ✅ 🤖 |
| CentOS Stream >= 8 | ✅ 🤖 |
| Debian >= 11 | ✅ 🤖 |
| Fedora >= 40 | ✅ 🤖 |
| openSUSE Leap >= 16 | ✅ 🤖 |
| openSUSE Tumbleweed | ✅ 🤖 |
| Oracle Linux >= 8 | ✅ 🤖 |
| Rocky Linux >= 8 | ✅ 🤖 |
| Ubuntu >= 18.04 | ✅ 🤖 |
A notar:
- O script é testado regularmente apenas nas distribuições marcadas com 🤖.
- É testado apenas na arquitetura `amd64`.
- O script requer `systemd`.
### Fornecedores recomendados
- [Vultr](https://umami.stanislas.cloud/q/1HH9Thp8i): Localizações mundiais, suporte IPv6, a partir de $2.5/mês
- [Hetzner](https://umami.stanislas.cloud/q/HdzaOJWq7): Localizações mundiais, IPv6, 20 TB de tráfego, a partir de €3.59/mês
- [Digital Ocean](https://umami.stanislas.cloud/q/sEVh1l79B): Localizações mundiais, suporte IPv6, a partir de $4/mês
## Utilização
Primeiro, descarrega o script no teu servidor e torna-o executável:```bash
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
Você precisa executar o script como root e ter o módulo TUN habilitado.
A maneira mais fácil de começar é o menu interativo:```bash ./openvpn-install.sh interactive
Isso guiará você pela instalação e gerenciamento de clientes.
No seu diretório home, você terá arquivos `.ovpn`. Estes são os arquivos de configuração do cliente. Baixe-os do seu servidor (usando `scp`, por exemplo) e conecte-se usando seu cliente OpenVPN favorito.
Se você tiver alguma dúvida, consulte primeiro o [FAQ](#faq). E se precisar de ajuda, você pode abrir uma [discussão](https://github.com/angristan/openvpn-install/discussions). Por favor, pesquise nas issues e discussões existentes primeiro.
### Modo CLI
> [!WARNING]
> A compatibilidade da API não é garantida. Mudanças que quebram a compatibilidade podem ocorrer entre versões. Se você usar este script programaticamente (por exemplo, em automação ou CI/CD), fixe-se em um commit específico em vez de usar o branch master.
Para automação e scripting, use a interface CLI:```bash
# Install with defaults
./openvpn-install.sh install
# Add a client
./openvpn-install.sh client add alice
# List clients
./openvpn-install.sh client list
# Revoke a client (immediately disconnects if connected)
./openvpn-install.sh client revoke alice
openvpn-install [options]
Commands: install Install and configure OpenVPN server uninstall Remove OpenVPN server client Manage client certificates server Server management interactive Launch interactive menu
Global Options: --verbose Show detailed output --log Log file path (default: openvpn-install.log) --no-log Disable file logging --no-color Disable colored output -h, --help Show help
Execute `./openvpn-install.sh <comando> --help` para opções específicas do comando.
#### Gerenciamento de Clientes```bash
# Add a new client
./openvpn-install.sh client add alice
# Add a password-protected client
./openvpn-install.sh client add bob --password
# Revoke a client
./openvpn-install.sh client revoke alice
# Renew a client certificate
./openvpn-install.sh client renew bob --cert-days 365
Listar todos os clientes:```text $ ./openvpn-install.sh client list ══ Client Certificates ══ [INFO] Found 3 client certificate(s)