O plano aplica-se sem problemas, o túnel sobe e a consola chama-lhe baseado em políticas. O tráfego continua a não passar, e a procura de um interruptor baseado em rotas no recurso Terraform não leva a lado nenhum porque esse campo não existe. No Classic VPN, o comportamento baseado em rotas não é um modo que se escolhe. É o que se obtém quando o seletor de tráfego local é 0.0.0.0/0, os seletores remotos listam as redes que realmente se quer e uma rota aponta para o túnel. Três coisas, e o rótulo segue.

O mito: um campo de modo do túnel

O rótulo da consola reflete o que a API vê nos seletores. Nada no recurso diz baseado em rotas, por isso não há nada para definir como verdadeiro.

Procurar esse campo consome a primeira hora do problema, enquanto ler os valores dos seletores ocupa os últimos cinco minutos.

O que significa aqui baseado em rotas

A Google documenta os túneis baseados em rotas do Classic VPN como túneis baseados em políticas cujo seletor local é 0.0.0.0/0. Apenas os intervalos remotos são nomeados, e o lado local é tratado como qualquer endereço. É por isso que o marcador na sua configuração é um valor e não um modo. Escreva os dois seletores de forma explícita e leia-os na saída do plano:

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

O prefixo do par nesse trecho é ilustrativo; a forma é o que importa.

A rota é um objeto separado

Um objeto de túnel não instala uma rota. Os pacotes podem corresponder à política do túnel e mesmo assim não ter para onde ir, porque a tabela de encaminhamento da VPC decide o próximo salto. A rota precisa do intervalo de destino, da rede, do túnel como próximo salto e de uma prioridade que ganhe a qualquer coisa mais ampla. Quem se esquece disso fica com um túnel que reporta estabelecido e um ping que nunca sai da 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
}

Crie a rota no mesmo módulo do túnel, para que os dois não se afastem na revisão.

Espelhe os seletores no par

O dispositivo remoto tem de ser configurado com a imagem espelhada: o intervalo local dele é o seu seletor remoto, e o intervalo remoto tem de cobrir as sub-redes GCP que espera usar. Se qualquer dos lados estreitar, a fase 2 falha mesmo que a fase 1 tenha sucesso. É a forma mais comum de uma configuração que parece correta na consola e não transporta tráfego.

Imprima os seletores dos dois lados lado a lado durante a revisão da alteração.

Divida o endereço estático em duas aplicações

Criar o endereço reservado e o túnel que lhe faz referência numa única aplicação é uma fonte conhecida de instabilidade, porque o endereço tem de existir antes de a regra de encaminhamento o poder usar. Aplique primeiro apenas o recurso do endereço, depois acrescente a gateway, as regras de encaminhamento e o túnel e aplique de novo. O Terraform lê o endereço existente do estado na segunda execução e reutiliza-o. Se saltar isso, o túnel pode receber um novo endereço público em cada aplicação, o que quebra a configuração do par todas as vezes.

Duas aplicações agora são mais baratas do que uma alteração de par em cada versão.

Verifique a negociação, não o rótulo

Depois de aplicar, verifique três factos separados: o túnel reporta estabelecido, a rota existe com o próximo salto previsto e o par reporta que a fase 1 e a fase 2 estão ativas.

Um túnel ativo com a fase 2 em baixo significa que os dois lados não concordam quanto aos seletores:

  • Um lado lista uma sub-rede que o outro não lista.
  • Um lado usa um agregado que o outro estreitou.
  • A rota existe mas aponta para outro túnel.

O Classic VPN é um único túnel com um SLA inferior ao HA VPN, e o HA VPN usa duas interfaces, dois túneis e BGP com tipos de recurso diferentes. Copiar um exemplo clássico para uma configuração HA e esperar que os campos de seletor se comportem da mesma forma é um erro à parte que vale a pena evitar. Os próprios campos do túnel estão documentados na referência do google_compute_vpn_tunnel.

Artigos relacionados