GCP Classic VPN u Terraformu: učinite tunel rutiranim
U Classic VPN oznaka ne određuje ponašanje. Rutirano znači lokalni selektor 0.0.0.0/0, odgovarajuće udaljene selektore i eksplicitnu rutu.
Plan se čisto primjenjuje, tunel se diže, a konzola ga naziva pravilima utemeljenim. Promet i dalje ne prolazi, a traženje preklopnika za rutirani način rada u Terraform resursu ne vodi nikamo jer takvo polje ne postoji. U Classic VPN rutirano se ponašanje ne bira kao način rada. To je ono što dobijete kada je lokalni selektor prometa 0.0.0.0/0, udaljeni selektori navode mreže koje doista želite, a ruta pokazuje na tunel. Tri stvari, i oznaka slijedi.
Mit: polje načina rada tunela
Oznaka u konzoli odražava ono što API vidi u selektorima. Ništa u resursu ne kaže rutirano, pa nema što postaviti na istinito.
Traženje tog polja pojede prvi sat problema, a čitanje vrijednosti selektora zadnjih pet minuta.
Što ovdje znači rutirano
Google dokumentira rutirane tunele Classic VPN-a kao tunele utemeljene na pravilima čiji je lokalni selektor 0.0.0.0/0. Imenuju se samo udaljeni rasponi, a lokalna strana tretira se kao bilo koja adresa. Zato je oznaka u vašoj konfiguraciji vrijednost, a ne način rada. Zapišite oba selektora eksplicitno i pročitajte ih u izlazu plana:
local_traffic_selector = ["0.0.0.0/0"]
remote_traffic_selector = ["10.20.0.0/16"]
Prefiks partnera u tom isječku je ilustrativan; oblik je ono što je važno.
Ruta je zaseban objekt
Objekt tunela ne instalira rutu. Paketi mogu odgovarati pravilima tunela i još uvijek nemati kamo otići, jer sljedeći skok određuje VPC tablica usmjeravanja. Ruti trebaju odredišni raspon, mreža, tunel kao sljedeći skok i prioritet koji pobjeđuje sve šire. Ako to zaboravite, dobivate tunel koji prijavljuje uspostavljenu vezu i provjeru koja nikada ne napušta VPC.
resource "google_compute_route" "office" {
name = "office-via-vpn"
dest_range = "10.20.0.0/16"
network = google_compute_network.vpc.name
next_hop_vpn_tunnel = google_compute_vpn_tunnel.to_office.id
priority = 1000
}
Stvorite rutu u istom modulu kao tunel, kako se njih dvoje ne bi razišli tijekom pregleda.
Zrcalite selektore na partneru
Udaljeni uređaj mora biti konfiguriran zrcalno: njegov lokalni raspon je vaš udaljeni selektor, a njegov udaljeni raspon mora pokrivati GCP podmreže koje namjeravate koristiti. Ako bilo koja strana suzi, faza 2 ne uspijeva iako faza 1 uspije. To je najčešći oblik konfiguracije koja u konzoli izgleda ispravno i ne prenosi promet.
Ispišite selektore obiju strana jedan uz drugi tijekom pregleda promjene.
Podijelite statičnu adresu u dvije primjene
Stvaranje rezervirane adrese i tunela koji se na nju poziva u jednoj primjeni poznat je izvor nestabilnosti, jer adresa mora postojati prije nego što je pravilo prosljeđivanja može koristiti. Prvo primijenite samo resurs adrese, zatim dodajte gateway, pravila prosljeđivanja i tunel pa primijenite ponovno. Terraform čita postojeću adresu iz stanja pri drugom pokretanju i ponovno je koristi. Preskočite li to, tunel može dobiti novu javnu adresu pri svakoj primjeni, što svaki put slomi konfiguraciju partnera.
Dvije primjene sada su jeftinije od promjene partnera pri svakom izdanju.
Provjerite pregovaranje, ne oznaku
Nakon primjene provjerite tri odvojene činjenice: tunel prijavljuje uspostavljenu vezu, ruta postoji s predviđenim sljedećim skokom, a partner prijavljuje da su faza 1 i faza 2 podignute.
Tunel koji je gore, a faza 2 je dolje, znači da se dvije strane ne slažu oko selektora:
- Jedna strana navodi podmrežu koju druga ne navodi.
- Jedna strana koristi agregat koji je druga suzila.
- Ruta postoji, ali pokazuje na drugi tunel.
Classic VPN jedan je tunel s nižim SLA-om od HA VPN-a, a HA VPN koristi dva sučelja, dva tunela i BGP s različitim vrstama resursa. Kopiranje klasičnog primjera u HA konfiguraciju i očekivanje da će se polja selektora ponašati jednako zasebna je pogreška koju vrijedi izbjeći. Sama polja tunela dokumentirana su u referenci google_compute_vpn_tunnel.