CentOS 7 con 2 NIC en Google Cloud

CentOS 7 con 2 NIC en Google Cloud

Tengo 2 VPC

  • VPC1: subredes predeterminadas de Google
  • VPC2: subred adicional única no en VPC1

Configuración del servidor (instdual) con nic0 de VPC1 y nic1 de VPC2

IP pública estática en ambas NIC

  • Haga ping desde afuera a IP pública -> VPC1 funcionando
  • Hacer ping desde afuera a IP pública -> VPC2 no funciona

Configure 2 instancias más insta e instb, una solo en VPC1 y otra solo en VPC2

  • Hacer ping desde afuera a IP pública -> VPC1 funcionando (insta)
  • Hacer ping desde afuera a IP pública -> VPC2 funcionando (instb)

  • desde insta puedo hacer ping a instdual nic0

  • desde instb puedo hacer ping a instdual nic1

  • desde insta NO PUEDO hacer ping a la IP privada de nic1

  • desde instb NO PUEDO hacer ping a la IP privada de nic0

Las VPC están conectadas a la red: las rutas se muestran correctas

El firewall establece una regla predeterminada para permitir todo para negar los problemas del firewall.

Básicamente, en el sistema solo puedo acceder a él en la IP pública nic0. no la IP pública de nic1.

Algunas ideas ? Llevo 12 cafés de retraso y veo doble en este momento.

Respuesta1

Esto es lo que faltaba (Ahora funcionando al 100%):

Siga estos pasos para configurar el enrutamiento de políticas para una instancia basada en Linux con múltiples interfaces:

  1. Conéctese a una instancia configurada con múltiples interfaces de red:

gcloud computar ssh multinic-vm

  1. Configure el enrutamiento de políticas con ifconfig para nic1. El siguiente ejemplo supone que GCP ha asignado la dirección IP interna 192.168.0.2 a nic1 y la puerta de enlace es 192.168.0.1.

sudo ifconfig eth1 192.168.0.2 máscara de red 255.255.255.255 transmisión 192.168.0.2 mtu 1430
sudo echo "1 rt1" | sudo tee -a /etc/iproute2/rt_tables # (sudo su - primero si se deniega el permiso)
sudo ip route add 192.168.0.1 src 192.168.0.2 dev eth1
sudo ip route add predeterminado a través de 192.168.0.1 dev eth1 table rt1
sudo ip rule add de la tabla 192.168.0.2/32 rt1
regla sudo ip agregar a la tabla 192.168.0.2/32 rt1

  1. Repita los comandos del paso 2 para interfaces adicionales en la instancia (nic2, nic3.... nic7).

Respuesta2

Google Cloud tiene documentación sobre cómo hacer esto aquí:https://cloud.google.com/vpc/docs/create-use-multiple-interfaces Pero esto carece de información sobre cómo asegurarse de que las interfaces adicionales también funcionen nuevamente después de reiniciar.

Para que las IP externas adicionales sean persistentes, debe asegurarse de que los comandos para activar la política de enrutamiento se ejecuten después de reiniciar, pero solo una vez que se hayan activado las interfaces adicionales. Esto lo hace el cliente dhcp. Entonces, la mejor manera que pude encontrar es poner un script dentro de /etc/dhcp/dhclient-exit-hooks.d/ con esto:

#!/bin/sh
#

if [[ $reason == "REBOOT" || $reason == "BOUND" ]] ; then
    sudo ip route add 192.168.0.1 src 192.168.0.2 dev eth1
    sudo ip route add default via 192.168.0.1 dev eth1 table rt1
    sudo ip rule add from 192.168.0.2/32 table rt1
    sudo ip rule add to 192.168.0.2/32 table rt1
fi

(cambia las IP's por las IP's de tu red interna)

Si también desea poder vincular un servidor (como nginx o httpd) a una de esas IP en el momento del arranque, notará que esto falla porque el servidor se inicia antes de que dhcp-client haya completado su tarea. Una forma de superar esto es permitir que el software se vincule a IP que aún no están activas. Para esto poner

net.ipv4.ip_nonlocal_bind=1

en /etc/sysctl.d/10-policyrouting.conf

información relacionada