Cloud VPN k VM v GCP: použite internú IP, nie NAT IP
Koncový bod brány, interná adresa VM a externá adresa NAT jedna k jednej plnia tri rôzne úlohy. Skontrolujte, ktorú z nich používa vaša trasa.
Keď sa lokálna sieť dostane do VPC cez Cloud VPN, cieľom služby v Compute Engine je zvyčajne interná adresa VM. Externá IPv4 adresa nie je druhá adresa, ktorú by ste mohli dosadiť do tej istej privátnej trasy. Väčšina zmätku v tejto oblasti pramení z toho, že sa tri adresy s tromi úlohami považujú za zameniteľné, preto začnite tým, že pomenujete, ktorú daný paket používa.
Tri adresy, tri úlohy
Pomenujte všetky tri, skôr než začnete ktorúkoľvek ladiť, pretože odpoveď mení objekt, ktorý budete ďalej skúmať.
| Address | Job |
|---|---|
| Cloud VPN endpoint | where the IPsec peers meet |
| Internal IP | the address your route and firewall must name |
| External IPv4 | the platform's inbound mapping, not a guest address |
Prvá patrí tunelu. Druhá patrí vášmu návrhu trasy a firewallu. Tretia patrí prichádzajúcemu prístupu z internetu a je mapovaná, nie pripojená. Návrh, ktorý funguje pre jednu z nich, nehovorí nič o zostávajúcich dvoch.
Prečo externá adresa nie je druhé rozhranie
Sprievodca adresovaním je autoritou pre to, ako sa v Compute Engine líši interná a externá dostupnosť. Externá IPv4 adresa v Compute Engine je mapovanie jedna k jednej na jediné interné NIC inštancie, takže hosť nikdy nevidí druhé rozhranie ani druhú adresu na tomto NIC. To, čo VM hlási zvnútra, je stále jedna primárna interná adresa.
Preto sú privátny klient, ktorý smeruje prevádzku tunelom k 10.24.1.7 a klient, ktorý cieli na externú adresu VM, na rôznych cestách. Otvorenie pravidla firewallu pre verejnú adresu nič nemení na trase vo VPC, ktorá musí niesť prevádzku tunela, a úprava trasy v hosťovi neposúva mapovanie platformy. Vyberte adresu, ktorú vaša trasa pomenúva, a potom kontrolujte iba objekty, ktoré ju riadia. Táto disciplína odstraňuje väčšinu hádania z tejto cesty riešenia problémov.
Prejdite cestu s gcloud
Začnite pri inštancii a prečítajte obe adresy z toho istého objektu, aby ste vedeli, o ktorej vaša dokumentácia hovorí:
gcloud compute instances describe app-1 --zone=europe-west1-b \
--format="value(networkInterfaces[0].networkIP,networkInterfaces[0].accessConfigs[0].natIP)"Potom potvrďte smerovanie a povolenie, na ktorých cesta skutočne závisí:
gcloud compute routes list --filter="destRange:10.24.1.0/24"
gcloud compute firewall-rules list --filter="sourceRanges:10.99.0.0/24"
gcloud compute vpn-tunnels describe TUNNEL_NAME --region=europe-west1Prečítajte si inzerované a naučené rozsahy tunela, trasu vo VPC pre podsiete pracovnej záťaže a pravidlo firewallu, ktoré povoľuje lokálny zdroj. Tieto tri sa musia zhodovať, kým je poslucháč v hosťovi vôbec relevantný.
Potom skontrolujte hosťa: počúva služba na internej adrese a vedie jej spätná cesta znova cez VPC? Poslucháč viazaný iba na verejnú adresu v tomto teste zlyhá, aj keď je každý objekt na strane cloudu správny.
Verejný prefix je iná otázka
Nič z vyššie uvedeného neznamená, že každá adresa prenášaná vnútri VPN musí byť RFC1918. Vzdialená sieť môže byť legitímne číslovaná z verejného priestoru, ak platforma podporuje smerovanie a operátor má právomoc nad adresou. To je bežná voľba návrhu.
Nie je to to isté ako zaobchádzať s bežnou externou NAT adresou, ako by to bola ďalšia interná adresa podsiete. Jedno je prefix, ktorý smerujete; druhé je mapovanie, ktoré platforma uplatňuje na prichádzajúci prístup.
Externá IPv6 a špeciálne navrhnuté usporiadania adries majú vlastnú sémantiku. Ak váš plán závisí od niektorého z nich, prečítajte si dokumentáciu platformy k tejto funkcii, namiesto zovšeobecňovania z prípadu IPv4. Mapovanie IPv4 je bežný prípad, nie jediný, a výnimky majú každá svoje pravidlá.
Prekrývajúce sa rozsahy sú iný problém
Prekrývajúce sa privátne rozsahy sú skutočný dôvod, prečo ľudia siahajú po verejnej adrese, a je to nesprávna páka. Zmena cieľa na NAT adresu VM prekrytie nerieši; mení, pre ktorú adresu paket tvrdí, že je, bez toho, aby definovala, ako funguje spätná cesta.
Vyriešte prekrytie zámerne: prečíslujte, použite podporovaný návrh prekladu alebo smerujte cez sieť, kde sa prefixy nezrážajú. Každé z toho je návrh s vlastníkom. NAT adresa nie je návrh.
Dokumentujte obe polia oddelene
Zaznamenajte partnera tunela a cieľ pracovnej záťaže ako dve samostatné polia runbooku, každé s trasou a pravidlom firewallu, ktoré ho podporujú. Tunel IPsec, ktorý sa zdvihne, vám povie len to, že sa strany zhodli; nehovorí nič o tom, na ktorej adrese je pracovná záťaž dostupná, ani o tom, či je jej privátna trasa úplná.
Overte skutočným klientom na druhej strane: preložte meno, potvrďte, že vracia internú adresu, pripojte sa a skontrolujte spätnú prevádzku. Dokumentácia k IP adresám Compute Engine je referenciou pre rozlíšenie interného a externého použité vyššie.