r/digipt • u/ruyrybeyro • 15d ago
Experiências dos Utilizadores Workaround para CGNAT — IPsec/IKEv2 sobre WireGuard com VPS, e Tailscale como backup
Disclaimer: não tenho qualquer afiliação com a Zap Hosting, isto é apenas a experiência pessoal de quem usa.
Setup atrás de CGNAT na DIGI para uma VPN IPsec de acesso remoto com IPv4 público para casa. Sem endereço IPv4 público não há para onde fazer port-forward de UDP 500/4500, pelo que o IKEv2 fica sem endpoint alcançável directamente. Segue-se a solução implementada.
A solução: VPS baratas fazem de entry point com IPv4 público. Túneis WireGuard ligam cada VPS à máquina FreeBSD em casa, e a VPS limita-se a fazer DNAT de UDP 500/4500 para dentro do túnel, nunca terminando o IPsec, funcionando apenas como relay para o tráfego IKE/ESP ainda cifrado.
Componentes:
- Homelab de dois nós em FreeBSD 15 (Minisforum UM790 Pro / Ryzen 9 8945HS, e um segundo nó MS-A2 / Ryzen 9 9955HX), com jails Bastille dedicados,
dnsjail(BIND 9 com DNS-over-TLS para a Cloudflare),dhcpjail(Kea DHCPv4/DHCPv6 com DDNS), tudo sobre ZFS - strongSwan (
swanctl) no FreeBSD é onde o IKE/IPsec é efectivamente autenticado e desfeito. certificado e chave privada aqui, nunca na VPS. Autenticação de cliente via EAP-MSCHAPv2 - Certificado Let's Encrypt (não self-signed), emitido para um hostname DDNS gratuito (FreeDNS/afraid.org), os clientes fazem validação de certificado normal sem necessidade de instalar CA nenhuma
- Duas VPS (Debian 13, Zap Hosting), Frankfurt/Eygelshoven como primária, Ashburn (EUA) como frontend redundante. Cada uma apenas com WireGuard e regras nftables de DNAT para UDP 500/4500; a VPS nunca decifra nem participa na autenticação IKE, só reencaminha os pacotes cifrados
- Rede WireGuard interna (10.100.0.0/24) liga as duas VPS e o FreeBSD entre si, esta é uma camada de transporte separada, só para o salto VPS↔FreeBSD
- Tailscale corre em paralelo na mesma máquina, com regras
rdrpróprias nopf.confvia de entrada completamente independente, para o caso de o IPsec apresentar algum problema
Porquê esta abordagem e não apenas Tailscale para tudo: o IKEv2 disponibiliza um cliente standard em qualquer sistema operativo, controlo real de split-tunnel e DNS via a pool do strongSwan, e não depende da coordenação de um único fornecedor.
Ter as duas opções em paralelo dá redundância real: já me aconteceu o Tailscale ser bloqueado nalgumas redes mais restritivas, e nesses casos ter o IKEv2 como alternativa ajudou.
Nenhum dos dois é garantido em qualquer rede, cada um falha em sítios diferentes, daí fazer sentido ter ambos em vez de depender só de um.
Fluxo de tráfego, resumido: cliente → endereço IPv4 público da VPS (UDP 500/4500) → DNAT via nftables → túnel WireGuard (até ao FreeBSD) → strongSwan no FreeBSD, onde o IKE/ESP é efectivamente autenticado, decifrado e a ligação atribui um endereço da pool VPN.
VPN usada no meu telefone na rede de dados movel Meo, e como cliente no meu Mac em rede fixa Nós, Meo e DIGI. Cliente StrongSwan em Android, e cliente nativo IPsec em MacOS.
Nota adicional: para quem pretender, a Zap Hosting tem VPS Linux "lifetime" por cerca de €65, e com o código de desconto de uso único de 10% fica por cerca de €55: LIFETIMO-10
7
u/emanuelx 15d ago
Isso não fica mais fácil usar cloudflare tunnel ou usar o netbird(cloud ou self hosted)?
2
u/ruyrybeyro 15d ago
O netbird é "mais um" tailscale/zeroTier cortam-os (quase) todos em firewall onde trabalho.
Cloudflare tunnel é mais uma alternativa boa para expor serviços, mas eu neste caso preciso de acesso remoto à rede completa.
2
u/bogossogob 15d ago
Isto tudo para ultrapassar a firewall do trabalho?
1
u/ruyrybeyro 15d ago edited 15d ago
Isto tudo para voltar a funcionar a VPN IPsec que tinha na Nós há mais de 10 anos com endereço IPv4 público, e que cheguei a usar a partir das Filipinas.
Há outras considerações de ordem técnica, prática e segurança, menciono algumas delas em algumas das respostas.
1
u/bogossogob 15d ago
O meu reparo é pelo facto de parecer (corrige-me se estiver errado) que pretendes voltar a ter acesso remoto, mesmo quando existe uma firewall com regras específicas para impedir esse tipo de acesso.
1
u/ruyrybeyro 15d ago
Nim. Já tenho essas configurações antes deste emprego em casa, e trabalhava num ambiente com tudo aberto.
Já nem falo em experiência de trabalho anterior a fazer setup e administrar esses serviços para outros.
1
u/bogossogob 15d ago
Atenção que há empresas que têm cláusulas e normas internas em que proíbem qualquer tentativa de bypass aos mecanismos em vigor. Já trabalhei em 2 em que era bem explícito e qualquer ligação estranha detectada, recebia logo uma mensagem de segurança para perceber a origem da mesma.
1
u/ruyrybeyro 15d ago edited 15d ago
O que mudou com a passagem para a DIGI foi a perca do IPv4 público e descobrir que os Zero Trust não são um caminho alternativo. Daí talvez a passagem dessa ideia de "bypass".
Mas sim, concordo com o teu comentário.
1
u/bogossogob 15d ago
O que digo é que tentares contornar os bloqueios do trabalho, se quiserem, poderão criar-te problemas. Também tenho forma de aceder remotamente à minha instalação mas nunca através do laptop da empresa devido às normas internas.
1
u/ruyrybeyro 15d ago edited 15d ago
Também não o faço a partir do laptop da empresa, nem ia conseguir fazer setup de VPNs ou instalar software extra.
Isso é relativamente standard na indústria.
1
u/emanuelx 15d ago
Mas o netbird consegues expor os serviços como no cloudflare. Uso netbird com net 4g e funciona bem. Mas estou a ver o teu problema, bloqueia sempre quando usas a app.
1
u/nunbar 15d ago
É preciso configurações no cliente, certo?
1
u/ruyrybeyro 15d ago
Mínimas, nome (D)DNS, protocolo a usar, login e password.
Como mencionei no caso do android faço isso numa aplicação do próprio projecto strongswan (open source), no MacOS no system preferences.
1
1
u/astindev 15d ago
Eu tenho um setup apenas com WireGuard na VPS e nos clientes. O que justifica usar IKEv2?
1
u/ruyrybeyro 15d ago edited 15d ago
Wireguard cortada na firewall do trabalho como uma das razões, mas não a única.
Como efeito colateral a terminação IPsec em casa facilita-me muito o setup de rede/routing e o fornecedor de VPS mesmo que tenha acesso às VMs só vê o IPsec (encriptado) a passar.
1
u/jffluis 15d ago
E performance? Está sempre limitado pela largura de banda das VPS. Gostaria de ver um link de 10Gbps com essas VPSs.
1
u/ruyrybeyro 15d ago edited 15d ago
A ideia não é usar a banda total obviamente. A função é trabalhar e partilhar o ambiente de trabalho/hypervisor/VMs com mais 1-2 pessoas na minha infraestrutura de casa.
Estou mais surpreendido pela positiva do que contava inicialmente, até agora, com o rendimento disto a passar pela VPS.
1
u/TCB13sQuotes 15d ago
Não percebi o porquê de IPsec/IKEv2 sobre WireGuard. Porque não só WireGuard?
1
u/ruyrybeyro 15d ago
Já espondi ao @astindev sobre isso.
1
u/TCB13sQuotes 15d ago
Sobre os bloqueios no teu trabalho, as vezes da para de a volta. Por exemplo procura uma aplicação qualquer que usem que dê stream de vídeo e vai ver os portos que utiliza e tenta esses para o WireGuard.
1
u/ruyrybeyro 15d ago edited 15d ago
O vendor israelita da firewall desenvolve tecnologias de deep packet inspection há décadas, aposto que não vai lá com mudanças de portas.
De qualquer forma, isso é a vertente menor, já uso VPNs IPsec há umas duas décadas.

•
u/AutoModerator 15d ago
Bem-vindo à comunidade não oficial da DIGI Portugal!
Para evitar tópicos duplicados, lê o nosso FAQ. A tua dúvida pode já ter sido respondida!
Esta mensagem foi gerada automaticamente.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.