Faça a gestão da sobreposição de destinos

Esta página descreve como os administradores de rede do produtor podem gerir a sobreposição de destinos numa rede da nuvem virtual privada (VPC) que usa uma interface do Private Service Connect.

Google Cloud Garante que os intervalos de endereços IP das sub-redes atribuídas a interfaces de rede na mesma instância de máquina virtual (VM) não podem ter intervalos de endereços IP sobrepostos. No entanto, as sub-redes nas redes VPC do consumidor e do produtor podem sobrepor-se, conforme mostrado na figura 1. Quando usar uma interface do Private Service Connect com intervalos de endereços IP de destino sobrepostos, é necessária uma configuração adicional para garantir que o tráfego atinge o destino correto na rede pretendida.

Os comandos descritos nesta página mostram como atualizar temporariamente o encaminhamento para uma VM que usa o sistema operativo Debian. Para atualizar permanentemente a VM ou configurar uma VM com um sistema operativo diferente, consulte a documentação pública do sistema operativo.

Subnet-a numa rede VPC do produtor sobrepõe-se a subnet-c numa rede VPC do consumidor porque ambas as sub-redes usam o mesmo intervalo de endereços IP. Uma VM de produção tem de conseguir alcançar 10.0.1.5 em ambas as redes.

Pode gerir intervalos de endereços IP de destino sobrepostos das seguintes formas, descritas detalhadamente nesta página:

Também pode usar as seguintes abordagens para gerir a sobreposição de destinos, mas não são descritas nesta página:

  • Use uma biblioteca de sockets e bind() para controlar o encaminhamento.
  • Use um espaço de endereços IP completamente não sobreposto para a rede do produtor.
  • Se os endereços IP sobrepostos no lado do produtor forem apenas para pontos finais da API originais, pode configurar o acesso privado Google para anfitriões no local.
  • Use o encaminhamento e roteamento virtuais (VRF) para isolar espaços de endereços IP sobrepostos. Atribua uma instância de VRF a cada interface do Private Service Connect. Configure rotas predefinidas para cada instância de VRF para garantir que o tráfego atinge o destino pretendido.
  • Use o eBPF para personalizar regras de encaminhamento avançadas com base em critérios que não sejam o endereço IP. Esta abordagem é recomendada para casos em que as opções anteriores não são viáveis.

Faça a gestão da sobreposição de endereços de destino através da utilização de espaços de nomes de rede

Pode gerir a sobreposição de endereços de destino através de espaços de nomes de rede. Esta abordagem funciona bem quando algumas aplicações numa VM de produtor só precisam de aceder a cargas de trabalho de consumidor e outras aplicações na VM de produtor só precisam de aceder a cargas de trabalho de produtor.

Para gerir a sobreposição de endereços de destino através de espaços de nomes de rede, faça o seguinte:

  1. Estabeleça ligação à VM que tem a sua interface do Private Service Connect.

  2. Encontre o nome do SO convidado da sua interface do Private Service Connect.

  3. Para criar um espaço de nomes de rede para tráfego associado ao consumidor, use o seguinte comando:

    sudo ip netns add consumer-ns
    
  4. Mova a interface do Private Service Connect para o espaço de nomes de rede do consumidor. Execute os seguintes comandos individualmente:

    sudo ip link set OS_INTERFACE_NAME netns consumer-ns
    
    sudo ip netns exec consumer-ns ip link set OS_INTERFACE_NAME up
    

    Substitua OS_INTERFACE_NAME pelo nome do SO convidado da interface do Private Service Connect que encontrou num passo anterior.

  5. Restaure o endereço IP da interface do Private Service Connect:

    sudo ip netns exec consumer-ns ip addr add INTERFACE_IP/32 dev OS_INTERFACE_NAME
    

    Substitua INTERFACE_IP pelo endereço IP da sua interface do Private Service Connect.

  6. Valide as alterações à interface do Private Service Connect:

    sudo ip netns exec consumer-ns ip a
    

    Verifique se o nome do SO convidado da interface do Private Service Connect está listado no resultado do comando. Verifique se a interface tem o endereço IP correto.

  7. Adicione um trajeto ao endereço IP do gateway:

    sudo ip netns exec consumer-ns ip route add GATEWAY_IP dev OS_INTERFACE_NAME scope link
    

    Substitua GATEWAY_IP pelo endereço IP do gateway predefinido para a sub-rede da interface do Private Service Connect.

  8. Adicione uma rota predefinida para a sua interface do Private Service Connect:

    sudo ip netns exec consumer-ns ip route add default via GATEWAY_IP dev OS_INTERFACE_NAME
    
  9. Valide a tabela de encaminhamento para o espaço de nomes consumer-ns:

    sudo ip netns exec consumer-ns ip route
    

    Certifique-se de que a tabela de encaminhamento tem uma entrada do seguinte formulário:

    default via GATEWAY_IP dev OS_INTERFACE_NAME
    
  10. Para verificar se a sua interface consegue alcançar as VMs em cada parte do intervalo de endereços IP sobrepostos, faça o seguinte:

    1. Certifique-se de que as regras de firewall estão configuradas para permitir tráfego de ICMPentrada nas suas VMs de destino.

    2. Envie um ping ICMP da VM da sua interface para uma VM de consumidor que esteja no intervalo de endereços IP sobreposto. Use o seu espaço de nomes do consumidor:

      sudo ip netns exec consumer-ns ping CONSUMER_IP_ADDRESS
      

      Substitua CONSUMER_IP_ADDRESS pelo endereço IP de uma VM de consumidor do intervalo de endereços IP sobreposto.

    3. Envie um ICMP ping da VM da sua interface para uma VM de produtor que esteja no intervalo de endereços IP sobreposto. Use o espaço de nomes predefinido:

      ping PRODUCER_IP_ADDRESS
      

      Substitua PRODUCER_IP_ADDRESS pelo endereço IP de uma VM de produção do intervalo de endereços IP sobreposto.

Faça a gestão da sobreposição de endereços de destino com o encaminhamento baseado em políticas

Pode gerir a sobreposição de endereços de destino configurando o encaminhamento baseado em políticas no sistema operativo da VM da sua interface. Esta abordagem funciona bem quando a mesma aplicação precisa de aceder a cargas de trabalho que se encontram nas redes VPC do consumidor e do produtor, mas tem de repetir o procedimento para cada porta diferente que quer alcançar no intervalo de IPs sobreposto.

Quando configura o encaminhamento baseado em políticas para gerir a sobreposição de destinos, escolhe as portas de destino a usar para as aplicações de consumidor. O tráfego destinado a uma destas portas flui através da interface do Private Service Connect para a sub-rede do consumidor, enquanto o outro tráfego flui através da interface predefinida para a sub-rede do produtor.

  1. Estabeleça ligação à VM da interface do Private Service Connect.

  2. Se o comando iproute2 não estiver disponível, instale-o.

  3. Certifique-se de que consegue escrever no seguinte ficheiro: /etc/iproute2/rt_tables

  4. Crie uma tabela de rotas. Adicione uma rota predefinida para a sua interface do Private Service Connect:

    echo "200 pscnet" >> /etc/iproute2/rt_tables \
    sudo ip route add default dev OS_INTERFACE_NAME table pscnet
    

    Substitua OS_INTERFACE_NAME pelo nome do SO convidado da sua interface do Private Service Connect. Por exemplo, ens5.

  5. Adicione uma rota ao intervalo de sub-rede do consumidor sobreposto através do gateway predefinido:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME table pscnet
    

    Substitua o seguinte:

    • CONSUMER_SUBNET_RANGE: o intervalo de endereços IP da sua sub-rede de consumo.
    • GATEWAY_IP: o endereço IP do gateway predefinido para a sub-rede da interface do Private Service Connect.
  6. Atualize a tabela de rotas para que os pacotes de saída desta VM usem o endereço IP da interface como endereço IP de origem:

    sudo ip route add GATEWAY_IP src INTERFACE_IP dev OS_INTERFACE_NAME table pscnet
    

    Substitua INTERFACE_IP pelo endereço IP da sua interface do Private Service Connect.

  7. Adicione uma regra de IP que se aplique a todo o tráfego destinado à porta de destino da sua aplicação de consumidor:

    sudo ip rule add dport CONSUMER_PORT table pscnet
    

    Substitua CONSUMER_PORT pela porta que configurou para o tráfego para a sua VM de consumidor.

  8. Para verificar se um pacote é encaminhado para a VM correta com base na porta de destino, faça o seguinte:

    1. Crie VMs de teste nas redes do produtor e do consumidor que usam o mesmo endereço IP do intervalo sobreposto.
    2. Configure um servidor HTTP em cada VM de teste. Configure a VM de teste do consumidor para ouvir na porta que configurou para a aplicação do consumidor. Configure a VM de teste do produtor para ouvir numa porta diferente da que configurou para a aplicação do consumidor.
    3. Certifique-se de que as regras de firewall estão configuradas para permitir o tráfego HTTP para as suas VMs de teste.
    4. Usando a porta que configurou para a sua aplicação de consumidor, faça um pedido GET para o endereço IP de teste e, em seguida, verifique se acedeu à instância correta:

      curl TEST_IP_ADDRESS:CONSUMER_PORT
      

      Substitua o seguinte:

      • TEST_IP_ADDRESS: o endereço IP das suas VMs de teste.
      • CONSUMER_PORT: a porta da sua aplicação de consumo.
    5. Usando a porta que configurou para a VM de teste de produção, faça um pedido GET para o endereço IP de teste e, em seguida, verifique se chegou à instância correta:

      curl IP_ADDRESS:PRODUCER_PORT
      

      Substitua o seguinte:

      • IP_ADDRESS: o endereço IP das suas VMs de teste.
      • PRODUCER_PORT: a porta que configurou para a VM de teste de produção.