Тунель Cloud VPN веде два життєві цикли одночасно, і вони йдуть не за одним годинником. Ресурс потрібно виділити й налаштувати, перш ніж він зможе домовлятися, а після цього протокол має власну послідовність повідомлень IKE. Поле стану може повідомляти про перше, нічого корисного не кажучи про друге. Читати їх як одне ціле — це спосіб, у який невідповідність ключа отримує провину за затримку надання.

Почніть з одного об’єкта тунелю та одного часового вікна.

Два життєві цикли, один об’єкт тунелю

Життєвий цикл ресурсу — це підготовка тунелю постачальником: адреси, конфігурація, ємність. Життєвий цикл протоколу починається, коли обидві сторони мають достатньо конфігурації, щоб обмінятися IKE_SA_INIT, потім IKE_AUTH, потім дочірніми асоціаціями безпеки. Тунель, який усе ще на першій фазі, не провалив автентифікацію, бо автентифікацію ще не пробували.

Саме ця відмінність і є всією проблемою. Усе інше — про те, як спостерігати за нею, не змішуючи не пов’язані повідомлення.

Читайте об’єкт, а не зведення консолі

Запитайте в API лише ті два поля, які важливі, і нічого більше, щоб відповідь лишалася достатньо малою для читання о третій ночі: gcloud compute vpn-tunnels describe NAME --region REGION --format="yaml(status,detailedStatus)". Поле status називає етап життєвого циклу, а detailedStatus несе читабельну причину, прив’язану до нього. Повний дамп конфігурації відповідає на інші питання, і його важче вставити в заявку. Такі запити лише для читання не можуть змінити тунель, що важливо, поки інцидент ще активний.

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

ALLOCATING_RESOURCES — це не невідповідність ключа

Коли тунель повідомляє ALLOCATING_RESOURCES, постачальник ще збирає об’єкт. Невідповідність заздалегідь спільного ключа на цьому етапі спостерігати не можна, а заблокований порт партнера так само не доведений. Перевірити можна докладне повідомлення, чи виглядають проєкт і служба здоровими та чи конфігурація тунелю достатньо повна, щоб із партнером узагалі можна було зв’язатися. Заміна секрету зараз змінює значення, яке ніколи не перевірялося.

Зачекайте, доки стан зміниться, перш ніж робити висновок про конфігурацію.

ESTABLISHED — це початок перевірок доступу

Установлений тунель означає, що IKE завершився, а не що трафік іде. Підтвердьте маршрути, які несе тунель, і там, де задіяний Cloud Router, підтвердьте сеанс BGP і вивчені префікси. Потім перевірте дозволений обмін застосунку, бо правило брандмауера або відсутній маршрут можуть блокувати трафік через цілком здоровий тунель. Кожне з цього — окреме спостереження з окремим виправленням.

Стан каже, яке питання поставити наступним. Він ніколи не відповідає за вас на питання про доступ.

Зіставте один об’єкт і одне часове вікно

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

Якщо тунель відновився перш ніж ви щось зібрали, скажіть це. Невизначена причина — кращий запис, ніж упевнена історія, зібрана з не пов’язаних рядків.

Наступний крок завжди однієї форми: один об’єкт, одне вікно, один етап. Усе ширше — це зведення, а не діагноз.

Схожі статті