
Configure o seu próprio servidor de VPN IPsec em apenas alguns minutos, com IPsec/L2TP, Cisco IPsec e IKEv2. Suporta Ubuntu, Debian, CentOS/RHEL, Alpine Linux e Raspberry Pi OS. Inclui configuração de cliente e scripts de gestão.
English | 简体中文 | 繁體中文 | 日本語 | Русский
Configure seu próprio servidor VPN IPsec em apenas alguns minutos, com IPsec/L2TP, Cisco IPsec e IKEv2.
Uma VPN IPsec criptografa o tráfego de rede, para que ninguém entre você e o servidor VPN possa espionar seus dados enquanto eles trafegam pela Internet. Isso é especialmente útil ao usar redes não seguras, por exemplo, em cafeterias, aeroportos ou quartos de hotel.
Usaremos Libreswan como servidor IPsec e xl2tpd como provedor L2TP.
Recursos:
Também disponível:
Primeiro, prepare seu servidor Linux* com um sistema operacional compatível instalado.
Use este comando de uma linha para configurar um servidor VPN IPsec:```bash wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
Os seus dados de login da VPN serão gerados aleatoriamente e exibidos quando terminar.
> [!TIP]
> Opcionalmente, instale o [WireGuard](https://github.com/hwdsl2/wireguard-install), o [OpenVPN](https://github.com/hwdsl2/openvpn-install) e/ou o [Headscale](https://github.com/hwdsl2/headscale-install) no mesmo servidor.
<details>
<summary>
Veja o script em ação (gravação de terminal).
</summary>
**Nota:** Esta gravação é apenas para fins de demonstração. As credenciais de VPN nesta gravação **NÃO** são válidas.
<p align="center"><img src="https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/HEAD/docs/images/script-demo.svg"></p>
</details>
<details>
<summary>
Clique aqui se não conseguir fazer o download.
</summary>
Pode também usar `curl` para fazer o download:```bash
curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh
URLs de configuração alternativas:```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
If you are unable to download, open [vpnsetup.sh](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/vpnsetup.sh), then click the `Raw` button on the right. Press `Ctrl/Cmd+A` to select all, `Ctrl/Cmd+C` to copy, then paste into your favorite editor.
</details>
A pre-built [Docker image](https://github.com/hwdsl2/docker-ipsec-vpn-server) is also available. For other options and client setup, read the sections below.
\* Um servidor em nuvem, servidor virtual privado (VPS) ou servidor dedicado.
## Comunidade
- 📬 [Inscreva-se para atualizações do projeto](https://selfhostedstack.beehiiv.com/subscribe?utm_campaign=vpn) (1–2 e-mails/mês) — receba guias gratuitos de implantação de VPN e IA (PDF)
- 💬 Participe da comunidade [r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/) para discussões
- ⭐ Marque o repositório com estrela se você o achar útil — isso ajuda outras pessoas a descobri-lo
## Requisitos
Um servidor em nuvem, servidor virtual privado (VPS) ou servidor dedicado, com uma instalação de:
- Ubuntu 26.04, 24.04 or 22.04
- Debian 13, 12 or 11
- CentOS Stream 10 or 9
- Rocky Linux or AlmaLinux
- Oracle Linux
<details>
<summary>
Outras distribuições Linux suportadas.
</summary>
- Raspberry Pi OS (Raspbian)
- Kali Linux
- Alpine Linux
- Red Hat Enterprise Linux (RHEL)
</details>
Isso também inclui VMs Linux em nuvens públicas, como [DigitalOcean](https://blog.ls20.com/digitalocean), [Vultr](https://blog.ls20.com/vultr), [Linode](https://blog.ls20.com/linode), [OVH](https://www.ovhcloud.com/en/vps/) e [Microsoft Azure](https://azure.microsoft.com). Usuários de nuvem pública também podem implantar usando [user data](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#vpnsetup).
Implantação rápida em:
[](https://cloud.linode.com/stackscripts/37239) [](aws/README.md) [](azure/README.md)
[**» Eu quero executar meu próprio VPN, mas não tenho um servidor para isso**](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#gettingavps)
Para servidores com firewall externo (por exemplo, [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/vpc/docs/firewalls)), abra as portas UDP 500 e 4500 para o VPN.
Uma imagem [Docker](https://github.com/hwdsl2/docker-ipsec-vpn-server) pré-construída também está disponível. Usuários avançados podem instalar em um [Raspberry Pi](https://www.raspberrypi.com). [[1]](https://elasticbyte.net/posts/setting-up-a-native-cisco-ipsec-vpn-server-using-a-raspberry-pi/) [[2]](https://www.stewright.me/2018/07/create-a-raspberry-pi-vpn-server-using-l2tpipsec/)
> [!WARNING]
> **NÃO** execute esses scripts no seu PC ou Mac! Eles devem ser usados apenas em um servidor!
## Instalação
Primeiro, atualize seu servidor com `sudo apt-get update && sudo apt-get dist-upgrade` (Ubuntu/Debian) ou `sudo yum update` e reinicie. Isso é opcional, mas recomendado.
Para instalar o VPN, escolha uma das seguintes opções:
**Opção 1:** Faça o script gerar credenciais VPN aleatórias para você (elas serão exibidas quando terminar).```bash
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
Opção 2: Edite o script e forneça suas próprias credenciais de VPN.```bash wget https://get.vpnsetup.net -O vpn.sh nano -w vpn.sh [Replace with your own values: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD] sudo sh vpn.sh
> [!NOTE]
> Uma PSK IPsec segura deve consistir em pelo menos 20 caracteres aleatórios.
**Opção 3:** Defina suas credenciais VPN como variáveis de ambiente.```bash
# All values MUST be placed inside 'single quotes'
# DO NOT use these special characters within values: \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpn.sh
[!TIP] Instale opcionalmente o WireGuard, o OpenVPN e/ou o Headscale no mesmo servidor. Se o seu servidor executa CentOS Stream, Rocky Linux ou AlmaLinux, instale primeiro o OpenVPN/WireGuard e depois instale a VPN IPsec.
Você também pode usar curl para baixar. Por exemplo:```bash
curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.sh
URLs alternativas de configuração:```bash
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
Se não conseguir baixar, abra vpnsetup.sh, depois clique no botão Raw à direita. Prima Ctrl/Cmd+A para selecionar tudo, Ctrl/Cmd+C para copiar e cole no seu editor favorito.
Geralmente, é recomendado usar a versão 5 mais recente do Libreswan, que é a versão padrão neste projeto. No entanto, se quiser instalar a versão 4 mais antiga do Libreswan:```bash wget https://get.vpnsetup.net -O vpn.sh sudo VPN_SWAN_VER=4.15 sh vpn.sh
**Nota:** Se o Libreswan versão 5 já estiver instalado, talvez seja necessário [desinstalar a VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/uninstall.md) antes de instalar o Libreswan versão 4. Em alternativa, baixe o [script de atualização](#upgrade-libreswan), edite-o para especificar `SWAN_VER=4.15` e execute o script.
</details>
## Personalizar opções da VPN
### Usar servidores DNS alternativos
Por padrão, os clientes são configurados para usar o [Google Public DNS](https://developers.google.com/speed/public-dns/) quando a VPN está ativa. Ao instalar a VPN, pode opcionalmente especificar servidores DNS personalizados para todos os modos VPN. Exemplo:```bash
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
Use VPN_DNS_SRV1 para especificar o servidor DNS primário, e VPN_DNS_SRV2 para especificar o servidor DNS secundário (opcional).
Abaixo está uma lista de alguns provedores de DNS públicos populares para sua referência.
| Fornecedor | DNS Primário | DNS Secundário | Observações |
|---|
| Google Public DNS | 8.8.8.8 | 8.8.4.4 | Padrão neste projeto |
| Cloudflare | 1.1.1.1 | 1.0.0.1 | Veja também: Cloudflare para famílias |
| Quad9 | 9.9.9.9 | 149.112.112.112 | Bloqueia domínios maliciosos |
| OpenDNS | 208.67.222.222 | 208.67.220.220 | Bloqueia domínios de phishing, configurável. |
| CleanBrowsing | 185.228.168.9 | 185.228.169.9 | Filtros de domínio disponíveis |
| NextDNS | Varia | Varia | Bloqueio de anúncios, plano gratuito disponível. Saiba mais. |
| Control D | Varia | Varia | Bloqueio de anúncios, configurável. Saiba mais. |
Se precisar alterar os servidores DNS após a configuração da VPN, consulte Uso avançado.
[!NOTE] Se o IKEv2 já estiver configurado no servidor, as variáveis acima não têm efeito para o modo IKEv2. Nesse caso, para personalizar opções do IKEv2, como servidores DNS, você pode primeiro remover o IKEv2 e depois configurá-lo novamente usando
sudo ikev2.sh.
Durante a instalação da VPN, usuários avançados podem opcionalmente personalizar as opções do IKEv2.
Ao instalar a VPN, você pode ignorar o IKEv2 e instalar apenas os modos IPsec/L2TP e IPsec/XAuth ("Cisco IPsec"):```bash sudo VPN_SKIP_IKEV2=yes sh vpn.sh
(Opcional) Se você quiser especificar servidor(es) DNS personalizados para clientes VPN, defina `VPN_DNS_SRV1` e opcionalmente `VPN_DNS_SRV2`. Consulte [Use servidores DNS alternativos](#use-alternative-dns-servers) para obter detalhes.
Depois disso, execute o script auxiliar IKEv2 para configurar o IKEv2 interativamente usando opções personalizadas:```bash
sudo ikev2.sh
Você pode personalizar as seguintes opções: nome DNS do servidor VPN, nome e período de validade do primeiro cliente, servidor DNS para clientes VPN e se deseja proteger com senha os arquivos de configuração do cliente.
Nota: A variável VPN_SKIP_IKEV2 não tem efeito se o IKEv2 já estiver configurado no servidor. Nesse caso, para personalizar as opções do IKEv2, você pode primeiro remover o IKEv2 e depois configurá-lo novamente usando sudo ikev2.sh.
Ao instalar a VPN, você pode opcionalmente especificar um nome DNS para o endereço do servidor IKEv2. O nome DNS deve ser um nome de domínio totalmente qualificado (FQDN). Exemplo:```bash sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh
Da mesma forma, você pode especificar um nome para o primeiro cliente IKEv2. O padrão é `vpnclient` se não for especificado.```bash
sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh
Por padrão, os clientes são configurados para usar o Google Public DNS quando a VPN está ativa. Você pode especificar servidor(es) DNS personalizado(s) para todos os modos de VPN. Exemplo:```bash sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
Por padrão, nenhuma senha é necessária ao importar a configuração do cliente IKEv2. Você pode optar por proteger os arquivos de configuração do cliente usando uma senha aleatória.```bash
sudo VPN_PROTECT_CONFIG=yes sh vpn.sh
| Parâmetro IKEv1* | Valor padrão | Personalizar (variável de ambiente)** |
|---|---|---|
| Endereço do servidor (nome DNS) | - | Não, mas você pode conectar usando um nome DNS |
| Endereço do servidor (IP público) | Detecção automática | VPN_PUBLIC_IP |
| Chave pré-compartilhada IPsec | Geração automática | VPN_IPSEC_PSK |
| Nome de usuário VPN | vpnuser | VPN_USER |
| Senha VPN | Geração automática | VPN_PASSWORD |
| Servidores DNS para clientes | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 |
| Pular configuração IKEv2 | não | VPN_SKIP_IKEV2=yes |
* Estes parâmetros IKEv1 são para os modos IPsec/L2TP e IPsec/XAuth ("Cisco IPsec").
** Defina-os como variáveis de ambiente ao executar vpn(setup).sh.
* Estes parâmetros IKEv2 são para o modo IKEv2.
** Defina-os como variáveis de ambiente ao executar vpn(setup).sh, ou ao configurar IKEv2 no modo automático (sudo ikev2.sh --auto).
*** Pode ser personalizado durante a configuração interativa do IKEv2 (sudo ikev2.sh). Consulte a opção 1 acima.
**** Use VPN_CLIENT_VALIDITY para especificar o período de validade do certificado do cliente em meses. Deve ser um número inteiro entre 1 e 120.
Além desses parâmetros, usuários avançados também podem personalizar sub-redes VPN durante a configuração da VPN.
Configure seu computador ou dispositivo para usar a VPN. Consulte:
Leia 📖 Livro VPN para acessar conteúdo extra.
Aproveite sua própria VPN! ✨🎉🚀✨
Usuários Windows: Para o modo IPsec/L2TP, é necessária uma alteração única no registro se o servidor VPN ou o cliente estiver atrás de NAT (por exemplo, roteador doméstico).
A mesma conta VPN pode ser usada por vários dispositivos. No entanto, devido a uma limitação do IPsec/L2TP, se você desejar conectar vários dispositivos atrás do mesmo NAT (por exemplo, roteador doméstico), deverá usar o modo IKEv2 ou IPsec/XAuth. Para visualizar ou atualizar contas de usuário VPN, consulte Gerenciar usuários VPN.
Para servidores com firewall externo (por exemplo, EC2/GCE), abra as portas UDP 500 e 4500 para a VPN. Usuários Aliyun, consulte #433.
Os clientes são configurados para usar o Google Public DNS quando a VPN está ativa. Se outro provedor de DNS for preferido, consulte Uso avançado.
Usar suporte do kernel pode melhorar o desempenho do IPsec/L2TP. Ele está disponível em todos os SO suportados. Usuários Ubuntu devem instalar o pacote linux-modules-extra-$(uname -r) e executar service xl2tpd restart.
Os scripts farão backup dos arquivos de configuração existentes antes de fazer alterações, com sufixo .old-date-time.
Use este comando de uma linha para atualizar o Libreswan (changelog | anúncio) no seu servidor VPN.```bash wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh
<details>
<summary>
Clique aqui se não conseguir baixar.
</summary>
Você também pode usar `curl` para baixar:```bash
curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.sh
URLs alternativas de atualização:```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.sh
Se você não conseguir baixar, abra [vpnupgrade.sh](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/extras/vpnupgrade.sh), depois clique no botão `Raw` à direita. Pressione `Ctrl/Cmd+A` para selecionar tudo, `Ctrl/Cmd+C` para copiar e cole no seu editor favorito.
</details>
A versão mais recente do Libreswan suportada é `5.3.1`. Verifique a versão instalada: `ipsec --version`.
**Nota:** o `xl2tpd` pode ser atualizado usando o gerenciador de pacotes do seu sistema, como `apt-get` no Ubuntu/Debian.
## Gerenciar usuários da VPN
Consulte [Gerenciar usuários da VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md).
- [Gerenciar usuários da VPN usando scripts auxiliares](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#manage-vpn-users-using-helper-scripts)
- [Ver usuários da VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#view-vpn-users)
- [Ver ou atualizar a PSK IPsec](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#view-or-update-the-ipsec-psk)
- [Gerenciar manualmente os usuários da VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users.md#manually-manage-vpn-users)
## Uso avançado
Consulte [Uso avançado](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md).
- [Usar servidores DNS alternativos](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#use-alternative-dns-servers)
- [Alterações de nome DNS e IP do servidor](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#dns-name-and-server-ip-changes)
- [VPN somente IKEv2](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#ikev2-only-vpn)
- [Ativar o Perfect Forward Secrecy do IKEv2](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#enable-ikev2-perfect-forward-secrecy)
- [IPs e tráfego internos da VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#internal-vpn-ips-and-traffic)
- [Especificar o IP público do servidor VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#specify-vpn-servers-public-ip)
- [Personalizar sub-redes VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#customize-vpn-subnets)
- [Suporte a IPv6](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#ipv6-support)
- [Encaminhamento de portas para clientes VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#port-forwarding-to-vpn-clients)
- [Tunelamento dividido](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#split-tunneling)
- [Acessar a sub-rede do servidor VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#access-vpn-servers-subnet)
- [Acessar clientes VPN a partir da sub-rede do servidor](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#access-vpn-clients-from-servers-subnet)
- [Modificar regras do IPTables](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#modify-iptables-rules)
- [Implantar o controle de congestionamento Google BBR](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#deploy-google-bbr-congestion-control)
## Desinstalar a VPN
Para desinstalar a VPN IPsec, execute o [script auxiliar](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/extras/vpnuninstall.sh):
> [!CAUTION]
> Este script auxiliar removerá a VPN IPsec do seu servidor. Toda a configuração da VPN será **excluída permanentemente**, e o Libreswan e o xl2tpd serão removidos. Isto **não pode ser desfeito**!```bash
wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh
Você também pode usar curl para baixar:```bash
curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.sh
URLs alternativas de script:```bash
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.sh
Para mais informações, consulte Desinstalar a VPN.
Copyright (C) 2014-2026 Lin Song 
Baseado no trabalho de Thomas Sarlandie (Copyright 2012)

Este trabalho está licenciado sob a Licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada
Atribuição obrigatória: por favor, inclua meu nome em qualquer obra derivada e me avise como você a melhorou!
| Parâmetro IKEv2* | Valor padrão | Personalizar (variável de ambiente)** | Personalizar (interativo)*** |
|---|
| Endereço do servidor (nome DNS) | - | VPN_DNS_NAME | ✅ |
| Endereço do servidor (IP público) | Detecção automática | VPN_PUBLIC_IP | ✅ |
| Nome do primeiro cliente | vpnclient | VPN_CLIENT_NAME | ✅ |
| Servidores DNS para clientes | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 | ✅ |
| Proteger arquivos de configuração do cliente | não | VPN_PROTECT_CONFIG=yes | ✅ |
| Ativar/Desativar MOBIKE | Ativar se suportado | ❌ | ✅ |
| Validade do certificado do cliente | 10 anos (120 meses) | VPN_CLIENT_VALIDITY**** | ✅ |
| Validade do certificado da CA e do servidor | 10 anos (120 meses) | ❌ | ❌ |
| Nome do certificado da CA | IKEv2 VPN CA | ❌ | ❌ |
| Tamanho da chave do certificado | 3072 bits | ❌ | ❌ |