Para criar e configurar uma VPN L2TP/IPsec no Ubuntu Server, você vai precisar de alguns pacotes e realizar algumas configurações. Abaixo está um passo a passo básico e funcional, testado para distribuições como Ubuntu 20.04/22.04:
✅ Pré-requisitos
- Servidor Ubuntu com acesso root.
- IP público fixo ou DNS dinâmico (ex: DuckDNS).
- Porta 1701 (L2TP), 500 e 4500 (IPsec) liberadas no firewall.
🔧 1. Instalar os pacotes necessários
sudo apt update
sudo apt install strongswan xl2tpd ppp lsof
🔐 2. Configurar o IPsec (IPsec é responsável pela camada de criptografia)
Edite o arquivo /etc/ipsec.conf
:
sudo nano /etc/ipsec.conf
Cole o conteúdo abaixo:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn %default
keyexchange=ikev1
authby=secret
ike=aes256-sha1-modp1024
esp=aes256-sha1
keyingtries=1
ikelifetime=8h
lifetime=1h
dpdaction=clear
dpddelay=300s
dpdtimeout=1h
conn L2TP-PSK
keyexchange=ikev1
left=%defaultroute
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
auto=add
type=transport
authby=secret
🔑 3. Adicionar o segredo PSK
Edite o arquivo /etc/ipsec.secrets
:
sudo nano /etc/ipsec.secrets
Adicione:
: PSK "sua_senha_forte_aqui"
📡 4. Configurar o xl2tpd (responsável pela VPN L2TP)
Edite o arquivo /etc/xl2tpd/xl2tpd.conf
:
sudo nano /etc/xl2tpd/xl2tpd.conf
Cole isso:
[global]
port = 1701
[lns default]
ip range = 10.0.10.2-10.0.10.100
local ip = 10.0.10.1
require chap = yes
refuse pap = yes
require authentication = yes
name = L2TP-VPN
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
📄 5. Criar o arquivo de opções PPP
Edite o arquivo /etc/ppp/options.xl2tpd
:
sudo nano /etc/ppp/options.xl2tpd
Adicione:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 1.1.1.1
asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1400
mru 1400
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
👥 6. Adicionar usuários VPN
Edite o arquivo /etc/ppp/chap-secrets
:
sudo nano /etc/ppp/chap-secrets
Formato:
usuario L2TP-VPN senha *
Exemplo:
joao L2TP-VPN 123456 *
🔥 7. Ativar o encaminhamento de IP
Edite o arquivo /etc/sysctl.conf
:
sudo nano /etc/sysctl.conf
Descomente ou adicione:
net.ipv4.ip_forward=1
Aplique:
sudo sysctl -p
🧱 8. Ajustar o firewall (ufw ou iptables)
Se usar UFW:
sudo ufw allow 1701,500,4500/udp
E regras para NAT:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables-save > /etc/iptables.rules
Persistência:
Edite /etc/rc.local
(crie se não existir):
#!/bin/sh -e
iptables-restore < /etc/iptables.rules
exit 0
E dê permissão:
sudo chmod +x /etc/rc.local
🚀 9. Reiniciar os serviços
sudo systemctl restart strongswan
sudo systemctl restart xl2tpd
🧪 10. Testar e conectar
Em clientes Windows, macOS ou Android:
- Tipo: L2TP/IPsec com chave pré-compartilhada
- Endereço: IP ou domínio do seu servidor
- Nome de usuário e senha: definidos no
chap-secrets
- PSK: a chave definida em
ipsec.secrets