Rotiranje AWS VPN PSK: koji tunel pada i kada
Promjena jednog unaprijed dijeljenog ključa tunela AWS VPN obara taj tunel dok se oba kraja ne slože. Prvo dokažite alternativni put, zatim rotirajte tunel po tunel.
Tunel pada u trenutku kada se dva kraja ne slažu oko unaprijed dijeljenog ključa i ostaje dole dok obje strane ne ponesu novu vrijednost. Taj dio je očekivan: AWS tretira promjenu kao prekid odabranog tunela, a partner neće završiti IKE dok se ključevi razlikuju. Ono što ljude iznenadi jest druga polovina. Drugi tunel ne preuzima promet sam, osim ako niste provjerili da ga može nositi. Rotirajte ovim redom i prekid ostaje unutar jednog tunela.
Šta se zapravo događa kada se ključ promijeni
ModifyVpnTunnelOptions prepisuje opcije jednog tunela, identificiranog po njegovoj vanjskoj IP adresi. Tunel se ruši i ponovo gradi, pa IKE i IPsec pregovaraju ispočetka s novim ključem. AWS navodi da prekid može trajati nekoliko minuta, što je dovoljno dugo da to primijeti protokol rutiranja. Drugi tunel u istoj vezi poziv ne dira.
Postoji drugi efekat koji vrijedi znati prije nego što bilo šta pošaljete. Operacija izmjene uzima cijeli skup opcija tunela, pa polje koje izostavite biva upisano natrag sa svojom zadanom vrijednošću. Ako ste podesili trajanja faze 1 ili faze 2, ili postavke otkrivanja mrtvog partnera, proslijedite trenutne vrijednosti u istom zahtjevu ili planirajte da ih poslije vratite.
Prvo pročitajte trenutne vrijednosti, zatim promijenite jedno polje. Taj redoslijed je cijela disciplina ovog zadatka.
Prvo uskladite AWS tunel s pravim partnerom
Konzola označava tunele po redoslijedu, a vaš uređaj ne koristi tu oznaku. Identificirajte tunel po njegovoj vanjskoj IP adresi i uskladite ga s partnerskom sekcijom na korisničkom pristupniku. Tunel 1 u lokalnoj konfiguraciji nije dokaz da uređujete tunel koji AWS naziva tunelom 1.
Počnite od same veze, koja navodi oba tunela i ključ koji svaki trenutno drži:
aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
--query "VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,PreSharedKey]"Ključ koji se vrati je onaj koji se sada koristi. Uporedite ga s partnerskom konfiguracijom prije nego što bilo šta promijenite, jer nesklad koji već postoji objašnjava tunel koji nikada nije bio stabilan.
Prvo neka drugi tunel nosi promet
Dva tunela u jednoj vezi ne dokazuju da je vaš uređaj oba konfigurisao, da oba oglašavaju prefikse koji su vam potrebni, ni da promet prolazi između njih. Provjerite pregovaranje alternativnog tunela, njegove rute i stvarni tok aplikacije u oba smjera. S BGP-om je živo susjedstvo koristan dokaz, ali nije isto što i potvrda prefiksa. Sa statičkim rutiranjem potvrdite kako pristupnik bira put i šta radi kada preferirani put nestane.
Ako alternativa ne može nositi radno opterećenje, zakažite prekid ili popravite alternativni tunel prije nego što dotaknete ključ. Statusno svjetlo na stranici konzole nije obećanje neprekinute usluge.
Rotirajte jedan tunel, pa provjerite stvarnim prometom
Kada je alternativni put dokazan, redoslijed je kratak. Zabilježite adresu tunela, njegovog partnera i postavke koje nisu tajne, i održavajte put za upravljanje do pristupnika koji ne zavisi od tunela koji ćete prekinuti.
- Ažurirajte partnera korisničkog pristupnika za odabranu vanjsku adresu ili pripremite izmjenu tako da stupi na snagu nekoliko sekundi nakon poziva API-ja.
- Pošaljite poziv za izmjenu s novim ključem plus trenutna trajanja i vrijednosti DPD-a.
- Sačekajte da se IKE i IPsec vrate, zatim potvrdite rute i potrebne prefikse.
- Provedite reprezentativan tok aplikacije kroz taj tunel i posmatrajte oba smjera.
Tunel je neupotrebljiv dok se strane ne slažu i dok AWS primjenjuje izmjenu, pa ažuriranje partnera mora uslijediti odmah, a ne poslije ručka. Tek kada promijenjeni tunel nosi stvarni promet, ponovite postupak na drugom.
Zaustavite se ako su oporavak ili rutiranje nakon prvog tunela još neizvjesni. Dva poluispravna tunela gora su od jednog za koji znate da radi.
Kada se oporavak zaglavi, čitajte IKE stranu
Tunel koji ostane dole nakon što obje strane drže novi ključ obično je nesklad politike koji je rotacija razotkrila, a ne stvorila. Prijedlozi, identitet koji partner šalje i selektori prometa svi moraju odgovarati AWS strani, a vrijednost koja je preživjela uspostavljeni tunel ipak može biti odbijena tokom novog pregovaranja. Pročitajte status pregovaranja i poruku priloženu uz njega prije nego što drugi put promijenite ključ.
aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
--query "VpnConnections[0].VgwTelemetry[].[OutsideIpAddress,Status,StatusMessage]"Ako se izmjena mora poništiti, ne vraćajte stari ključ samo zato što je nekada radio. Tretirajte kompromitovani ključ kao kompromitovan i umjesto toga popravite pregovaranje. Završite s provjerenim oba tunela i ažuriranim popisom tajni tako da svaki partner bilježi koju vrijednost drži, a dokumentaciju o opcijama AWS tunela držite uz runbook.