Tunel padne v okamihu, keď sa oba konce nezhodnú na vopred zdieľanom kľúči, a zostane dole, kým obe strany neponesú novú hodnotu. Táto časť je očakávaná: AWS považuje zmenu za prerušenie vybraného tunela a partner nedokončí IKE, kým sa kľúče líšia. To, čo ľudí prekvapí, je druhá polovica. Druhý tunel sám od seba prevádzku neprevezme, ak ste neoverili, že ju unesie. Rotujte v tomto poradí a výpadok zostane vnútri jedného tunela.

Čo sa vlastne stane, keď sa kľúč zmení

ModifyVpnTunnelOptions prepisuje možnosti jedného tunela, určeného jeho vonkajšou IP adresou. Tunel sa zhodí a znovu postaví, takže IKE a IPsec vyjednávajú od nuly s novým kľúčom. AWS uvádza, že prerušenie môže trvať niekoľko minút, čo je dosť dlho na to, aby si to všimol smerovací protokol. Druhý tunel v tom istom pripojení sa volaním nemení.

Pred odoslaním čohokoľvek je dobré poznať druhý efekt. Operácia zmeny berie celú sadu možností tunela, takže pole, ktoré vynecháte, sa zapíše späť so svojou predvolenou hodnotou. Ak ste ladili životnosti fázy 1 alebo fázy 2, alebo nastavenia detekcie mŕtveho partnera, odovzdajte aktuálne hodnoty v tej istej požiadavke alebo ich plánujte potom obnoviť.

Najprv si prečítajte aktuálne hodnoty, potom zmeňte jedno pole. Táto postupnosť je celá disciplína tejto úlohy.

Najprv priraďte tunel AWS k správnemu partnerovi

Konzola označuje tunely podľa poradia a vaše zariadenie tento štítok nepoužíva. Určite tunel podľa jeho vonkajšej IP adresy a priraďte ho k sekcii partnera na zákazníckej bráne. Tunel 1 v miestnej konfigurácii nie je dôkaz, že upravujete tunel, ktorý AWS nazýva tunel 1.

Začnite samotným pripojením, ktoré vypisuje oba tunely a kľúč, ktorý každý z nich práve drží:

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

Vrátený kľúč je ten, ktorý sa práve používa. Porovnajte ho s konfiguráciou partnera, než čokoľvek zmeníte, pretože neshoda, ktorá už existuje, vysvetľuje tunel, ktorý nikdy nebol stabilný.

Najprv nechajte prevádzku niesť druhý tunel

Dva tunely v jednom pripojení nedokazujú, že vaše zariadenie má nakonfigurované oba, že oba inzerujú prefixy, ktoré potrebujete, ani že medzi nimi prúdi prevádzka. Overte vyjednávanie alternatívneho tunela, jeho trasy a skutočný tok aplikácie v oboch smeroch. Pri BGP je živé susedstvo užitočný dôkaz, ale nie je to isté ako potvrdenie prefixov. Pri statickom smerovaní potvrďte, ako brána volí cestu a čo robí, keď preferovaná zmizne.

Ak alternatíva nemôže niesť záťaž, naplánujte výpadok alebo opravte alternatívny tunel, než sa kľúča dotknete. Stavová kontrolka na stránke konzoly nie je sľub neprerušenej služby.

Zrotujte jeden tunel a potom overte skutočnou prevádzkou

Keď je alternatívna cesta dokázaná, postupnosť je krátka. Zapíšte adresu tunela, jeho partnera a nie tajné nastavenia a udržujte správcovskú cestu k bráne, ktorá nezávisí od tunela, ktorý sa chystáte prerušiť.

  1. Aktualizujte partnera zákazníckej brány pre vybranú vonkajšiu adresu alebo zmenu pripravte tak, aby sa prejavila niekoľko sekúnd po volaní API.
  2. Odošlite volanie zmeny s novým kľúčom plus aktuálne životnosti a hodnoty DPD.
  3. Počkajte, kým sa IKE a IPsec vrátia, a potom potvrďte trasy a požadované prefixy.
  4. Prežeňte týmto tunelom reprezentatívny tok aplikácie a sledujte oba smery.

Tunel je nepoužiteľný, kým sa strany nezhodnú a kým AWS zmenu aplikuje, takže aktualizácia partnera musí nasledovať okamžite, nie po obede. Až keď zmenený tunel nesie skutočnú prevádzku, zopakujte postup na druhom.

Zastavte sa, ak je obnova alebo smerovanie po prvom tuneli stále neisté. Dva polofunkčné tunely sú horšie ako jeden, o ktorom viete, že funguje.

Keď sa obnova zasekne, čítajte stranu IKE

Tunel, ktorý zostane dole po tom, čo obe strany držia nový kľúč, je zvyčajne neshoda zásad, ktorú rotácia odhalila, nie vytvorila. Návrhy, identita, ktorú partner posiela, a selektory prevádzky musia všetky zodpovedať strane AWS a hodnota, ktorá prežila zavedený tunel, môže byť pri novom vyjednávaní napriek tomu odmietnutá. Prečítajte si stav vyjednávania a správu k nemu pripojenú, než kľúč zmeníte druhýkrát.

aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
  --query "VpnConnections[0].VgwTelemetry[].[OutsideIpAddress,Status,StatusMessage]"

Ak je potrebné zmenu vrátiť, neobnovujte starý kľúč len preto, že predtým fungoval. Považujte kompromitovaný kľúč za kompromitovaný a radšej opravte vyjednávanie. Skončite s overenými oboma tunelmi a aktualizovaným inventárom tajomstiev, aby si každý partner zaznamenal, ktorú hodnotu drží, a dokumentáciu k možnostiam tunela AWS majte pri runbooku.

Súvisiace články