Gestisci la sovrapposizione delle destinazioni

Questa pagina descrive in che modo gli amministratori di rete del producer possono gestire che si sovrappongono in una rete Virtual Private Cloud (VPC) che utilizza un'interfaccia Private Service Connect.

Google Cloud assicura che gli intervalli di indirizzi IP delle subnet assegnate alle interfacce di rete sulla stessa istanza di macchina virtuale (VM) non può che si sovrappongono a intervalli di indirizzi IP. Tuttavia, le subnet in consumer e producer Le reti VPC possono sovrapporsi, come mostrato nella Figura 1. Quando utilizzi un'interfaccia di Private Service Connect con sovrapposizioni di indirizzi IP di destinazione, è necessaria un'ulteriore configurazione per che il traffico raggiunga la destinazione corretta nella rete prevista.

I comandi descritti in questa pagina mostrano come aggiornare temporaneamente il routing per un VM che utilizza il sistema operativo Debian. Per aggiornare definitivamente la VM oppure per per configurare una VM che ha un sistema operativo diverso, documentazione pubblica del sistema.

Figura 1. Subnet-a in un produttore La rete VPC si sovrappone a subnet-c in una rete VPC consumer perché entrambe le subnet utilizzano lo stesso di indirizzi IP esterni. Una VM producer deve essere in grado di raggiungere 10.0.1.5 in entrambe le reti.

Puoi gestire gli intervalli di indirizzi IP di destinazione sovrapposti nei seguenti modi: descritti dettagliatamente in questa pagina:

Gli approcci riportati di seguito possono essere utilizzati anche per gestire la sovrapposizione delle destinazioni, ma non sono descritte in questa pagina:

  • Utilizza una libreria socket e bind() per controllare il routing.
  • Utilizza uno spazio di indirizzi IP completamente non sovrapposto per la rete del producer.
  • Se gli indirizzi IP sovrapposti sul lato producer sono solo indirizzi IP proprietari Endpoint API, puoi configurare l'accesso privato Google per gli host on-premise.
  • Utilizzare routing e forwarding virtuale (VRF) per isolare gli indirizzi IP che si sovrappongono spazi di archiviazione. Assegna un'istanza VRF a ogni Interfaccia di Private Service Connect. Configura route predefinite per ogni istanza VRF per garantire che il traffico raggiunga la destinazione prevista.
  • Utilizza eBPF per personalizzare le regole di routing avanzate in base a criteri diversi dall'indirizzo IP. Questo approccio è consigliato i casi in cui le opzioni precedenti non sono attuabili.

Gestisci la sovrapposizione degli indirizzi di destinazione utilizzando gli spazi dei nomi di rete

Puoi gestire la sovrapposizione degli indirizzi di destinazione utilizzando gli spazi dei nomi di rete. Questo funziona bene quando alcune applicazioni su una VM producer devono l'accesso ai carichi di lavoro consumer e ad altre applicazioni sulla VM producer per accedere ai carichi di lavoro dei producer.

Per gestire la sovrapposizione degli indirizzi di destinazione utilizzando gli spazi dei nomi di rete, seguenti:

  1. Connettiti alla VM che la tua interfaccia Private Service Connect.

  2. Esegui questo comando:

    ip address
    

    Nell'elenco delle interfacce di rete, individua e prendi nota del nome del sistema operativo guest per ad esempio l'interfaccia di Private Service Connect, ens5. Questo nome è associato al tuo Indirizzo IP dell'interfaccia di Private Service Connect.

  3. Crea uno spazio dei nomi di rete per il traffico associato al consumer:

    sudo ip netns add consumer-ns
    
  4. Sposta l'interfaccia di Private Service Connect nel consumer spazio dei nomi di rete. Esegui i seguenti comandi singolarmente:

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

    Sostituisci OS_INTERFACE_NAME con il nome del sistema operativo guest per l'interfaccia di Private Service Connect trovato nel passaggio 2, ad esempio ens5.

  5. Ripristina l'indirizzo IP dell'interfaccia Private Service Connect:

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

    Sostituisci INTERFACE_IP con l'indirizzo IP del tuo Interfaccia di Private Service Connect.

  6. Convalida le modifiche a Private Service Connect dell'interfaccia:

    sudo ip netns exec consumer-ns ip a
    

    Assicurati che il nome del sistema operativo guest di Private Service Connect è elencata nell'output del comando. Assicurati che l'interfaccia ha l'indirizzo IP corretto.

  7. Aggiungi una route all'indirizzo IP del gateway:

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

    Sostituisci GATEWAY_IP con Indirizzo IP del gateway predefinito per della subnet dell'interfaccia Private Service Connect.

  8. Aggiungi una route predefinita per l'interfaccia di Private Service Connect:

    sudo ip netns exec consumer-ns ip route add default via GATEWAY_IP dev OS_INTERFACE_NAME
    
  9. Convalida la tabella di routing per lo spazio dei nomi consumer-ns:

    sudo ip netns exec consumer-ns ip route
    

    Assicurati che la tabella di routing abbia il seguente formato:

    default via GATEWAY_IP dev OS_INTERFACE_NAME
    
  10. Per verificare che l'interfaccia possa raggiungere le VM in ogni parte dell'infrastruttura Intervallo di indirizzi IP:

    1. Assicurati che le regole firewall siano configurati per consentire il traffico ICMP in entrata verso le VM di destinazione.

    2. Invia un ping ICMP dalla VM della tua interfaccia a una VM consumer che si trova in nell'intervallo di indirizzi IP sovrapposti. Utilizza lo spazio dei nomi consumer:

      sudo ip netns exec consumer-ns ping CONSUMER_IP_ADDRESS
      

      Sostituisci CONSUMER_IP_ADDRESS con l'indirizzo IP di una VM consumer da un intervallo di indirizzi IP sovrapposto.

    3. Invia un ping ICMP dalla VM della tua interfaccia a una VM producer che si trova in nell'intervallo di indirizzi IP sovrapposti. Utilizza lo spazio dei nomi predefinito:

      ping PRODUCER_IP_ADDRESS
      

      Sostituisci PRODUCER_IP_ADDRESS con l'indirizzo IP di una VM producer dall'intervallo di indirizzi IP sovrapposti.

Gestisci la sovrapposizione degli indirizzi di destinazione con il routing basato su criteri

Puoi gestire la sovrapposizione degli indirizzi di destinazione configurando il routing basato su criteri sul sistema operativo della VM della tua interfaccia. Questo approccio funziona bene quando la stessa applicazione deve accedere a carichi di lavoro le reti VPC consumer e producer, ma devi ripetere per ogni porta che desideri raggiungere nello spazio Intervallo IP.

Quando configuri il routing basato su criteri per gestire la sovrapposizione delle destinazioni, scegli e le porte di destinazione da utilizzare per le applicazioni consumer. Traffico diretto a uno di queste porte passano attraverso il tuo Private Service Connect verso la subnet consumer, mentre il resto del traffico passa attraverso alla subnet del producer.

  1. Connettiti alla VM della tua interfaccia Private Service Connect.

  2. Se il comando iproute2 non è disponibile, installalo.

  3. Assicurati di poter scrivere nel seguente file: /etc/iproute2/rt_tables

  4. Creare una tabella di route. Aggiungi un percorso predefinito per Interfaccia di Private Service Connect:

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

    Sostituisci OS_INTERFACE_NAME con nome del sistema operativo ospite dell'interfaccia di Private Service Connect, per esempio, ens5.

  5. Aggiungi una route all'intervallo di subnet consumer sovrapposto tramite l'intervallo predefinito gateway:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME table pscnet
    

    Sostituisci quanto segue:

    • CONSUMER_SUBNET_RANGE: l'intervallo di indirizzi IP del tuo nella subnet consumer.
    • GATEWAY_IP: il Indirizzo IP del gateway predefinito per la subnet dell'interfaccia Private Service Connect.
  6. Aggiorna la tabella delle route in modo che i pacchetti in uscita da questa VM utilizzino dell'interfaccia come indirizzo IP di origine:

    sudo ip route add GATEWAY_IP src INTERFACE_IP dev OS_INTERFACE_NAME table pscnet
    

    Sostituisci INTERFACE_IP con l'indirizzo IP del tuo Interfaccia di Private Service Connect.

  7. Aggiungi una regola IP che si applichi a tutto il traffico destinato alla destinazione della tua applicazione consumer:

    sudo ip rule add dport CONSUMER_PORT table pscnet
    

    Sostituisci CONSUMER_PORT con la porta a tua disposizione e configurato per il traffico sulla VM consumer.

  8. verifica che un pacchetto sia instradato alla VM corretta in base alla sua destinazione. segui questi passaggi:

    1. Creare VM di test nelle reti producer e consumer che utilizzano entrambi lo stesso indirizzo IP dell'intervallo sovrapposto.
    2. Configurare un server HTTP su ogni VM di test. Configura la VM di test consumer su rimanere in ascolto sulla porta configurata per l'applicazione consumer. Configura la VM di test del producer per l'ascolto su una porta diversa da quella impostata per l'applicazione consumer.
    3. Assicurati che le regole firewall siano configurate su e consentire il traffico HTTP sulle VM di test.
    4. Tramite la porta che hai configurato per l'applicazione consumer, invia una richiesta GET all'indirizzo IP di test e verifica di avere raggiunto l'istanza corretta:

      curl TEST_IP_ADDRESS:CONSUMER_PORT
      

      Sostituisci quanto segue:

      • TEST_IP_ADDRESS: l'indirizzo IP delle VM di test.
      • CONSUMER_PORT: il porto del tuo consumatore un'applicazione.
    5. Tramite la porta che hai configurato per la VM di test di produzione, invia una richiesta GET all'indirizzo IP di test, quindi verifica di aver raggiunto l'istanza corretta:

      curl IP_ADDRESS:PRODUCER_PORT
      

      Sostituisci quanto segue:

      • IP_ADDRESS: l'indirizzo IP delle VM di test.
      • PRODUCER_PORT: la porta per cui hai eseguito la configurazione la VM di test in produzione.