Tunel pada u trenutku kada se dva kraja ne slažu oko unaprijed dijeljenog ključa i ostaje dolje dok obje strane ne ponesu novu vrijednost. Taj je dio očekivan: AWS promjenu tretira kao prekid odabranog tunela, a partner neće dovršiti IKE dok se ključevi razlikuju. Ono što ljude iznenadi druga je polovica. Drugi tunel ne preuzima promet sam, osim ako niste provjerili da ga može nositi. Rotirajte ovim redom i prekid ostaje unutar jednog tunela.

Što se zapravo događa kada se ključ promijeni

ModifyVpnTunnelOptions prepisuje opcije jednog tunela, određenog njegovom vanjskom IP adresom. Tunel se ruši i ponovno 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 usmjeravanja. Drugi tunel u istoj vezi poziv ne dira.

Postoji drugi učinak koji vrijedi znati prije nego što bilo što pošaljete. Operacija izmjene uzima cijeli skup opcija tunela, pa polje koje izostavite biva zapisano natrag sa svojom zadanom vrijednošću. Ako ste podesili trajanja faze 1 ili faze 2, ili postavke otkrivanja mrtvog partnera, proslijedite trenutačne vrijednosti u istom zahtjevu ili planirajte da ih poslije vratite.

Prvo pročitajte trenutačne vrijednosti, zatim promijenite jedno polje. Taj je redoslijed cijela disciplina ovog zadatka.

Prvo uskladite AWS tunel s pravim partnerom

Konzola označava tunele po redoslijedu, a vaš uređaj ne rabi tu oznaku. Identificirajte tunel po njegovoj vanjskoj IP adresi i uskladite ga s partnerskim odjeljkom 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 trenutačno drži:

aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
  --query "VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,PreSharedKey]"

Ključ koji se vrati onaj je koji se sada rabi. Usporedite ga s partnerskom konfiguracijom prije nego što bilo što 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 konfigurirao, 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. Uz BGP je živo susjedstvo koristan dokaz, ali nije isto što i potvrda prefiksa. Uz statičko usmjeravanje potvrdite kako pristupnik bira put i što čini 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, njegova partnera i postavke koje nisu tajne, i održavajte put za upravljanje do pristupnika koji ne ovisi o tunelu koji ćete prekinuti.

  1. Ažurirajte partnera korisničkog pristupnika za odabranu vanjsku adresu ili pripremite izmjenu tako da stupi na snagu nekoliko sekundi nakon poziva API-ja.
  2. Pošaljite poziv za izmjenu s novim ključem plus trenutačna trajanja i vrijednosti DPD-a.
  3. Pričekajte da se IKE i IPsec vrate, zatim potvrdite rute i potrebne prefikse.
  4. Provedite reprezentativni tok aplikacije kroz taj tunel i promatrajte 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 drugome.

Zaustavite se ako su oporavak ili usmjeravanje nakon prvog tunela još neizvjesni. Dva poluispravna tunela gora su od jednoga za koji znate da radi.

Kada se oporavak zaglavi, čitajte IKE stranu

Tunel koji ostane dolje 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 tijekom 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 kompromitirani ključ kao kompromitiran 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.

Povezani članci