Estou tentando rotear o tráfego destinado à Internet pública por meio de uma rede OpenVPN, em que o tráfego sairá da VPN por meio de outro cliente na rede (que por acaso é uma VM do VirtualBox).
Para explicar a topologia, usarei o cliente A como o originador do tráfego e o cliente E como o ponto de saída / suposto destino pretendido do tráfego. Os clientes e o servidor são máquinas Linux.
Os clientes A e E estão conectados a um servidor OpenVPN e possuem endereços locais em uma sub-rede criada pelo servidor; digamos 10.8.0.0/16, onde o servidor tem 10.8.0.1, e os clientes A, E, têm ... 2 e ... 3. Os clientes podem se comunicar através do servidor. O servidor OpenVPN também possui um túnel GRE para o cliente E que é executado sobre a conexão OpenVPN.
Atualmente, a topologia / fluxo abstrato se parece com isso:
(A) ={OpenVPN}=> (OpenVPN Server) ={GRE in OpenVPN}=> (E) -> ...
O problema que estou tendo é que, uma vez que o tráfego chegue ao cliente E, ele não está sendo enviado pelo gateway padrão do E para a Internet pública.
A configuração relevante dos clientes é a seguinte:
A:
default gateway is the OpenVPN server (10.8.0.1)
Servidor OpenVPN:
ip rule add from 10.8.0.2 lookup node
A tabela de roteamento 'node' tem as rotas:
default dev gre5 scope link
10.8.0.0/16 dev tun0 proto static scope link src 10.8.0.1
E:
default gateway is the VirtualBox nat network (through which it has a working Internet connection)
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 1
iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
The iptables policy for E's filter table is to accept everything.
Usando o tcpdump eu posso ver os pacotes de A saindo da interface de túnel GRE do E, mas eles parecem cair no E. Eu pude verificar que eles não estão sendo encaminhados através de qualquer uma das interfaces do E (loopback, o túneis virtuais nem a interface de rede VBox nat; eth0 acima).
Estou perdendo alguma configuração extra / especial relacionada ao túnel GRE ou a algo relacionado a ele? Esse problema está relacionado ao fato de que o cliente de ponto final é uma VM?
Opcionalmente, existe uma maneira melhor de direcionar tráfego para redes estrangeiras através de uma rede OpenVPN e de um cliente?
Tenho prazer em fornecer mais detalhes, se necessário.
Tabela de roteamento de E, conforme solicitado por @MariusMatutiae
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
10.8.0.0 * 255.255.0.0 U 0 0 0 tun0
10.10.5.0 * 255.255.255.0 U 0 0 0 gre5
192.168.56.0 * 255.255.255.0 U 0 0 0 eth1
Onde eth0 está conectado à rede VBox nat, eth1 está conectada a uma rede somente host que eu uso para ssh na VM, tun0 é a interface OpenVPN e gre5 é a interface para o túnel GRE.