Roteie o tráfego do AWS VPC por meio do OpenVPN

Roteie o tráfego do AWS VPC por meio do OpenVPN

Preciso acessar alguns hosts acessíveis por meio do OpenVPN na minha sub-rede privada AWS VPC. Minha configuração de VPC é semelhante à descritaaqui.

Dentro da rede privada criei uma instância EC2 que configura um cliente OpenVPN com o seguinte comando:

openvpn --verb 3 --config config.ovpn  --script-security 2 --up up.sh

Conteúdo do arquivo de script up.sh:

#!/bin/bash

/sbin/sysctl -w net.ipv4.ip_forward=1
/sbin/iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT 2>&1
/sbin/iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
-j ACCEPT 2>&1
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 2>&1

Vamos supor que 171.20.0.0/16 seja a sub-rede por trás da VPN. A tabela de rotas para sub-rede privada é semelhante a esta:

DESTINATION    TARGET
10.0.0.0/16    local
0.0.0.0/0      nat-gateway
171.20.0.0/16  ec2-instance-with-openvpn-client

Estou usando grupos de segurança padrão.

Meu problema é que não consigo acessar hosts atrás de VPN a partir de uma imagem docker em execução em um cluster ECS dentro de uma sub-rede privada. O cliente OpenVPN está funcionando corretamente porque posso acessar hosts atrás de VPN diretamente da instância EC2. Pelo que pude observar, acho que o tráfego do docker nunca chega à instância EC2, mas não tenho 100% de certeza sobre isso.

Responder1

A rede VPC é uma rede definida por software – uma rede de camada 3 que emula Ethernet. Por padrão, a rede não permite que o tráfego passe de ou para uma instância EC2 que não tenha exatamente o endereço daquela instância como endereço de origem ou destino (dependendo da direção do tráfego)... então a verificação deve ser desabilitada para casos como este.

Alterando a verificação de origem ou destino

O atributo Verificação de origem/destino controla se a verificação de origem/destino está habilitada na instância. Desativar esse atributo permite que uma instância lide com o tráfego de rede que não é destinado especificamente à instância. Por exemplo, instâncias que executam serviços como tradução de endereços de rede, roteamento ou firewall devem definir esse valor como disabled. O valor padrão é enabled.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check

informação relacionada