OpenVPN Hairpin Nat

1

Eu tenho uma configuração do OpenVPN que se parece com isso:

                                            +------------------------------------------------------+
                                            |                                                      |
                                            |                                                      |
                                            |                                                      |
                                            |                                                      |
                                            |                                                      |
                                            |                                                      |
                                            |                                                      |
                                            |                 +-------------+--+                   |
                                            |                 | Internal Server|                   |
                                            |                 | 10.19.4.35     |                   |
                                            |                 |                |                   |
                                            |                 +----------------+                   |
                                      +-----+-------+                                              |
                                      | Gateway     |                                              |
                                      | 10.19.4.1   |                                              |
                                      |             |                                              |
                                      +-----+-------+         +--------+-------+                   |
                                            |                 | VPN Server     |                   |
                                            |                 | 10.19.4.59 eth0|                   |
                               +------------------------------+ 10.19.5.0 tun0 |                   |
+-------------+---+            |            |                 +----------------+                   |
|   Remote Server |            |            |                                                      |
|   10.0.0.2 eth0 +------------+            |                                                      |
|   10.19.5.2 tun0|                         |                                                      |
+-----------------+                         |                                                      |
                                            |                                                      |
                                            |                                                      |
                                            +------------------------------------------------------+
                                                              VPC                                   

O gateway é um gateway da AWS e há uma rota para encaminhar o tráfego 10.19.5.0/24 para o servidor VPN. Eu também estou empurrando uma rota para o servidor remoto para 10.19.4.0/24. Eu também estou usando NAT na eth0 no servidor VPN.

Se eu pingar "Servidor Interno" do "Servidor Remoto", ele funcionará perfeitamente e eu receberei uma resposta. Se eu fizer o ping do eth0 IP do servidor interno do Servidor VPN, recebo uma resposta corretamente.

O problema é que, se eu tentar pingar o endereço IP tun0 do Servidor Remoto ou do Servidor VPN do Servidor Interno, ele nunca recebe a resposta. Depois de fazer alguns despejos de TCP, descobri que quando tento enviar pacotes para 10.19.5.0/24 do servidor interno, ele vai para o gateway como você esperaria. Em seguida, o gateway roteia esse tráfego para o servidor VPN. O servidor VPN está manipulando o tráfego corretamente, pois ele gerará uma resposta se for o destino ou roteará o pacote para o servidor remoto e será a resposta se o servidor remoto for o destino.

O problema é que, em vez de enviar essa resposta para o gateway, o servidor VPN envia o pacote diretamente para 'Internal Server' (isso foi confirmado pela observação dos endereços MAC com o tcpdump).

Eu vi alguma documentação sobre como corrigir isso, mas depois de brincar com SNAT / DNAT / MASQUERADE e especificar vários endereços de origem, ainda não sei como consertar isso com IPTABLES.

Qualquer ajuda seria muito apreciada.

    
por Jonathon Klem 03.11.2014 / 15:03

1 resposta

2

Acontece que isso foi uma questão da Amazônia. Eu tive que desabilitar a verificação src / destination do painel para permitir que ele roteasse pacotes.

    
por 13.11.2014 / 21:05