Então, configurei um tun
servidor OpenVPN razoavelmente básico e estou tendo problemas para obtê-lo para que o servidor possa se comunicar com todos os clientes conectados.
Atualmente tenho dois conjuntos de clientes, alguns que não usam VPN para se conectar à Internet (apenas para conversar com os outros clientes) e alguns que enviam redirect-gateway
todo o tráfego pela VPN.
Com a forma como configurei, todos os clientes conectados podem se comunicar com o servidor e com os demais clientes. Porém, a partir do servidor, só consigo acessar (por exemplo, fazer ping) dos clientes que estão usando redirect-gateway
para enviar todo o seu tráfego através da VPN. Os clientes que não usam essa configuração podem executar ping no servidor, mas o servidor não pode executar ping de volta (eles não respondem e o tempo limite).
Como posso configurar o roteamento para que o servidor ainda possa se comunicar com os clientes, mesmo que eles não usem a VPN como gateway padrão?
Aqui está a configuração do servidor relevante:
port 1194
proto udp
dev tun
topology subnet
push "topology subnet"
server 10.7.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-config-dir /etc/openvpn/ccd
client-to-client
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
explicit-exit-notify 1
No diretório de configuração do cliente no servidor, cada cliente possui um arquivo como este (apenas para fornecer a cada um um IP estático):
ifconfig-push 10.7.0.10 255.255.255.0
Os bits relevantes da configuração do cliente local:
client
dev tun
proto udp
remote {server's public ip} 1194
float
keepalive 15 60
ns-cert-type server
key-direction 1
tun-mtu 1500
cipher AES-256-CBC
keysize 256
comp-lzo yes
nobind
Os clientes que estão usando a VPN para acesso à Internet são adicionados redirect-gateway def1 bypass-dhcp
à sua configuração.
Estou usando ufw
o firewall do meu servidor - aqui está a configuração relevante (em /etc/ufw/before.rules):
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.7.0.0/8 -j SNAT --to-source {server's public ip}
Como está sendo executado em um VPS OpenVZ, não posso usar MASQUERADE
, mas o procedimento acima parece funcionar tão bem.
Alguma idéia de como configurar isso corretamente? Desde já, obrigado. Se for importante, o servidor está executando o CentOS.