Strongswan VPN-Verkehr kann nicht über AWS Internet Gateway geleitet werden

Strongswan VPN-Verkehr kann nicht über AWS Internet Gateway geleitet werden

Prost, ich möchte einen VPN-Server auf einer EC2-Instanz einrichten, um meinen gesamten privaten Internetverkehr umzuleiten, aber ich bekomme es nicht zum Laufen. Ich wäre für jede Hilfe dankbar.

Ich habe folgendes Setup:

    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

Der Router verfügt über eine IPSec-Verbindung zu einer Strongswan-Instanz, die auf der EC2-Instanz läuft. Die Netzwerkschnittstelle der EC2-Instanz hat die Quell-/Zielprüfung deaktiviert. Die Sicherheitsgruppe lässt eingehenden Datenverkehr mit Quelle von PublicLocalIP und aus dem Subnetz zu (auch „alle Quellen zulassen“ ausprobiert) und beliebigem Ziel.

Die VPN-Verbindung kann hergestellt werden und ich kann 10.0.1.142 und 10.0.1.1 von meinem privaten Netzwerk aus anpingen. Die EC2-Instanz selbst kann auch öffentliche IPs wie 8.8.8.8 anpingen. Aber ich kann 8.8.8.8 oder eine andere öffentliche IP von meinem privaten Netzwerk aus nicht anpingen, obwohl ich mit tshark sehen kann, dass die Pakete auf der EC2-Instanz in eine Richtung gehen:

tshark -f "icmp"

   10 7.320371756 10.0.0.11 → 8.8.8.8 ICMP 98 Echo (Ping) Anforderungs-ID=0x0034, Sequenz=1/256, Ttl=63
   11 8.332639368 10.0.0.11 → 8.8.8.8 ICMP 98 Echo (Ping) Anforderungs-ID=0x0034, Sequenz=2/512, Ttl=63
   12 9.356457465 10.0.0.11 → 8.8.8.8 ICMP 98 Echo (Ping) Anforderungs-ID=0x0034, Sequenz=3/768, Ttl=63
   13 10.380464177 10.0.0.11 → 8.8.8.8 ICMP 98 Echo (Ping) Anforderungs-ID=0x0034, Sequenz=4/1024, Ttl=63
   14 11.404715789 10.0.0.11 → 8.8.8.8 ICMP 98 Echo (Ping) Anforderungs-ID=0x0034, Sequenz=5/1280, Ttl=63
   15 12.428989444 10.0.0.11 → 8.8.8.8 ICMP 98 Echo (Ping) Anforderungs-ID=0x0034, Sequenz=6/1536, Ttl=63

Dies ist die EC2 ipsec.conf

Konfigurations-Setup
Verbindung %Standard
 Typ=Tunnel
 links=%beliebig
 linkeID=EC2PublicIP
 linkes Subnetz = 0.0.0.0/0
 auto=hinzufügen
 Fragmentierung=ja
 forceencaps=nein
 mobike=ja
 leftauth=psk
 rightauth=psk

Verbindung fb
 ike=aes256-sha-modp1024
 esp=aes256-sha1-modp1024
 rechts=MyPublicLocalFQ.net
 [email geschützt]
 richtiges Subnetz = 10.0.0.0/24
 rightdns=8.8.8.8,8.8.4.4
 ikelebensdauer=3600s
 Schlüssellebensdauer = 3600 s

Dies ist die IPSec-Konfiguration des Fritzbox-Routers

vpncfg {
  Verbindungen {
    aktiviert = nein;
    editierbar = ja;
    Verbindungstyp = Verbindungstyp_lan;
    Name = "EC2VPN";
    Boxbenutzer-ID = 0;
    immer_erneuern = ja;
    reject_not_encrypted = nein;
    dont_filter_netbios = ja;
    lokale IP = 0.0.0.0;
    lokale_virtualip = 0.0.0.0;
    Remote-IP = 0.0.0.0;
    remote_virtualip = 0.0.0.0;
    keepalive_ip = 0.0.0.0;
    Local ID {
      fqdn = "MeinPublicLocalFQ.net";
    }
    Remote-ID {
      fqdn = "EC2PublicIP";
    }
    Modus = Phase1_Modus_IDP;
    phase1ss = "alle/alle/alle";
    Schlüsseltyp = connkeytype_pre_shared;
    Schlüssel = "DER_PSK_SCHLÜSSEL";
    cert_do_server_auth = nein;
    use_nat_t = ja;
    use_xauth = nein;
    use_cfgmode = nein;
    phase2localid {
      ipnet {
        ipaddr = 10.0.0.0;
        Maske = 255.255.255.0;
      }
    }
    phase2remoteid {
      ipnet {
        ipaddr = 10.0.1.0;
        Maske = 255.255.255.0;
      }
    }
    phase2ss = "esp-alle-alle/ah-keine/comp-alle/pfs";
    Zugriffsliste = "IP beliebig beliebig erlauben";
  }
  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“;
}

IPSec-Statusalle

Status des IKE Charon-Daemons (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64):
  Betriebszeit: 91 Sekunden, seit 13. Dezember 01:57:01 2020
  malloc: sbrk 1622016, mmap 0, verwendet 648096, frei 973920
  Arbeitsthreads: 11 von 16 im Leerlauf, 5/0/0/0 arbeiten, Jobwarteschlange: 0/0/0/0, geplant: 3
  geladene Plugins: Charon, AESNI, AES, RC2, SHA2, SHA1, MD5, MGF1, zufälliger Nonce, X509, Widerrufsbeschränkungen, Pubkey, PKCS1, PKCS7, PKCS8, PKCS12, PGP, DNS-Schlüssel, SSH-Schlüssel, PEM, OpenSSL, FIPS-PRF, GMP-Agent, XCBC, HMAC, GCM, DRBG, Attr, Kernel-Netlink, Socket-Standard auflösen, Connmark, Stroke, Updown, EAP-MSCHAPv2, XAUTH-Generic, Zähler
Abhörende IP-Adressen:
  10.0.1.193
Verbindungen:
          fb: %any...MyPublicLocalFQ IKEv1/2
          fb: local: [EC2PublicIP] verwendet Pre-Shared-Key-Authentifizierung
          fb: remote: [MyPublicLocalFQ] verwendet eine vorab freigegebene Schlüsselauthentifizierung
          fb: Kind: 0.0.0.0/0 === 10.0.0.0/24 TUNNEL
Sicherheitszuordnungen (1 aktiv, 0 verbunden):
          fb[2]: HERGESTELLT vor 90 Sekunden, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ]
          fb[2]: IKEv1 SPIs: c1c1ef074becc316_i 3e3007efcc116605_r*, erneute Authentifizierung per Pre-Shared Key in 43 Minuten
          fb[2]: IKE-Vorschlag: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{1}: INSTALLIERT, TUNNEL, erforderlich 1, ESP in UDP SPIs: cba035a9_i 4fbe83d8_o
          fb{1}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 5610 bytes_i (83 Pakete, vor 74 Sek.), 840 bytes_o (10 Pakete, vor 74 Sek.), Neuverschlüsselung in 43 Minuten
          fb{1}: 10.0.1.0/24 === 10.0.0.0/24

iptables-speichern

# Generiert von iptables-save v1.8.4 am Sonntag, 13. Dezember 2020, 02:30:39 Uhr
*Mangel
:PREROUTING AKZEPTIEREN [214:19671]
:EINGABE AKZEPTIEREN [163:15822]
:Weiterleiten Annehmen [0:0]
:AUSGABE AKZEPTIEREN [82:7863]
:POSTROUTING AKZEPTIEREN [82:7863]
-A VORWÄRTS -s 10.0.0.0/24 -o eth0 -p tcp -m Richtlinie --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
BEGEHEN
# Abgeschlossen am So Dez 13 02:30:39 2020
# Generiert von iptables-save v1.8.4 am Sonntag, 13. Dezember 2020, 02:30:39 Uhr
*nat
:PRE-ROUTING AKZEPTIEREN [51:3849]
:EINGABE AKZEPTIEREN [0:0]
:AUSGABE AKZEPTIEREN [4:361]
:POSTROUTING AKZEPTIEREN [4:361]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -m Richtlinie --dir out --pol ipsec -j AKZEPTIEREN
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
BEGEHEN
# Abgeschlossen am So Dez 13 02:30:39 2020
# Generiert von iptables-save v1.8.4 am Sonntag, 13. Dezember 2020, 02:30:39 Uhr
*Filter
:EINGABEABFALL [0:0]
:VORWÄRTSABFALL [0:0]
:AUSGABE AKZEPTIEREN [0:0]
:ufw-nach-vorwärts - [0:0]
:ufw-nach-Eingabe - [0:0]
:ufw-nach-der-Protokollierung-weiter - [0:0]
:ufw-nach-Protokollierung-Eingabe - [0:0]
:ufw-nach-Protokollierungsausgabe - [0:0]
:ufw-nach-Ausgabe - [0:0]
:ufw-vorwärts - [0:0]
:ufw-vor-Eingabe - [0:0]
:ufw-vor-Logging-Forward - [0:0]
:ufw-vor-Logging-Eingabe - [0:0]
:ufw-vor-Protokollierungsausgabe - [0:0]
:ufw-vor-Ausgabe - [0:0]
:ufw-logging-allow - [0:0]
:ufw-logging-deny - [0:0]
:ufw-nicht-lokal - [0:0]
:ufw-reject-forward - [0:0]
:ufw-Ablehnungseingabe - [0:0]
:ufw-Ablehnungsausgabe - [0:0]
:ufw-zur-Richtlinie-überspringen-weiter - [0:0]
:ufw-zur-Richtlinieneingabe-überspringen - [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-Benutzereingabe - [0:0]
:ufw-Benutzerlimit - [0:0]
:ufw-Benutzerlimit-akzeptieren - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-Benutzerprotokollierungseingabe - [0:0]
:ufw-Benutzerprotokollierungsausgabe - [0:0]
:ufw-Benutzerausgabe - [0:0]
-A INPUT -j ufw-vor-Protokollierung-Eingabe
-A EINGABE -j ufw-vor-Eingabe
-A EINGABE -j ufw-nach-Eingabe
-A INPUT -j ufw-nach-Protokollierungseingabe
-A EINGABE -j ufw-reject-input
-A EINGABE -j ufw-track-input
-A VORWÄRTS -j ufw-vor-Logging-Vorwärts
-A VORWÄRTS
-A VORWÄRTS
-A VORWÄRTS -j ufw-nach-dem-Loggen-vorwärts
-A WEITERLEITEN -j ufw-reject-forward
-A VORWÄRTS -j ufw-track-vorwärts
-A AUSGABE -j ufw-vor-Protokollierungsausgabe
-A AUSGABE -j ufw-vor-Ausgabe
-A AUSGABE -j ufw-nach-Ausgabe
-A AUSGABE -j ufw-nach-Protokollierungsausgabe
-A AUSGABE -j ufw-reject-output
-A AUSGABE -j ufw-track-ausgabe
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m Adresstyp --dst-Typ 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 Richtlinie --dir in --pol ipsec --proto esp -j AKZEPTIEREN
-A ufw-before-forward -d 10.0.0.0/24 -m Richtlinie --dir out --pol ipsec --proto esp -j AKZEPTIEREN
-A ufw-before-forward -m conntrack --ctstate VERWANDTE, ETABLIERTE -j AKZEPTIEREN
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j AKZEPTIEREN
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j AKZEPTIEREN
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j AKZEPTIEREN
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j AKZEPTIEREN
-A ufw-vor-Weiterleitung -j ufw-Benutzer-Weiterleitung
-A ufw-vor-Eingabe -i lo -j AKZEPTIEREN
-A ufw-before-input -m conntrack --ctstate VERWANDTE, ETABLIERTE -j AKZEPTIEREN
-A ufw-before-input -m conntrack --ctstate UNZULÄSSIG -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate UNZULÄSSIG -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j AKZEPTIEREN
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j AKZEPTIEREN
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j AKZEPTIEREN
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j AKZEPTIEREN
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j AKZEPTIEREN
-A ufw-vor-Eingabe -j ufw-nicht-lokal
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j AKZEPTIEREN
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j AKZEPTIEREN
-A ufw-vor-Eingabe -j ufw-Benutzereingabe
-A ufw-before-output -o lo -j AKZEPTIEREN
-A ufw-before-output -m conntrack --ctstate VERWANDTE, ETABLIERTE -j AKZEPTIEREN
-A ufw-vor-Ausgabe -j ufw-Benutzerausgabe
-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 UNZULÄSSIG -m limit --limit 3/min --limit-burst 10 -j ZURÜCK
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW-BLOCK] "
-A ufw-nicht-lokal -m Adresstyp --Zieltyp LOKAL -j RÜCKGABE
-A ufw-nicht-lokal -m Adresstyp --Zieltyp MULTICAST -j RETURN
-A ufw-nicht-lokal -m Adresstyp --Zieltyp BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-nicht-lokal -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 AKZEPTIEREN
-A ufw-track-output -p tcp -m conntrack --ctstate NEU -j AKZEPTIEREN
-A ufw-track-output -p udp -m conntrack --ctstate NEU -j AKZEPTIEREN
-A ufw-user-input -p tcp -m tcp --dport 22 -m Kommentar --comment "\'dapp_OpenSSH\'" -j AKZEPTIEREN
-A ufw-user-input -p udp -m multiport --dports 500,4500 -j AKZEPTIEREN
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-Benutzerlimit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j AKZEPTIEREN
BEGEHEN
# Abgeschlossen am So Dez 13 02:30:39 2020

IP-Route

Standard über 10.0.1.1 dev eth0 proto dhcp src 10.0.1.193 Metrik 100
10.0.1.0/24 dev eth0 proto Kernel Umfang Link src 10.0.1.193
10.0.1.1 dev eth0 proto dhcp Bereich Link src 10.0.1.193 Metrik 100

EC2 verwendet ein Ubuntu 20.04.1 LTS-Image.

Ich habe auch versucht rightsourceip=10.10.10.0/24, IPSec zu ergänzen, indem ich pahse2remoteid.ipnet.ipaddr durch Ersetzen ipaddr = 10.10.10.0von all 10.0.0.0/24in der Ausgabe von tables-save durch ersetzt 10.10.10.0/24und tables-restore verwendet habe, aber es hat trotzdem nicht funktioniert. Dem Client werden keine virtuellen IPs zugewiesen, obwohl der Pool zugewiesen wird:

Status des IKE Charon-Daemons (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64):
  Betriebszeit: 32 Minuten, seit 13. Dezember 01:09:10 2020
  malloc: sbrk 1622016, mmap 0, verwendet 728048, frei 893968
  Arbeitsthreads: 11 von 16 im Leerlauf, 5/0/0/0 arbeiten, Jobwarteschlange: 0/0/0/0, geplant: 3
  geladene Plugins: Charon, AESNI, AES, RC2, SHA2, SHA1, MD5, MGF1, zufälliger Nonce, X509, Widerrufsbeschränkungen, Pubkey, PKCS1, PKCS7, PKCS8, PKCS12, PGP, DNS-Schlüssel, SSH-Schlüssel, PEM, OpenSSL, FIPS-PRF, GMP-Agent, XCBC, HMAC, GCM, DRBG, Attr, Kernel-Netlink, Socket-Standard auflösen, Connmark, Stroke, Updown, EAP-MSCHAPv2, XAUTH-Generic, Zähler
Virtuelle IP-Pools (Größe/online/offline):
  10.10.10.0/24: 254/0/0
Abhörende IP-Adressen:
  10.0.1.193
Verbindungen:
          fb: %any...MyPublicLocalFQ.net IKEv1/2
          fb: local: [EC2PublicIP] verwendet Pre-Shared-Key-Authentifizierung
          fb: remote: [MyPublicLocalFQ.net] verwendet eine vorab freigegebene Schlüsselauthentifizierung
          fb: Kind: 0.0.0.0/0 === 10.0.0.0/24 TUNNEL
Geroutete Verbindungen:
          fb{1}: ROUTED, TUNNEL, erforderlich 1
          fb{1}: 0.0.0.0/0 === 10.0.0.0/24
Sicherheitszuordnungen (1 aktiv, 0 verbunden):
          fb[2]: HERGESTELLT vor 32 Minuten, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ.net]
          fb[2]: IKEv1 SPIs: 0da6b7368f560272_i 166b8161eae230c8_r*, erneute Authentifizierung per Pre-Shared Key in 12 Minuten
          fb[2]: IKE-Vorschlag: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{2}: INSTALLIERT, TUNNEL, erforderlich 2, ESP in UDP SPIs: cda4bbc0_i 1ea590b2_o
          fb{2}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 170072 bytes_i (2601 Pakete, vor 26 Sek.), 1344 bytes_o (16 Pakete, vor 26 Sek.), Neuverschlüsselung in 12 Minuten
          fb{2}: 10.0.1.0/24 === 10.0.0.0/24

Alle Ideen sind willkommen.

verwandte Informationen