O seu cliente IKEv2 pode pedir um endereço interno ao gateway, e é o gateway que decide o que devolver. No strongSwan, esse pedido é a definição vips, e continua a ser um pedido mesmo quando escreve um endereço específico nela. O guia abaixo configura o pedido, carrega-o e lê o que voltou, porque estes três passos falham de três formas diferentes. Nenhum deles encurta por escrever com mais força.

O que o vips pede e o que não pode prometer

O vips pertence a uma definição de ligação e pede um endereço virtual ao respondedor. O guia de endereços virtuais do strongSwan é explícito ao dizer que a resposta pode ser outro endereço, ou nada de todo, e é essa a frase que as pessoas saltam quando escrevem um valor e esperam que ele apareça. O pedido continua a valer a pena, porque o que verifica é a resposta. Trate a definição como uma instrução para perguntar, não como a configuração do resultado.

Pedir 0.0.0.0 solicita qualquer endereço virtual IPv4 disponível, o que normalmente está certo quando o valor exato não importa. Pedir um endereço específico é uma sugestão para o gateway, não uma exigência sobre ele.

O fragmento swanctl e onde fica

A definição fica dentro do bloco da ligação, não num ficheiro próprio nem num perfil do sistema operativo. Este fragmento isolado mostra a forma:

connections {
  net {
    local_addrs = 192.0.2.10
    remote_addrs = 203.0.113.5
    vips = 10.77.0.31
    children {
      net { local_ts = dynamic remote_ts = 10.77.0.0/24 }
    }
  }
}

Carregue-o com o ficheiro que possui a ligação, depois inicie a ligação e leia o resultado. Um fragmento colado na secção errada produz um erro de análise ou, pior, uma ligação que carrega sem o pedido que julgava ter feito. Execute os três comandos por ordem e guarde a saída.

swanctl --load-all --file /etc/swanctl/swanctl.conf
swanctl --initiate --child net
swanctl --list-sas

local_ts escolhe tráfego, não cria um endereço

local_ts nomeia o conjunto de tráfego que a SA filha protege; não coloca um endereço numa interface. Uma vez negociado um IP virtual, o strongSwan deixa de usar o seu seletor dinâmico predefinido e passa a usar o endereço concedido. Se fixar o seletor a um endereço literal, está a afirmar algo que o gateway pode não ter concedido, e é por isso que a falha aparece como uma SA a funcionar com tráfego que não vai a lado nenhum. O seletor descreve tráfego, enquanto a atribuição vem da outra troca.

A outra forma de obter um endereço interno estável é possuí-lo localmente. Coloque o endereço numa interface antes de o túnel subir, aponte o seletor para o que já existe e organize o par e a rota à volta disso.

Nesse desenho nada é negociado, por isso nada pode ser reatribuído, e essa é a troca: determinismo em vez de fazer o trabalho de endereçamento por si. É um mecanismo diferente, não uma variante de vips, e por isso os dois não devem ser misturados numa só ligação. Um seletor fixado ao lado de um endereço negociado é uma ligação que funciona até o gateway entregar outra coisa.

Verifique o que o respondedor realmente atribuiu

Leia a lista de SA para encontrar o endereço que o gateway concedeu, e depois confirme que o endereço existe na interface. Se os dois não concordarem, o túnel está levantado e o tráfego não vai para onde pensa. Um endereço concedido que nunca chega à interface é a falha mais confusa desta sequência, porque cada metade parece correta sozinha.

Mantenha quatro endereços separados nas notas: o endereço interno pedido, o concedido, o endereço LAN da máquina e a saída pública que um site reporta. Pertencem a camadas diferentes e aparecem em locais diferentes. Um guia que registe os quatro é um que outra pessoa pode seguir sem perguntar qual endereço queria dizer. Volte a lê-los após cada recarregamento, porque o valor concedido é o único que descreve o túnel vivo.

Mantenha o desenho estático à parte

Se precisar de um endereço interno fixo, organize a reserva no gateway e deixe o pedido do cliente como pedido. Misturar um seletor fixado com um endereço negociado dá uma ligação que funciona até o gateway atribuir outra coisa. Anote a regra de reserva ao lado da ligação, porque é a parte que um colega não consegue inferir do ficheiro de configuração. Assim, um novo cliente herda a regra em vez de a redescobrir.

No cliente Mac integrado não existe nenhum destes nomes de opção. Use a atribuição ou reserva que o gateway oferece e o perfil que o operador publica, e trate qualquer valor do lado do cliente como uma sugestão até ter relido a atribuição. Reverter significa remover a linha vips e recarregar, o que o devolve ao que o gateway atribui por predefinição.

Artigos relacionados