
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.0
von all 10.0.0.0/24
in der Ausgabe von tables-save durch ersetzt 10.10.10.0/24
und 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.