Você precisa implementar o roteamento de política , o que significa ter duas tabelas de roteamento. Não tocaremos na tabela de roteamento main
, que já está configurada corretamente. Se você ativou o encaminhamento IPv4, ele enviará automaticamente os pacotes da eth1 para o OpenVPN.
Primeiramente, precisamos aprender como o OpenVP configura a tabela de roteamento. Para isso, finalize o cliente OpenVPN a partir da linha de comando:
sudo openvpn --config YourConfigFile.conf
(ou YourConfigFile.ovpn
, o que você usa). As últimas linhas vão te dizer como ele configura a nova tabela de roteamento, por exemplo no meu caso diz:
Tue Jul 14 18:58:07 2015 /sbin/ip route add My.Server.Public.IPaddress/32 via 192.168.105.1
Tue Jul 14 18:58:07 2015 /sbin/ip route add 0.0.0.0/1 via 10.8.73.5
Tue Jul 14 18:58:07 2015 /sbin/ip route add 128.0.0.0/1 via 10.8.73.5
Tue Jul 14 18:58:07 2015 /sbin/ip route add 192.168.73.0/24 via 10.8.73.5
Tue Jul 14 18:58:07 2015 /sbin/ip route add 10.8.73.0/24 via 10.8.73.5
Tue Jul 14 18:58:07 2015 Initialization Sequence Completed
As rotas acima devem ser introduzidas em um arquivo executável, exceto que alguns desses números são peculiares a essa instância específica da VPN. No entanto, o OpenVPN fornece variáveis ambientais úteis que irão manter os valores das interfaces usadas acima, e que são muito úteis: neste caso específico, eles são
route_net_gateway -> 192.168.105.1
route_vpn_gateway -> 10.8.73.5
Assim, as linhas que você precisa adicionar a um arquivo (vamos chamá-lo de /etc/openvpn/route_up.sh
) são:
/sbin/ip route add Your.OpenVPN.Server.IPAddress/32 via $route_net_gateway table vpn
/sbin/ip route add 0.0.0.0/1 via $route_vpn_gateway table vpn
/sbin/ip route add 128.0.0.0/1 via $route_vpn_gateway table vpn
/sbin/ip route add Remote.LAN.Net/24 via $route_vpn_gateway table vpn
/sbin/ip route add 172.18.2.0/24 via $route_vpn_gateway table vpn
Lembre-se de substituir, acima, o endereço IP do seu servidor remoto e de sua LAN local se você usá-lo ; Se você está usando apenas o OpenVPN para obter um IP do seu servidor, então você não precisa do próximo da última declaração. Lembre-se de tornar o arquivo executável, chmod 700 route_up.sh
.
Além disso, você também terá que criar um novo arquivo, /etc/openvpn/route_down.sh
, também executável, que derruba exatamente as mesmas rotas (basta alterar add
para del
).
Agora precisamos informar ao seu OpenVPN para evitar a implementação das rotas, porque faremos isso manualmente: no seu arquivo YourConfigFile.conf, adicione as seguintes linhas:
route-nopull
up /etc/openvpn/route_up.sh
down /etc/openvpn/route_down.sh
Por último, precisamos configurar a tabela de roteamento diferente para a VPN. Adicione uma nova tabela de roteamento, vamos chamá-la vpn
:
echo 200 vpn >> /etc/iproute2/rt_tables
Agora, introduzimos uma regra:
ip rule add from 10.0.0.0/24 table vpn
onde assumi que a rede por trás de eth1
é 10.0.0.0/24
, se não for, por favor mude de acordo.
Por último, você terá que introduzir uma regra de iptables MASQUERADE:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
É isso.