Preciso de ajuda para entender como permitir que clientes VPN acessem servidores que estão na "intranet".
Tenho um servidor dedicado/físico na ovh (se isso importa) com 4 ips adicionais. O sistema operacional instalado é o proxmox e tenho dois dispositivos de rede (o tipo deles é 'ponte Linux'). Um tem o ip público do servidor atribuído (vmbr0), o outro (vmbr1) tem o ip 172.20.0.1 com 255.252.0.0 como máscara de rede.
Criei algumas máquinas virtuais que possuem apenas o vmbr1 atribuído a elas. Posso felizmente fazer ping entre essas máquinas. Também obtenho acesso à Internet a partir dessas máquinas como se estivessem atrás do meu roteador doméstico. Se for importante, em 172.20.0.2 tenho um servidor DHCP e em 172.20.0.3 e 172.20.0.4 tenho dois servidores DNS.
Criei outra máquina virtual que possui vmbr0 e vmbr1 atribuídos a ela. Eu configurei um dos ips públicos adicionais no vmbr0 e posso fazer ssh nele. Também instalei o openvpn e configurei-o para que os clientes tenham acesso à internet através do servidor VPN. Os clientes VPN obtêm ips da rede 10.8.0.0/24.
O que eu quero fazer agora é permitir que todos os servidores de 172.20.0.0/14 façam ping/ssh/etc nos clientes VPN que estão na rede 10.8.0.0/24.
Descobri que preciso fazer com que o servidor openvpn envie algumas rotas para os clientes (para que os clientes saibam sobre a outra rede);
Tenho certeza que preciso fazer algo no próprio host proxmox (porque existe o gateway para a rede 172.20.0.0/14) e acredito que também preciso adicionar algumas regras de iptable no próprio servidor openvpn para poder encaminhar/mascarar o tráfego entre as redes, mas não consigo entender exatamente quais regras.
Então, minha pergunta é: o que preciso fazer para permitir que os clientes VPN acessem os servidores virtuais com esta configuração?
Responder1
Se você não tiver um firewall no host OpenVPN, o padrão será permitir o tráfego, então você pode ignorar isso.
Os clientes precisam ter rotas enviadas para eles para garantir que o tráfego destinado à sub-rede interna seja roteado pela VPN. Esta pode ser uma rota padrão (fazendo com que TODO o tráfego seja enviado pelos clientes pela VPN) ou uma rota específica para sua sub-rede interna. Você identificou que pode enviar isso na configuração da VPN (desde que use autenticação baseada em certificado).
Você precisa habilitar o encaminhamento de IP no host OpenVPN. Use sysctl
para definir o valor net.ipv4.conf.all.forwarding
como 1. Adicione um arquivo para /etc/sysctl.d
garantir que isso persista durante as reinicializações.
Os hosts locais também exigem rotas para garantir que saibam como acessar a sub-rede OpenVPN. Você poderia:
Use NAT no host OpenVPN para fazer com que os pacotes encaminhados pareçam vir de seu IP interno. Isso oculta a existência da sub-rede 10.8.0.0/24 e, portanto, evita a necessidade de qualquer outro dispositivo saber sobre ela, mas significa que todo o tráfego de todos os clientes VPN parece originar-se de um único host.
Configure rotas para garantir que o tráfego destinado a 10.8.0.0/24 seja direcionado ao host OpenVPN. Eles podem ser adicionados em cada VM ou na máquina host. Use a
route
ferramenta e adicione comandos às declarações da interface de rede para garantir que elas persistam durante as reinicializações.