
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/24
ao ipsec, substituindo o pahse2remoteid.ipnet.ipaddr por ipaddr = 10.10.10.0
substituir tudo 10.0.0.0/24
na saída de salvamento de tabelas por 10.10.10.0/24
e 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.