
Saludos, quiero configurar un servidor VPN en una instancia EC2 para enrutar todo mi tráfico privado de Internet, pero no puedo hacerlo funcionar. Cualquier ayuda sería apreciada.
Tengo la siguiente configuración:
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
El enrutador tiene una conexión IPSec a una instancia Strongswan que se ejecuta en la instancia EC2. La interfaz de red de la instancia EC2 tiene la verificación de origen/destino deshabilitada. El grupo de seguridad permite todo el tráfico entrante con origen desde PublicLocalIP y desde la subred (también intenté "permitir todos los orígenes") y destino cualquiera.
Se puede establecer la conexión VPN y puedo hacer ping a 10.0.1.142 y 10.0.1.1 desde mi red privada. La propia instancia EC2 también puede hacer ping a IP públicas como 8.8.8.8. Pero no puedo hacer ping a 8.8.8.8 ni a ninguna otra IP pública desde mi red privada aunque puedo ver los paquetes yendo en una dirección en la instancia EC2 con tshark:
tshark -f "icmp"
10 7.320371756 10.0.0.11 → 8.8.8.8 ICMP 98 Solicitud de eco (ping) id=0x0034, seq=1/256, ttl=63 11 8.332639368 10.0.0.11 → 8.8.8.8 ICMP 98 Solicitud de eco (ping) id=0x0034, seq=2/512, ttl=63 12 9.356457465 10.0.0.11 → 8.8.8.8 ICMP 98 Solicitud de eco (ping) id=0x0034, seq=3/768, ttl=63 13 10.380464177 10.0.0.11 → 8.8.8.8 ICMP 98 Solicitud de eco (ping) id=0x0034, seq=4/1024, ttl=63 14 11.404715789 10.0.0.11 → 8.8.8.8 ICMP 98 Solicitud de eco (ping) id=0x0034, seq=5/1280, ttl=63 15 12.428989444 10.0.0.11 → 8.8.8.8 ICMP 98 Solicitud de eco (ping) id=0x0034, seq=6/1536, ttl=63
Este es el archivo ipsec.conf de EC2
configuración de configuración conexión %predeterminada tipo=túnel izquierda=%cualquiera leftid=EC2IPPública subred izquierda=0.0.0.0/0 auto=añadir fragmentación=si tapas forzadas = no moto=si autenticación izquierda=psk derechaauth=psk conectar fb ike=aes256-sha-modp1024 esp=aes256-sha1-modp1024 derecha=MiPublicLocalFQ.net [correo electrónico protegido] subred derecha=10.0.0.0/24 DNS derecho = 8.8.8.8,8.8.4.4 ikelifetime=3600s vida clave=3600s
Esta es la configuración IPSec del router Fritzbox
vpncfg { conexiones { habilitado = no; editable = sí; conn_type = conntype_lan; nombre = "EC2VPN"; boxuser_id = 0; siempre_renovar = si; rechazar_not_encrypted = no; dont_filter_netbios = sí; localización = 0.0.0.0; local_virtualip = 0.0.0.0; IP remota = 0.0.0.0; remoto_virtualip = 0.0.0.0; keepalive_ip = 0.0.0.0; ID local { fqdn = "MiPublicLocalFQ.net"; } ID remoto { fqdn = "EC2PublicIP"; } modo = fase1_modo_idp; fase1ss = "todos/todos/todos"; tipo de clave = connkeytype_pre_shared; clave = "THE_PSK_KEY"; cert_do_server_auth = no; use_nat_t = sí; use_xauth = no; use_cfgmode = no; fase2localid { ipnet { direcciónip = 10.0.0.0; máscara = 255.255.255.0; } } fase2remotoid { ipnet { direcciónip = 10.0.1.0; máscara = 255.255.255.0; } } fase2ss = "esp-todo-todo/ah-ninguno/comp-todo/pfs"; lista de acceso = "permitir ip cualquiera"; } ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500", "udp 0.0.0.0:4500 0.0.0.0:4500"; }
estado ipsec
Estado del demonio IKE charon (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64): tiempo de actividad: 91 segundos, desde el 13 de diciembre 01:57:01 2020 malloc: sbrk 1622016, mmap 0, usado 648096, gratis 973920 Subprocesos de trabajo: 11 de 16 inactivos, 5/0/0/0 en funcionamiento, cola de trabajos: 0/0/0/0, programado: 3 complementos cargados: charon aesni aes rc2 sha2 sha1 md5 mgf1 nonce aleatorio x509 restricciones de revocación pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agente xcbc hmac gcm drbg attr kernel-netlink resolve socket-default connmark Stroke updown eap-mschapv2 autenticación -contadores genéricos Direcciones IP de escucha: 10.0.1.193 Conexiones: fb: %cualquiera...MyPublicLocalFQ IKEv1/2 fb: local: [EC2PublicIP] utiliza autenticación de clave previamente compartida fb: remoto: [MyPublicLocalFQ] utiliza autenticación de clave previamente compartida fb: niño: 0.0.0.0/0 === 10.0.0.0/24 TÚNEL Asociaciones de seguridad (1 arriba, 0 conectando): fb[2]: ESTABLECIDO hace 90 segundos, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ] fb[2]: SPI de IKEv1: c1c1ef074becc316_i 3e3007efcc116605_r*, reautenticación de clave previamente compartida en 43 minutos fb[2]: Propuesta IKE: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 fb{1}: INSTALADO, TÚNEL, reqid 1, ESP en UDP SPI: cba035a9_i 4fbe83d8_o fb{1}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 5610 bytes_i (83 paquetes, hace 74 segundos), 840 bytes_o (10 paquetes, hace 74 segundos), reintroducción en 43 minutos Facebook{1}: 10.0.1.0/24 === 10.0.0.0/24
iptables-guardar
# Generado por iptables-save v1.8.4 el domingo 13 de diciembre a las 02:30:39 2020 *mutilar :PRERUTAMIENTO ACEPTAR [214:19671] :ENTRADA ACEPTAR [163:15822] :ADELANTE ACEPTAR [0:0] :SALIDA ACEPTAR [82:7863] :POSTOUTING ACEPTAR [82:7863] -A ADELANTE -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 COMPROMETERSE # Completado el domingo 13 de diciembre 02:30:39 2020 # Generado por iptables-save v1.8.4 el domingo 13 de diciembre a las 02:30:39 2020 *nat :PRERUTAMIENTO ACEPTAR [51:3849] :ENTRADA ACEPTAR [0:0] :SALIDA ACEPTAR [4:361] :POSTRUTAR ACEPTAR [4:361] -A POSTROUTING -s 10.0.0.0/24 -o eth0 -m política --dir out --pol ipsec -j ACEPTAR -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASCARADA COMPROMETERSE # Completado el domingo 13 de diciembre 02:30:39 2020 # Generado por iptables-save v1.8.4 el domingo 13 de diciembre a las 02:30:39 2020 *filtrar :CAÍDA DE ENTRADA [0:0] :CAÍDA HACIA ADELANTE [0:0] :SALIDA ACEPTAR [0:0] :ufw-después-adelante - [0:0] :ufw-después-de-entrada - [0:0] :ufw-después-de-registro-adelante - [0:0] :ufw-después-de-registro-entrada - [0:0] :ufw-después-de-registro-salida - [0:0] :ufw-después-de-salida - [0:0] :ufw-antes-adelante - [0:0] :ufw-antes-de-entrada - [0:0] :ufw-antes-de-registro-adelante - [0:0] :ufw-antes-de-registro-de-entrada - [0:0] :ufw-antes-de-registro-salida - [0:0] :ufw-antes-de-salida - [0:0] :ufw-logging-permitir - [0:0] :ufw-registro-denegar - [0:0] :ufw-no-local - [0:0] :ufw-rechazar-adelante - [0:0] :ufw-rechazar-entrada - [0:0] :salida-rechazo-ufw - [0:0] :ufw-saltar-a-directiva-adelante - [0:0] :ufw-saltar-a-entrada-de-política - [0:0] :ufw-saltar-a-salida-de-política - [0:0] :ufw-pista-adelante - [0:0] :ufw-pista-entrada - [0:0] :salida-pista-ufw - [0:0] :ufw-usuario-adelante - [0:0] :entrada-de-usuario-ufw - [0:0] :ufw-límite-de-usuario - [0:0] :ufw-usuario-límite-aceptar - [0:0] :ufw-usuario-registro-adelante - [0:0] :entrada-de-registro-de-usuario-ufw - [0:0] :salida-de-registro-de-usuario-ufw - [0:0] :salida-de-usuario-ufw - [0:0] -A ENTRADA -j ufw-antes-de-registro-entrada -A ENTRADA -j ufw-antes-de-la-entrada -A ENTRADA -j ufw-después-de-entrada -A ENTRADA -j ufw-después-de-registro-entrada -A ENTRADA -j ufw-rechazar-entrada -A ENTRADA -j ufw-pista-entrada -A ADELANTE -j ufw-antes-de-sesionar-adelante -A ADELANTE -j ufw-antes-adelante -A ADELANTE -j ufw-después-adelante -A ADELANTE -j ufw-después-de-sesionar-adelante -A ADELANTE -j ufw-rechazar-adelante -A ADELANTE -j ufw-pista-adelante -A SALIDA -j ufw-antes-de-registro-salida -A SALIDA -j ufw-antes-de-la-salida -A SALIDA -j ufw-después-de-salida -A SALIDA -j ufw-después-de-registro-salida -A SALIDA -j ufw-rechazo-salida -A SALIDA -j ufw-pista-salida -A ufw-después-de-entrada -p udp -m udp --dport 137 -j ufw-saltar-a-entrada-de-política -A ufw-después-de-entrada -p udp -m udp --dport 138 -j ufw-saltar-a-entrada-de-política -A ufw-después-de-entrada -p tcp -m tcp --dport 139 -j ufw-saltar-a-entrada-de-política -A ufw-después-de-entrada -p tcp -m tcp --dport 445 -j ufw-saltar-a-entrada-de-política -A ufw-después-de-entrada -p udp -m udp --dport 67 -j ufw-saltar-a-entrada-de-política -A ufw-después-de-entrada -p udp -m udp --dport 68 -j ufw-saltar-a-entrada-de-política -A ufw-después-de-entrada -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input -A ufw-después-de-registro-adelante -m límite --límite 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 ACEPTAR -A ufw-before-forward -d 10.0.0.0/24 -m política --dir out --pol ipsec --proto esp -j ACEPTAR -A ufw-antes-adelante -m conntrack --ctstate RELACIONADO,ESTABLECIDO -j ACEPTAR -A ufw-antes-de-reenviar -p icmp -m icmp --icmp-tipo 3 -j ACEPTAR -A ufw-antes-de-reenviar -p icmp -m icmp --icmp-tipo 11 -j ACEPTAR -A ufw-antes-de-reenviar -p icmp -m icmp --icmp-tipo 12 -j ACEPTAR -A ufw-antes-de-reenviar -p icmp -m icmp --icmp-tipo 8 -j ACEPTAR -A ufw-antes-reenviar -j ufw-usuario-reenviar -A ufw-antes-de-entrada -i lo -j ACEPTAR -A ufw-antes-de-entrada -m conntrack --ctstate RELACIONADO,ESTABLECIDO -j ACEPTAR -A ufw-antes-de-entrada -m conntrack --ctstate INVALID -j ufw-logging-deny -A ufw-antes-de-entrada -m conntrack --ctstate INVALID -j DROP -A ufw-antes-de-entrada -p icmp -m icmp --icmp-tipo 3 -j ACEPTAR -A ufw-antes-de-entrada -p icmp -m icmp --icmp-tipo 11 -j ACEPTAR -A ufw-antes-de-entrada -p icmp -m icmp --icmp-tipo 12 -j ACEPTAR -A ufw-antes-de-entrada -p icmp -m icmp --icmp-tipo 8 -j ACEPTAR -A ufw-antes-de-entrada -p udp -m udp --sport 67 --dport 68 -j ACEPTAR -A ufw-antes-de-entrada -j ufw-no-local -A ufw-antes-de-entrada -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACEPTAR -A ufw-antes-de-entrada -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACEPTAR -A ufw-antes-de-entrada -j ufw-entrada-de-usuario -A ufw-antes-de-salida -o lo -j ACEPTAR -A ufw-antes-de-salida -m conntrack --ctstate RELACIONADO,ESTABLECIDO -j ACEPTAR -A ufw-antes-de-salida -j ufw-salida-de-usuario -A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] " -A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --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 limit --limit 3/min --limit-burst 10 -j ufw-logging-deny -A ufw-no-local -j DROP -A ufw-saltar-a-la-política-adelante -j DROP -A ufw-saltar-a-entrada-de-política -j DROP -A ufw-saltar-a-la-salida-de-política -j ACEPTAR -A salida-pista-ufw -p tcp -m conntrack --ctstate NUEVO -j ACEPTAR -A salida-pista-ufw -p udp -m conntrack --ctstate NUEVO -j ACEPTAR -A entrada de usuario ufw -p tcp -m tcp --dport 22 -m comentario --comentario "\'dapp_OpenSSH\'" -j ACEPTAR -A entrada-de-usuario-ufw -p udp -m multipuerto --dports 500,4500 -j ACEPTAR -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-inalcanzable -A ufw-límite-de-usuario-aceptar -j ACEPTAR COMPROMETERSE # Completado el domingo 13 de diciembre 02:30:39 2020
ruta IP
predeterminado a través de 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 alcance enlace src 10.0.1.193 10.0.1.1 dev eth0 proto dhcp alcance enlace src 10.0.1.193 métrica 100
El EC2 utiliza una imagen Ubuntu 20.04.1 LTS.
También intenté agregar rightsourceip=10.10.10.0/24
a ipsec, reemplazando pahse2remoteid.ipnet.ipaddr ipaddr = 10.10.10.0
reemplazando todo 10.0.0.0/24
en la salida de tablas-guardar 10.10.10.0/24
y usando tablas-restaurar, pero todavía no funcionó. Al Cliente no se le asigna ninguna IP virtual, incluso aunque se asigne el grupo:
Estado del demonio IKE charon (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64): tiempo de actividad: 32 minutos, desde el 13 de diciembre 01:09:10 2020 malloc: sbrk 1622016, mmap 0, usado 728048, gratis 893968 Subprocesos de trabajo: 11 de 16 inactivos, 5/0/0/0 en funcionamiento, cola de trabajos: 0/0/0/0, programado: 3 complementos cargados: charon aesni aes rc2 sha2 sha1 md5 mgf1 nonce aleatorio x509 restricciones de revocación pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agente xcbc hmac gcm drbg attr kernel-netlink resolve socket-default connmark Stroke updown eap-mschapv2 autenticación -contadores genéricos Grupos de IP virtuales (tamaño/en línea/fuera de línea): 10.10.10.0/24: 254/0/0 Direcciones IP de escucha: 10.0.1.193 Conexiones: fb: %cualquiera...MyPublicLocalFQ.net IKEv1/2 fb: local: [EC2PublicIP] utiliza autenticación de clave previamente compartida fb: remoto: [MyPublicLocalFQ.net] utiliza autenticación de clave previamente compartida fb: niño: 0.0.0.0/0 === 10.0.0.0/24 TÚNEL Conexiones enrutadas: fb{1}: ENRUTADO, TÚNEL, reqid 1 fb{1}: 0.0.0.0/0 === 10.0.0.0/24 Asociaciones de seguridad (1 arriba, 0 conectando): fb[2]: ESTABLECIDO hace 32 minutos, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ.net] fb[2]: SPI de IKEv1: 0da6b7368f560272_i 166b8161eae230c8_r*, reautenticación de clave previamente compartida en 12 minutos fb[2]: Propuesta IKE: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 fb{2}: INSTALADO, TÚNEL, reqid 2, ESP en UDP SPI: cda4bbc0_i 1ea590b2_o fb{2}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 170072 bytes_i (2601 paquetes, hace 26 segundos), 1344 bytes_o (16 paquetes, hace 26 segundos), recodificación en 12 minutos Facebook{2}: 10.0.1.0/24 === 10.0.0.0/24
Cualquier idea es bienvenida.