Para resumir a discussão:
Para alcançar um host específico A através de uma VPN do cliente C para o servidor S, é necessário:
- ativar o encaminhamento de ip em S (
sysctl -w net.ipv4.ip_forward=1
) - ativar o mascaramento ou snat via iptables no S:
iptables -t nat -A POSTROUTING -o ext_if -j MASQUERADE
ouiptables -t nat -A POSTROUTING -o ext_if-j SNAT --to-source ext_ip
com o significado óbvio deext_if
eext_ip
. - configurar o roteamento apropriado em C, seja (S denota S 'endereço IP na VPN ):
- definindo uma rota explícita para A via S:
ip route add A via S dev vpn_if
- definindo uma rota padrão via S:
ip route add default via S dev vpn_if
, onde também é preciso definir uma rota apropriada para S:ip route add S via previous_gateway dev prev_if
. - usando o
push "redirect-gateway def1"
no servidor, em cujo caso o OpenVPN configurará rotas para0.0.0.0/1
e128.0.0.0/1
em C por S, que são mais específicas que a rota padrão e podem ser facilmente removidas quando o túnel está parado.
- definindo uma rota explícita para A via S: