Планът се прилага чисто, тунелът се вдига и конзолата го нарича базиран на правила. Трафикът все още не минава, а търсенето на превключвател за маршрутизиран режим в ресурса на Terraform не води доникъде, защото такова поле не съществува. В Classic VPN маршрутизираното поведение не е режим, който избирате. То се получава, когато локалният селектор на трафика е 0.0.0.0/0, отдалечените селектори изброяват мрежите, които наистина искате, и маршрут сочи към тунела. Три неща, а етикетът следва.

Митът: поле за режим на тунела

Етикетът в конзолата отразява това, което API вижда в селекторите. Нищо в ресурса не казва маршрутизиран, така че няма какво да се зададе на стойност вярно.

Търсенето на това поле изяжда първия час от проблема, а четенето на стойностите на селекторите отнема последните пет минути.

Какво означава маршрутизиран тук

Google описва маршрутизираните тунели на Classic VPN като тунели, базирани на правила, чийто локален селектор е 0.0.0.0/0. Назовават се само отдалечените диапазони, а локалната страна се третира като всеки адрес. Затова маркерът в конфигурацията ви е стойност, а не режим. Запишете двата селектора явно и ги прочетете в изхода на плана:

local_traffic_selector  = ["0.0.0.0/0"]
remote_traffic_selector = ["10.20.0.0/16"]

Префиксът на партньора в този фрагмент е илюстративен; важна е формата.

Маршрутът е отделен обект

Обектът тунел не инсталира маршрут. Пакетите могат да съответстват на правилата на тунела и пак да нямат къде да отидат, защото следващият хоп се решава от таблицата за маршрутизиране на VPC. Маршрутът се нуждае от диапазона местоназначение, мрежата, тунела като следващ хоп и приоритет, който побеждава всичко по-широко. Ако го забравите, ще получите тунел, който отчита установена връзка, и проверка, която никога не напуска VPC.

resource "google_compute_route" "office" {
  name                = "office-via-vpn"
  dest_range          = "10.20.0.0/16"
  network             = google_compute_network.vpc.name
  next_hop_vpn_tunnel = google_compute_vpn_tunnel.to_office.id
  priority            = 1000
}

Създайте маршрута в същия модул като тунела, за да не се разминат двата при преглед.

Огледайте селекторите на партньора

Отдалеченото устройство трябва да е конфигурирано огледално: неговият локален диапазон е вашият отдалечен селектор, а отдалеченият му диапазон трябва да покрива подмрежите на GCP, които смятате да използвате. Ако някоя страна стесни, фаза 2 се проваля, въпреки че фаза 1 успява. Това е най-честата форма на конфигурация, която изглежда правилна в конзолата и не носи трафик.

Отпечатайте селекторите на двете страни един до друг при прегледа на промяната.

Разделете статичния адрес на две прилагания

Създаването на резервирания адрес и тунела, който го реферира, в едно прилагане е известен източник на преработки, защото адресът трябва да съществува, преди правилото за препращане да го използва. Приложете първо само ресурса на адреса, после добавете шлюза, правилата за препращане и тунела и приложете отново. Terraform чете съществуващия адрес от състоянието при второто пускане и го използва повторно. Ако пропуснете това, тунелът може да получи нов публичен адрес при всяко прилагане, което чупи конфигурацията на партньора всеки път.

Две прилагания сега е по-евтино от промяна на партньора при всяко издание.

Проверявайте преговорите, не етикета

След прилагането проверете три отделни факта: тунелът отчита установена връзка, маршрутът съществува с предвидения следващ хоп, а партньорът отчита работещи фази 1 и 2.

Тунел, който работи, но фаза 2 е паднала, означава, че двете страни не са съгласни за селекторите:

  • Едната страна изброява подмрежа, която другата не изброява.
  • Едната страна използва агрегат, който другата е стеснила.
  • Маршрутът съществува, но сочи към друг тунел.

Classic VPN е един тунел с по-нисък SLA от HA VPN, а HA VPN използва два интерфейса, два тунела и BGP с различни типове ресурси. Копирането на класически пример в HA конфигурация с очакване полетата на селекторите да се държат по същия начин е отделна грешка, която си струва да се избегне. Самите полета на тунела са документирани в справката за google_compute_vpn_tunnel.

Подобни статии