За замовчуванням AWS Site-to-Site VPN чекає, доки customer gateway почне узгодження. Це значення за замовчуванням — налаштування, а не закон, і налаштування зветься Startup action. Перш ніж братися за нього, розділіть два питання, які постійно змішують: хто будує тунель і чи мають потрібні вам пакети маршрут крізь нього. Лише перше живе в параметрах тунелю.

Відокремте дію запуску від дії тайм-ауту DPD

Два налаштування для кожного тунелю керують двома різними подіями, і встановлення одного нічого не каже про інше.

EventOptionUseful values
A new or modified VPN connection needs a tunnelStartup actionadd waits for the peer; start asks AWS to initiate
Dead peer detection times outDPD timeout actionclear ends the session, restart reinitiates, none does nothing

Якщо AWS має підняти новий або змінений тунель, виберіть start. Якщо AWS має також перезапустити узгодження після тайм-ауту DPD, налаштуйте restart для цієї події окремо. Жодне з налаштувань не є політикою повторних спроб застосунку, і жодне не є інтервалом зміни ключа: DPD перевіряє, чи живий партнер, а зміна ключа замінює security associations на робочому тунелі.

Застосунок, у якого спливає тайм-аут, поки тунель ще повідомляє up, має проблему на шляху даних. Скорочення таймера DPD це не виправить і може додати метушні, яку доведеться пояснювати пізніше.

Перевірте, що AWS має куди надіслати узгодження

Ініціювання з боку AWS працює лише з IKEv2, і AWS потрібна публічна адреса customer gateway, щоб знати, куди надсилати пропозицію. Найболючіший випадок — ресурс customer gateway з автентифікацією за сертифікатом, створений без адреси: документація AWS описує створення нового ресурсу customer gateway з адресою і потім зміну VPN-з'єднання, щоб воно вказувало на нього.

Сертифікат доводить, ким є партнер. Він не повідомляє AWS, де партнер, і це дві різні вимоги. Тому рішення — новий ресурс customer gateway, а не новий сертифікат. Заміна сертифіката залишає AWS із тією самою відсутньою ціллю.

Якщо customer gateway стоїть за NAT, AWS також потрібен налаштований responder identity, IDr, щоб ідентичність партнера збігалася з тим, що очікує пристрій. Підтвердьте це значення й шлях через міжмережевий екран, що пропускає трафік IKE, перш ніж звинувачувати налаштування, яке ви щойно змінили. Вибір start не може змусити недосяжного або неправильно визначеного партнера прийняти пропозицію.

Застосуйте зміну до одного тунелю й очікуйте перерви

VPN-з'єднання має два тунелі з незалежними налаштуваннями, тож за зовнішньою адресою підтвердьте, який саме ви редагуєте. AWS дозволяє змінювати один тунель за раз, і зв'язність через вибраний тунель може перериватися на кілька хвилин.

  1. Виберіть з'єднання Site-to-Site VPN і відкрийте Modify VPN tunnel options.
  2. Виберіть тунель за зовнішньою IP-адресою й підтвердьте його версію IKE та ресурс customer gateway.
  3. Задайте ті дії запуску й DPD, які вам справді потрібні, і збережіть у вікні, яке контролюєте ви.
  4. Підтвердьте, що змінений тунель встановлюється, і перевірте інший тунель та маршрутизацію перед наступною зміною.

Одна поведінка варта уваги перед обслуговуванням. Коли ініціювання з боку AWS увімкнене, тайм-ауту немає: AWS продовжує намагатися, доки тунель не підніметься, і ініціює знову, коли customer gateway надсилає повідомлення delete-SA. Якщо ви навмисно вимкнете партнера, AWS продовжить стукати, і журнали партнера це покажуть.

Перевіряйте шлях застосунку, а не лише стан тунелю

Тунель, що повідомляє up, — це не те саме, що робочий запит. Функції Lambda, під'єднаній до VPC, усе ще потрібен subnet-маршрут до префікса клієнта, правила security group і network ACL, які дозволяють трафік, розв'язання імен, що повертає правильну адресу, і зворотний шлях на боці клієнта.

Перевірте один раз реальним запитом із контексту застосунку, а якщо не вдасться, прочитайте flow logs. Трафік keepalive — законний варіант, коли ініціювання з боку AWS вимкнене і простоюючому тунелю потрібні пакети, щоб триматися, але це має бути рішення про моніторинг, яке ви можете назвати, а не незрозумілий цикл ping, прикручений до функції.

Спершу виберіть, хто будує тунель, потім діагностуйте решту несправності на її власному рівні. Документація AWS про ініціювання описує вимоги до адреси, ідентичності та повторних спроб докладніше, ніж підказки в консолі.

Схожі статті