Proxmox - Cluster com estrutura de rede completa, firewall interno e SDNs

Olá!

Estou utilizando o Proxmox há um tempo e, hoje, tenho uma estrutura bem robusta aqui no meu homelab. Estou criando este tópico para compartilhar um pouco do que aprendi e como está o meu projeto de cluster Proxmox hoje.

Creio que esta estrutura pode ser usada total ou parcialmente por todos que usam Proxmox e querem dar um próximo passo no sentido de dar mais controle e observabilidade ao ambiente.

Minha estrutura está, resumidamente, como o diagrama abaixo:

A minha estrutura aqui tem um cluster de 3 hosts rodando Proxmox VE formando um Datacenter único.

Tenho interfaces de rede dedicadas para a entrada padrão do Proxmox e para as sincronias do cluster e do Ceph.

O Ceph é usado como sistema distribuído de arquivos para rodar todas as VMs e Containers que operam em HA.

Criei um roteador virtualizado (OpnSense) no meu cluster para fazer o roteamento interno entre a rede principal padrão do Proxmox e as SDNs (redes definidas por software). Assim consigo rotear, observar e filtrar os pacotes que transitam entre as SDNs, sem gerar trafego fora do cluster. Com isso criei, dentre outras, uma rede DMZ (virtual) que pode ser acessada diretamente sem NAT da minha rede interna. Só quem faz NAT é o roteador de entrada, externo ao cluster. A DMZ tem acesso à Internet, mas não à minha rede interna. Nesta DMZ ficam os serviços com acesso público, que é feito por um ClouFlare Tunnel.

Sei que é uma estrutura que parece mais complicada, mas a ideia é dar mais velocidade, resiliência e proteção ao ambiente. Creio que mesmo a instalação mais simples de Proxmox pode se beneficiar de alguma ideia deste projeto.

Se quiserem mais detalhes, por favor, avisem.

4 curtidas

Belo cluster amigo(e bela representação).

Atualmente tenho apenas um host simples, o gerenciamento da rede fica por conta de um OWRT físico, porém não há qualquer segmentação ainda.

Pouco tempo atrás meu IPS bloqueou o acesso as portas privilegiadas(leia-se 443), então nada de acesso web externo com NAT. Terei que implementar algo assim como seu setup, usando CF Tunnels.

Uma coisa, quanto ao firewall, vc usa o proxmox, esse OPNS ou passa as regras internamente nas VMs?

Se tiver tempo, compartilhe mais. :v:

Obrigado pelo comentário.

No OWRT você pode criar VLANs, com isso você pode criar uma rede segmentada e integrar esta VLAN no Proxmox. Esta é a forma mais simples de fazer uma segmentação e ela permite que equipamentos dentro e fora do Proxmox se conectem à esta VLAN.

Isto está cada vez mais frequente. Com o CF Tunnel você consegue expor serviços na 443 sem nenhum problema e com as vantagens de usar um certificado assinado para o domínio e não expor seus IPs diretamente. Colocando os serviços publicamente acessíveis em uma rede separada, o túnel não tem acesso aos servidores e máquinas locais, elevando seu grau de proteção.

O OpnSense faz roteamento, firewall, DHCP e DNS para as redes definidas com VLANs via SDN do Proxmox. O OpnSense não vê as redes como VLANs, ele as vê como interfaces de rede LAN e gerencia o trafego entre elas. As VMs igualmente não tem configuração da VLANs, seja no nível do sistema operaciona, seja no nível da interface de rede definida no Proxmox. O único lugar onde o conceito de VLAN é aplicado diretamente no meu cenário é na hora de definir a Zone (Datacenter → SDN → Zones) que precisa ser do tipo VLAN e na definição da VNet (Datacenter → SDN → VNets) que, além de pertencer à Zona tipo VLAN previamente definida, precisa ter o campo Tag com um número para sua VLAN. De resto, é só associar uma interface de rede e colocá-la como pertencente à esta VNet definida que fará parte desta rede separada. É isto que fiz no firewall e nas VMs.

No seu caso, onde você tem um roteador externo único e uma única máquina com Proxmox, vou colocar um passo-a-passo aqui. Se tiver algum problema, avise.

1 - Crie uma VLAN no OWRT. Eu encontrei documentação de como fazer isso, mas há como fazer por linha de comando e pela interface. Veja qual faz sentido para você. Para o exemplo, vou considerar que você criou uma VLAN com ID 20 e IPs 192.168.20.0/24. Também considero que sua LAN usa 192.168.10.0/24.

2 - No Proxmox, a primeira coisa a fazer é permitir a passagem de pacotes VLAN pela sua interface principal, normalmente vmbr0. Você precisa habilitar a opção VLAN awere em PVE ->System → Network, selecione a interface, edite e dê Ok.

3 - Crie uma Zona do tipo VLAN em Datacenter → SDN → Zones

Screenshot 2024-11-04 111848

4 - Crie uma VNET em Datacenter → SDN → VNets com a Tag que colocou para a VLAN. No exemplo, Tag 20. Não é preciso criar uma subnet.

5 - Aplique as mudanças de SDNs em Datacenter → SDN e clique em Apply.

6 - Crie/Modifique as interfaces de rede das VMs que ficarão na rede isolada para a VNet criada (onde era vmbr0, passa a ser CFTunnel). Lembre-se de ajustar IP, GW e DNS se a VM operar com IPs estáticos.

7 - Extra: no OWRT verifique as configurações de bloqueio. É interessante que as máquinas da rede LAN tenham acesso à VLAN 20, mas a VLAN 20 tenha o acesso aos IPs da LAN bloqueados. Você pode criar esta regra e habilitar log para analisar eventuais tentativas e entrada.

Acho que é isso.

Não vou explicar como colocar o Cloudflare Tunnel no ar porque o próprio conteúdo deles é bem intuitivo, mas pode perguntar tiver dúvidas. No meu cenário, eu usei um container do Proxmox rodando Ubuntu como máquina do CF Tunnel. Assim consigo colocar ela como HA no Proxmox e mitigar quedas.

Boa sorte!

2 curtidas

Obrigado pela atenção amigo, dicas valiosas!

Muito bom!

No momento as trivialidades do dia a dia não me deixam tempo para implementar tudo com calma, mas vem um feriado por aí, quem sabe. Estou estudando montar outro host, meu atual é limitado quanto a expansões de todo tipo(tinyPC). Talvez eu mude para um SFF para aproveitar o pcie e colocar uma NIC dedicada.

Mais uma vez, obrigado! :v: :handshake: