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:
- Use espaços de nomes de rede para criar tabelas de encaminhamento separadas para cada aplicação.
- Aplique o encaminhamento baseado em políticas à VM da sua interface para direcionar o tráfego com base nas portas de destino.
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:
Estabeleça ligação à VM que tem a sua interface do Private Service Connect.
Encontre o nome do SO convidado da sua interface do Private Service Connect.
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
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.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.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.
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.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
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
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:
Certifique-se de que as regras de firewall estão configuradas para permitir tráfego de
ICMP
entrada nas suas VMs de destino.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.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.
Estabeleça ligação à VM da interface do Private Service Connect.
Se o comando
iproute2
não estiver disponível, instale-o.Certifique-se de que consegue escrever no seguinte ficheiro:
/etc/iproute2/rt_tables
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
.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.
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.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.Para verificar se um pacote é encaminhado para a VM correta com base na porta de destino, faça o seguinte:
- Crie VMs de teste nas redes do produtor e do consumidor que usam o mesmo endereço IP do intervalo sobreposto.
- 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.
- Certifique-se de que as regras de firewall estão configuradas para permitir o tráfego HTTP para as suas VMs de teste.
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.
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.