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 MASQUERADEouiptables -t nat -A POSTROUTING -o ext_if-j SNAT --to-source ext_ipcom o significado óbvio deext_ifeext_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/1e128.0.0.0/1em 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: