Não é possível rotear o tráfego VPN do Strongswan por meio do AWS Internet Gateway

Não é possível rotear o tráfego VPN do Strongswan por meio do AWS Internet Gateway

Saúde, quero configurar um servidor VPN em uma instância EC2 para rotear todo o meu tráfego privado de Internet, mas não consigo fazê-lo funcionar. Qualquer ajuda seria apreciada.

Eu tenho a seguinte configuração:

    Private Network  10.0.0.0/24    |               Internet              |  AWS VPC / Subnet 10.0.1.0/24
   PC                        Fritzbox Router                             IGW         EC2
 10.0.0.11   ----    10.0.0.1 ------| -- MyPublicLocalIP -- EC2PublicIP --| ------ 10.0.1.193

O roteador possui uma conexão IPSec com uma instância Strongswan em execução na instância EC2. A interface de rede da instância EC2 tem a verificação de origem/destino desabilitada. O Grupo de Segurança permite a entrada de todo o tráfego com origem do PublicLocalIP e da sub-rede (também tentei "permitir todas as fontes") e destino qualquer.

A conexão VPN pode ser estabelecida e posso executar ping em 10.0.1.142 e 10.0.1.1 na minha rede privada. A própria instância EC2 também pode executar ping em IPs públicos como 8.8.8.8. Mas não consigo executar ping em 8.8.8.8 ou qualquer outro IP público da minha rede privada, embora possa ver os pacotes indo em uma direção na instância EC2 com tshark:

tshark -f "icmp"

   10 7.320371756 10.0.0.11 → 8.8.8.8 ICMP 98 Eco (ping) solicitação id = 0x0034, seq = 1/256, ttl = 63
   11 8.332639368 10.0.0.11 → 8.8.8.8 ICMP 98 Eco (ping) solicitação id = 0x0034, seq = 2/512, ttl = 63
   12 9.356457465 10.0.0.11 → 8.8.8.8 ICMP 98 Eco (ping) solicitação id = 0x0034, seq = 3/768, ttl = 63
   13 10.380464177 10.0.0.11 → 8.8.8.8 ICMP 98 Eco (ping) solicitação id = 0x0034, seq = 4/1024, ttl = 63
   14 11.404715789 10.0.0.11 → 8.8.8.8 ICMP 98 Eco (ping) solicitação id = 0x0034, seq = 5/1280, ttl = 63
   15 12.428989444 10.0.0.11 → 8.8.8.8 ICMP 98 Eco (ping) solicitação id = 0x0034, seq = 6/1536, ttl = 63

Este é o IPsec.conf do EC2

configuração configuração
conexão% padrão
 tipo=túnel
 esquerda=%qualquer
 leftid=EC2PublicIP
 sub-rede esquerda = 0.0.0.0/0
 automático=adicionar
 fragmentação = sim
 forcecaps = não
 mobike = sim
 leftauth = psk
 rightauth = psk

conexão fb
 ike=aes256-sha-modp1024
 esp=aes256-sha1-modp1024
 direita=MyPublicLocalFQ.net
 [e-mail protegido]
 sub-rede direita=10.0.0.0/24
 rightdns=8.8.8.8,8.8.4.4
 ikevida=3600s
 vida-chave=3600s

Esta é a configuração IPSec do roteador Fritzbox

vpncfg{
  conexões {
    habilitado = não;
    editável = sim;
    conn_type = conntype_lan;
    nome = "EC2VPN";
    boxuser_id = 0;
    sempre_renovar = sim;
    rejeitar_not_encrypted = não;
    não_filter_netbios = sim;
    localip = 0.0.0.0;
    local_virtualip=0.0.0.0;
    ip remoto = 0.0.0.0;
    remote_virtualip = 0.0.0.0;
    keepalive_ip=0.0.0.0;
    localidade {
      fqdn = "MyPublicLocalFQ.net";
    }
    ID remoto {
      fqdn = "EC2PublicIP";
    }
    modo = fase1_mode_idp;
    phase1ss = "todos/todos/todos";
    tipo-chave = connkeytype_pre_shared;
    chave = "THE_PSK_KEY";
    cert_do_server_auth = não;
    use_nat_t = sim;
    use_xauth = não;
    use_cfgmode = não;
    fase2localid {
      ipnet {
        ipaddr = 10.0.0.0;
        máscara = 255.255.255.0;
      }
    }
    fase2remoteid {
      ipnet {
        endereço IP = 10.0.1.0;
        máscara = 255.255.255.0;
      }
    }
    phase2ss = "esp-all-all/ah-none/comp-all/pfs";
    accesslist = "permitir ip qualquer qualquer";
  }
  ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
  "udp0.0.0.0:4500 0.0.0.0:4500";
}

status ipsec tudo

Status do daemon charon IKE (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64):
  tempo de atividade: 91 segundos, desde 13 de dezembro 01:57:01 2020
  malloc: sbrk 1622016, mmap 0, usado 648096, grátis 973920
  threads de trabalho: 11 de 16 inativos, 5/0/0/0 funcionando, fila de trabalhos: 0/0/0/0, agendados: 3
  plug-ins carregados: charon aesni aes rc2 sha2 sha1 md5 mgf1 aleatório nonce x509 restrições de revogação pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agente xcbc hmac gcm drbg attr kernel-netlink resolver soquete-default connmark acidente vascular cerebral updown eap-mschapv2 xauth - contadores genéricos
Ouvindo endereços IP:
  10.0.1.193
Conexões:
          fb:%qualquer...MyPublicLocalFQ IKEv1/2
          fb: local: [EC2PublicIP] usa autenticação de chave pré-compartilhada
          fb: remoto: [MyPublicLocalFQ] usa autenticação de chave pré-compartilhada
          fb: filho: 0.0.0.0/0 === 10.0.0.0/24 TÚNEL
Associações de segurança (1 em cima, 0 conectando):
          fb[2]: ESTABELECIDO há 90 segundos, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ]
          fb[2]: SPIs IKEv1: c1c1ef074becc316_i 3e3007efcc116605_r*, reautenticação de chave pré-compartilhada em 43 minutos
          fb[2]: Proposta IKE: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{1}: INSTALADO, TUNNEL, reqid 1, ESP em SPIs UDP: cba035a9_i 4fbe83d8_o
          fb{1}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 5610 bytes_i (83 pacotes, 74s atrás), 840 bytes_o (10 pacotes, 74s atrás), redigitando em 43 minutos
          fb{1}: 10.0.1.0/24 === 10.0.0.0/24

iptables-save

# Gerado por iptables-save v1.8.4 em domingo, 13 de dezembro, 02:30:39 de 2020
*mangle
:PRÉ-ROTE ACEITAR [214:19671]
:ENTRADA ACEITAR [163:15822]
:AVANÇAR ACEITAR [0:0]
:SAÍDA ACEITA [82:7863]
:POSTROUTING ACEITAR [82:7863]
-A FORWARD -s 10.0.0.0/24 -o eth0 -p tcp -m política --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMPROMETER-SE
# Concluído em domingo, 13 de dezembro 02:30:39 2020
# Gerado por iptables-save v1.8.4 em domingo, 13 de dezembro, 02:30:39 de 2020
*nat
:PRÉ-ROTE ACEITAR [51:3849]
:ENTRADA ACEITAR [0:0]
:SAÍDA ACEITA [4:361]
:POSTROUTING ACEITAR [4:361]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -m política --dir out --pol ipsec -j ACEITAR
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
COMPROMETER-SE
# Concluído em domingo, 13 de dezembro 02:30:39 2020
# Gerado por iptables-save v1.8.4 em domingo, 13 de dezembro, 02:30:39 de 2020
*filtro
:QUEDA DE ENTRADA [0:0]
:QUEDA PARA A FRENTE [0:0]
:SAÍDA ACEITA [0:0]
:ufw-depois-encaminhar - [0:0]
:ufw-após-entrada - [0:0]
:ufw-após-logging-forward - [0:0]
:ufw-após-entrada de registro - [0:0]
:ufw-após-saída de registro - [0:0]
:ufw-após-saída - [0:0]
:ufw-antes-de-avançar - [0:0]
:ufw-antes-da-entrada - [0:0]
:ufw-antes-de-logar-forward - [0:0]
:ufw-antes-de-logging-input - [0:0]
:ufw-antes-de-logging-output - [0:0]
:ufw-antes-da-saída - [0:0]
:ufw-logging-allow - [0:0]
:ufw-logging-deny - [0:0]
:ufw-não-local - [0:0]
:ufw-rejeitar-forward - [0:0]
:ufw-rejeitar-entrada - [0:0]
:ufw-rejeitar-saída - [0:0]
:ufw-skip-to-policy-forward - [0:0]
:ufw-skip-to-policy-input - [0:0]
:ufw-skip-to-policy-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-entrada do usuário - [0:0]
:ufw-limite do usuário - [0:0]
:ufw-user-limit-accept - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-saída do usuário - [0:0]
-A INPUT -j ufw-antes de registrar-entrada
-A INPUT -j ufw-antes da entrada
-A INPUT -j ufw-após-entrada
-A INPUT -j ufw-após-entrada de registro
-A INPUT -j ufw-rejeitar-entrada
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-antes-logar-forward
-A FORWARD -j ufw-antes-forward
-A FORWARD -j ufw-depois-forward
-A FORWARD -j ufw-após-logging-forward
-A FORWARD -j ufw-rejeitar-forward
-A FORWARD -j ufw-track-forward
-A SAÍDA -j ufw-antes-de-logging-output
-A SAÍDA -j ufw-antes da saída
-A OUTPUT -j ufw-após-saída
-A SAÍDA -j ufw-após-saída de registro
-A SAÍDA -j ufw-rejeitar-saída
-A SAÍDA -j ufw-track-output
-A ufw-após-entrada -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-após-entrada -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-após-entrada -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-após-entrada -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-após-entrada -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-após-entrada -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK]"
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK]"
-A ufw-before-forward -s 10.0.0.0/24 -m política --dir in --pol ipsec --proto esp -j ACEITAR
-A ufw-before-forward -d 10.0.0.0/24 -m política --dir out --pol ipsec --proto esp -j ACEITAR
-A ufw-before-forward -m conntrack --ctstate RELACIONADO, ESTABELECIDO -j ACEITAR
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACEITAR
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACEITAR
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACEITAR
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACEITAR
-A ufw-antes-encaminhar -j ufw-user-forward
-A ufw-antes-input -i lo -j ACEITAR
-A ufw-before-input -m conntrack --ctstate RELACIONADO, ESTABELECIDO -j ACEITAR
-A ufw-before-input -m conntrack --ctstate INVÁLIDO -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVÁLIDO -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACEITAR
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACEITAR
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACEITAR
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACEITAR
-A ufw-antes-input -p udp -m udp --sport 67 --dport 68 -j ACEITAR
-A ufw-antes-input -j ufw-não-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACEITAR
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACEITAR
-A ufw-antes-input -j ufw-user-input
-A ufw-antes-saída -o lo -j ACEITAR
-A ufw-before-output -m conntrack --ctstate RELACIONADO, ESTABELECIDO -j ACEITAR
-A ufw-antes-saída -j ufw-saída do usuário
-A ufw-logging-allow -m limite --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW]"
-A ufw-logging-deny -m conntrack --ctstate INVÁLIDO -m limite --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK]"
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limite --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-não-local -j DROP
-A ufw-skip-to-policy-forward -j DROP
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACEITAR
-A ufw-track-output -p tcp -m conntrack --ctstate NOVO -j ACEITAR
-A ufw-track-output -p udp -m conntrack --ctstate NOVO -j ACEITAR
-A ufw-user-input -p tcp -m tcp --dport 22 -m comment --comment "\'dapp_OpenSSH\'" -j ACEITAR
-A ufw-user-input -p udp -m multiport --dports 500,4500 -j ACEITAR
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK]"
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACEITAR
COMPROMETER-SE
# Concluído em domingo, 13 de dezembro 02:30:39 2020

rota ip

padrão via 10.0.1.1 dev eth0 proto dhcp src 10.0.1.193 métrica 100
10.0.1.0/24 dev eth0 proto kernel escopo link src 10.0.1.193
10.0.1.1 dev eth0 proto dhcp escopo link src 10.0.1.193 métrica 100

O EC2 usa uma imagem Ubuntu 20.04.1 LTS.

Também tentei adicionar rightsourceip=10.10.10.0/24ao ipsec, substituindo o pahse2remoteid.ipnet.ipaddr por ipaddr = 10.10.10.0substituir tudo 10.0.0.0/24na saída de salvamento de tabelas por 10.10.10.0/24e usando restauração de tabelas, mas ainda não funcionou. O cliente não recebe nenhum VirtualIP atribuído, mesmo que o pool seja alocado:

Status do daemon charon IKE (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64):
  tempo de atividade: 32 minutos, desde 13 de dezembro 01:09:10 2020
  malloc: sbrk 1622016, mmap 0, usado 728048, grátis 893968
  threads de trabalho: 11 de 16 inativos, 5/0/0/0 funcionando, fila de trabalhos: 0/0/0/0, agendados: 3
  plug-ins carregados: charon aesni aes rc2 sha2 sha1 md5 mgf1 aleatório nonce x509 restrições de revogação pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agente xcbc hmac gcm drbg attr kernel-netlink resolver soquete-default connmark acidente vascular cerebral updown eap-mschapv2 xauth - contadores genéricos
Pools de IP virtuais (tamanho/online/offline):
  10.10.10.0/24: 254/0/0
Ouvindo endereços IP:
  10.0.1.193
Conexões:
          fb:%qualquer...MyPublicLocalFQ.net IKEv1/2
          fb: local: [EC2PublicIP] usa autenticação de chave pré-compartilhada
          fb: remoto: [MyPublicLocalFQ.net] usa autenticação de chave pré-compartilhada
          fb: filho: 0.0.0.0/0 === 10.0.0.0/24 TÚNEL
Conexões roteadas:
          fb{1}: ROTEADO, TÚNEL, requerido 1
          fb{1}: 0.0.0.0/0 === 10.0.0.0/24
Associações de segurança (1 em cima, 0 conectando):
          fb[2]: ESTABELECIDO há 32 minutos, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ.net]
          fb[2]: SPIs IKEv1: 0da6b7368f560272_i 166b8161eae230c8_r*, reautenticação de chave pré-compartilhada em 12 minutos
          fb[2]: Proposta IKE: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{2}: INSTALADO, TUNNEL, reqid 2, ESP em SPIs UDP: cda4bbc0_i 1ea590b2_o
          fb{2}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 170072 bytes_i (2601 pacotes, 26s atrás), 1344 bytes_o (16 pacotes, 26s atrás), redigitando em 12 minutos
          fb{2}: 10.0.1.0/24 === 10.0.0.0/24

Qualquer ideia é bem-vinda.

informação relacionada