Encaminhamento de tráfego na máquina virtual Linux recebida através do túnel GRE conectado ao OpenVPN

4

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.

    
por ThomasL744 31.05.2016 / 23:25

0 respostas