Jak sprawić, aby AWS rozpoczął tunel Site-to-Site VPN
Akcja uruchomienia i akcja limitu czasu DPD odpowiadają na różne pytania. Ustaw tę, która każe AWS inicjować, a następnie sprawdź adres peera i trasę aplikacji.
Domyślnie AWS Site-to-Site VPN czeka, aż customer gateway rozpocznie negocjację. Ta wartość domyślna to ustawienie, a nie prawo, i nazywa się Startup action. Zanim po nie sięgniesz, rozdziel dwa pytania, które stale się mieszają: kto buduje tunel i czy pakiety, na których ci zależy, mają przez niego trasę. Tylko to pierwsze jest w opcjach tunelu.
Oddziel akcję uruchomienia od akcji limitu czasu DPD
Dwie opcje na tunel sterują dwoma różnymi zdarzeniami, a ustawienie jednej nic nie mówi o drugiej.
| Event | Option | Useful values |
|---|---|---|
| A new or modified VPN connection needs a tunnel | Startup action | add waits for the peer; start asks AWS to initiate |
| Dead peer detection times out | DPD timeout action | clear ends the session, restart reinitiates, none does nothing |
Jeśli AWS ma postawić nowy lub zmieniony tunel, wybierz start. Jeśli AWS ma także ponownie rozpocząć negocjację po limicie czasu DPD, skonfiguruj restart dla tego zdarzenia osobno. Żadna z opcji nie jest polityką ponawiania aplikacji i żadna nie jest interwałem zmiany klucza: DPD sprawdza, czy peer żyje, a zmiana klucza zastępuje security associations na aktywnym tunelu.
Aplikacja, która przekracza limit czasu, gdy tunel nadal zgłasza up, ma problem ze ścieżką danych. Skrócenie timera DPD tego nie naprawi i może dodać zamieszanie, które trzeba będzie później wyjaśnić.
Sprawdź, czy AWS ma gdzie wysłać negocjację
Inicjowanie po stronie AWS działa tylko z IKEv2, a AWS potrzebuje publicznego adresu customer gateway, aby wiedzieć, gdzie wysłać propozycję. Przypadek, który boli najbardziej, to zasób customer gateway uwierzytelniany certyfikatem utworzony bez adresu: dokumentacja AWS opisuje utworzenie nowego zasobu customer gateway z adresem, a następnie zmianę połączenia VPN, aby wskazywało na niego.
Certyfikat dowodzi, kim jest peer. Nie mówi AWS, gdzie peer się znajduje, a to dwa różne wymagania. Dlatego rozwiązaniem jest nowy zasób customer gateway, a nie nowy certyfikat. Wymiana certyfikatu pozostawia AWS z tym samym brakującym celem.
Jeśli customer gateway stoi za NAT, AWS potrzebuje także skonfigurowanego responder identity, IDr, aby tożsamość peera zgadzała się z tym, czego oczekuje urządzenie. Potwierdź tę wartość i ścieżkę przez zaporę, która przepuszcza ruch IKE, zanim obwinisz opcję, którą właśnie zmieniłeś. Wybranie start nie może sprawić, że nieosiągalny lub źle zidentyfikowany peer zaakceptuje propozycję.
Zastosuj zmianę do jednego tunelu i spodziewaj się przerwy
Połączenie VPN ma dwa tunele z niezależnymi opcjami, więc potwierdź po adresie zewnętrznym, który edytujesz. AWS pozwala zmieniać jeden tunel naraz, a łączność przez wybrany tunel może zostać przerwana na kilka minut.
- Wybierz połączenie Site-to-Site VPN i otwórz Modify VPN tunnel options.
- Wybierz tunel po zewnętrznym adresie IP i potwierdź jego wersję IKE oraz zasób customer gateway.
- Ustaw akcje uruchomienia i DPD, których naprawdę chcesz, a następnie zapisz w oknie, które kontrolujesz.
- Potwierdź, że zmieniony tunel się zestawia, i sprawdź drugi tunel oraz routing przed następną zmianą.
Jedno zachowanie zasługuje na uwagę przed konserwacją. Przy włączonym inicjowaniu AWS nie ma limitu czasu: AWS próbuje, aż tunel wstanie, i inicjuje ponownie, gdy customer gateway wyśle komunikat delete-SA. Jeśli celowo wyłączysz peera, AWS będzie dalej pukać, a logi peera to pokażą.
Weryfikuj ścieżkę aplikacji, nie tylko stan tunelu
Tunel zgłaszający up to nie to samo co działające żądanie. Funkcja Lambda podłączona do VPC nadal potrzebuje trasy subnet do prefiksu klienta, reguł security group i network ACL, które dopuszczają ruch, rozwiązywania nazw zwracającego właściwy adres oraz ścieżki powrotnej po stronie klienta.
Przetestuj raz prawdziwym żądaniem z kontekstu aplikacji, a jeśli zawiedzie, przeczytaj flow logs. Ruch keepalive jest uzasadnioną opcją, gdy inicjowanie AWS jest wyłączone i bezczynny tunel potrzebuje pakietów, aby się utrzymać, ale powinna to być decyzja monitoringu, którą potrafisz nazwać, a nie niewyjaśniona pętla ping przykręcona do funkcji.
Najpierw wybierz, kto buduje tunel, a potem diagnozuj pozostałą awarię w jej własnej warstwie. Dokumentacja AWS o inicjowaniu omawia wymagania dotyczące adresu, tożsamości i ponawiania dokładniej niż podpowiedzi w konsoli.