Proč GRE a ESP neprochází přes AWS NAT gateway
Spravovaná NAT gateway přeposílá pouze TCP, UDP a ICMP. Zjistěte, proč pravidlo povolení nemůže přenést GRE ani nativní ESP, a co místo toho změnit.
Tunel nefunguje, bezpečnostní skupina už povoluje veškerý provoz a závěr je, že AWS blokuje VPN. Neblokuje nic. Spravovaná NAT gateway přeposílá dokumentovanou sadu vnějších protokolů a nativní GRE ani nativní ESP v ní nejsou, takže žádné přidané pravidlo nepřiměje gateway je přenášet. Pravidlo povolení a schopnost transportu jsou dvě různé věci a jen jednu z nich můžete změnit.
Sada pravidel není sada protokolů
Bezpečnostní skupina rozhoduje, jaký provoz smí opustit instanci. NAT gateway rozhoduje, co dokáže přeložit a přeposlat. Když platí druhý limit, permisivní pravidlo vytváří přesně ten příznak, který si lidé chybně vykládají jako problém firewallu: pakety opouštějí instanci, řídicí výměna se může i dokončit a k protějšku nedorazí nic.
Specifikace protokolů NAT gateway od AWS uvádí TCP, UDP a ICMP pro spravovanou službu. To je celá podporovaná sada. Pravidlo povolení pro jiný IP protokol ji nemůže rozšířit, protože pravidlo se vyhodnocuje dlouho předtím, než se dosáhne cesty přeposílání gatewaye.
Rozdíl je důležitý, protože obě selhání vypadají z pohledu klienta stejně a mají zcela odlišné opravy.
PPTP ukazuje, proč test portu lže
PPTP je nejjasnější starý příklad kontroly portu, která nic nedokazuje. Otevírá řídicí spojení TCP na portu 1723 a poté přenáší data tunelu přes GRE, což je IP protokol 47. Protokol 47 není TCP port 47 a tato dvě čísla nemají nic společného kromě sdílených číslic.
Operátor, který otestuje konektivitu na 1723 a vidí dokončené navázání spojení, usoudí, že cesta funguje. Datový kanál pak nikdy nepustí jediný paket, protože gateway nemá žádnou podporu GRE, kterou by nabídla. To je výklad požadavků starého protokolu, ne rada nasazovat PPTP, který je léta zastaralý.
Stejná úvaha platí pro každý protokol, jehož řídicí kanál je TCP nebo UDP, zatímco jeho datová cesta ne.
IPsec přežívá jen jako UDP
IPsec je případ, kdy je odpověď podmíněná, nikoli rozhodné ne. AWS dokumentuje NAT traversal jako podporované uspořádání pro IPsec přes NAT gateway. Při vyjednaném NAT-T se ESP zapouzdří do UDP a gateway vidí běžný UDP místo protokolu 50.
Povolení UDP 4500 nepřiměje koncové body používat NAT traversal. Povolí pakety jen tehdy, pokud už takto vytvořené jsou. Ověřte z vlastního vyjednávacího výstupu klienta, které zapouzdření bylo zvoleno, a ověřte na přijímací straně, že protějšek to přijal. Dva koncové body nakonfigurované pro nativní ESP budou nadále posílat nativní ESP, ať sada pravidel říká cokoli.
VPN založená na TCP nebo UDP zapadá do dokumentované sady transportů a přesto může selhat z důvodů směrování, filtrování nebo ověřování. Zapadat do sady je nutné, ne postačující.
Než rozšíříte politiku, zkontrolujte cestu
Ověřte skutečnou trasu podsítě úlohy a totožnost jejího dalšího skoku nejprve. Přímá veřejná cesta, instance NAT, spravovaná NAT gateway a soukromá cesta přes transit gateway jsou čtyři různé návrhy a jen jeden z nich je zde popsaná spravovaná služba.
Poté zaznamenejte pokusný koncový bod, rodinu adres, vnější protokol a port, kde jej protokol má. Použijte diagnostiku klienta a pozorování toku od vlastníka sítě místo úspěšného požadavku prohlížeče, který dokazuje jen to, že TCP a UDP fungují. Poté zkontrolujte bezpečnostní skupinu, ACL podsítě, firewall hosta a politiku služby pro oba směry toku.
Neotvírejte veškerý provoz, abyste kompenzovali transport, který služba neumí přenést. Změna pravidla to nespraví a přežije incident.
Když transport nevyhovuje
Pokud je vnější protokol mimo podporovanou sadu, oprava je architektonická: zvolte transport, který cesta unese, nebo přesuňte egress na něco, co unese ten, který potřebujete. OpenVPN přes UDP, WireGuard přes UDP a tunely založené na TLS všechny zapadají do dokumentované sady. Instance NAT spravovaná zákazníkem je možnost, když musí projít konkrétní protokol a provozní náklady na její udržování jsou přijatelné.
Hostování příchozího VPN serveru je samostatný problém se samostatnou odpovědí. NAT gateway poskytuje odchozí překlad a žádné obecné přesměrování příchozích portů, takže server za ní potřebuje svůj schválený veřejný vstup navržený podle vlastních podmínek.
Pořadí práce: pojmenujte vnější protokol, potvrďte další skok, porovnejte jej s dokumentovanou sadou a poté změňte architekturu nebo transport. Jiné číslo portu nepřemění GRE na TCP a další permisivní pravidlo nepřemění dokončenou řídicí výměnu v funkční datový kanál.