Kada lokalna mreža stigne do VPC-a kroz Cloud VPN, odredište za uslugu na Compute Engine-u obično je interna adresa VM-a. Spoljna IPv4 adresa nije druga adresa koju možete ubaciti u istu privatnu rutu. Većina zabune u ovoj oblasti dolazi od toga da se tri adrese sa tri posla tretiraju kao zamenljive, pa počnite tako što ćete imenovati koju od njih koristi dati paket.

Tri adrese, tri posla

Imenujte sve tri pre nego što počnete da otklanjate greške na bilo kojoj od njih, jer odgovor menja objekat koji sledeće pregledate.

AddressJob
Cloud VPN endpointwhere the IPsec peers meet
Internal IPthe address your route and firewall must name
External IPv4the platform's inbound mapping, not a guest address

Prva pripada tunelu. Druga pripada vašem dizajnu rute i zaštitnog zida. Treća pripada dolaznom internet pristupu i preslikava se, a ne priključuje. Dizajn koji radi za jednu od njih ne govori ništa o druge dve.

Zašto spoljna adresa nije drugi interfejs

Vodič za adresiranje je merodavan za to kako se razlikuju interna i spoljna dostupnost na Compute Engine-u. Spoljna IPv4 adresa na Compute Engine-u je preslikavanje jedan-na-jedan na jedini interni NIC instance, pa gost nikada ne vidi drugi interfejs ni drugu adresu na tom NIC-u. Ono što VM iznutra prijavljuje i dalje je jedna primarna interna adresa.

Zato su privatni klijent koji usmerava saobraćaj kroz tunel prema 10.24.1.7 i klijent koji cilja spoljnu adresu VM-a na različitim putevima. Otvaranje pravila zaštitnog zida za javnu adresu ne menja ništa na VPC ruti koja mora da nosi saobraćaj tunela, a uređivanje rute na gostu ne pomera preslikavanje platforme. Izaberite adresu koju vaša ruta imenuje, pa proveravajte samo objekte koji njome upravljaju. Ta disciplina uklanja većinu nagađanja sa ovog puta otklanjanja grešaka.

Prođite put sa gcloud-om

Počnite od instance i pročitajte obe adrese iz istog objekta, da biste znali o kojoj govori vaša dokumentacija:

gcloud compute instances describe app-1 --zone=europe-west1-b \
  --format="value(networkInterfaces[0].networkIP,networkInterfaces[0].accessConfigs[0].natIP)"

Zatim potvrdite usmeravanje i dozvolu od kojih put zapravo zavisi:

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-west1

Pročitajte objavljene i naučene raspone tunela, VPC rutu za podmrežu radnog opterećenja i pravilo zaštitnog zida koje dozvoljava lokalni izvor. To troje mora da se slaže pre nego što je slušalac na gostu uopšte relevantan.

Zatim proverite gosta: da li usluga sluša na internoj adresi i da li se njen povratni put vraća ponovo kroz VPC? Slušalac vezan samo za javnu adresu pašće ovaj test čak i kada je svaki objekat na strani oblaka ispravan.

Javni prefiks je drugo pitanje

Ništa od navedenog ne znači da svaka adresa nošena unutar VPN-a mora biti RFC1918. Udaljena mreža može legitimno da se numeriše iz javnog prostora, pod uslovom da platforma podržava usmeravanje i da operater ima ovlašćenje nad adresom. To je normalan dizajnerski izbor.

To nije isto kao tretirati običnu spoljnu NAT adresu kao da je još jedna interna adresa podmreže. Jedno je prefiks koji usmeravate; drugo je preslikavanje koje platforma primenjuje na dolazni pristup.

Spoljna IPv6 adresa i posebno osmišljeni rasporedi adresa imaju sopstvenu semantiku. Ako vaš plan zavisi od nečega od toga, pročitajte dokumentaciju platforme za tu funkciju umesto da generalizujete iz slučaja IPv4. Preslikavanje IPv4 je uobičajen slučaj, ali ne i jedini, a izuzeci imaju sopstvena pravila.

Preklapajući rasponi su drugi problem

Preklapajući privatni rasponi su stvarni razlog zašto ljudi posežu za javnom adresom, a to je pogrešna poluga. Promena odredišta na NAT adresu VM-a ne rešava preklapanje; menja za koju adresu paket tvrdi da jeste, bez definisanja kako povratni put funkcioniše.

Rešite preklapanje namerno: prenumerišite, upotrebite podržani dizajn prevođenja ili usmerite kroz mrežu u kojoj se prefiksi ne sudaraju. Svako od toga je dizajn sa vlasnikom. NAT adresa nije dizajn.

Dokumentujte dva polja odvojeno

Zabeležite partnera tunela i odredište radnog opterećenja kao dva odvojena polja u runbook-u, svako sa rutom i pravilom zaštitnog zida koje ga podržava. IPsec tunel koji se podigne samo govori da su se strane složile; ne govori ništa o tome na kojoj je adresi radno opterećenje dostupno, ni o tome da li je njegova privatna ruta kompletna.

Proverite stvarnim klijentom na drugoj strani: razrešite ime, potvrdite da vraća internu adresu, povežite se i proverite povratni saobraćaj. Dokumentacija o IP adresama za Compute Engine je referenca za razliku između internog i spoljnog korišćenu gore.

Povezani članci