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