Solucionar problemas de configuración
Esta guía puede ayudarle a resolver problemas habituales con Cloud NAT.
Problemas más comunes
Las VMs pueden acceder a Internet de forma inesperada sin Cloud NAT
Si tus instancias de máquina virtual o de contenedor pueden acceder a Internet sin Cloud NAT, pero no quieres que lo hagan, comprueba si se da alguno de los siguientes problemas:
Determina si la interfaz de red de la VM tiene una dirección IP externa. Si la interfaz de red tiene asignada una dirección IP externa, Google Cloud realiza automáticamente una NAT de uno a uno para los paquetes cuyas fuentes coincidan con la dirección IP interna principal de la interfaz. Para obtener más información, consulta las especificaciones de Cloud NAT.
Para determinar si una VM tiene una dirección IP externa, consulta el artículo sobre cómo cambiar o asignar una dirección IP externa a una instancia ya creada.
Asegúrate de que tu clúster de Google Kubernetes Engine (GKE) sea privado. Cada VM de nodo de un clúster no privado tiene una dirección IP externa, por lo que cada nodo puede usar rutas en tu red de nube privada virtual (VPC) cuya siguiente parada sea la pasarela de Internet predeterminada sin depender de Cloud NAT. Para obtener más información, incluido cómo interactúan los clústeres no privados con las pasarelas de Cloud NAT, consulta Interacción con Compute Engine.
Lista las rutas de tu red de nube privada virtual y busca las que puedan proporcionar conectividad a Internet a través de un siguiente salto distinto de la pasarela de Internet predeterminada. Por ejemplo:
Las rutas estáticas cuyos siguientes saltos son máquinas virtuales, balanceadores de carga de red internos de tipo pasarela o túneles de Cloud VPN pueden proporcionar conectividad a Internet de forma indirecta. Por ejemplo, las máquinas virtuales de salto siguiente o las máquinas virtuales de backend de un balanceador de carga de red interno de tipo pasarela pueden tener direcciones IP externas o un túnel de Cloud VPN puede conectarse a una red que ofrezca acceso a Internet.
Las rutas dinámicas aprendidas de las redes on-premise por los routers de Cloud Router de tu red de VPC pueden conectarse a una red que ofrezca acceso a Internet.
Ten en cuenta que otras rutas personalizadas de tu red VPC pueden tener prioridades más altas que las rutas cuyos saltos siguientes sean pasarelas de Internet predeterminadas. Para obtener información sobre cómoGoogle Cloud evalúa las rutas, consulta la aplicabilidad y el orden de las rutas.
No se generan registros
- Verifica que el registro de NAT esté habilitado.
Comprueba que la vista de los registros no esté filtrando los registros que buscas. Para ver las instrucciones, consulta Ver registros.
Asegúrate de que ninguna regla del cortafuegos esté bloqueando el tráfico. Las reglas de cortafuegos que bloquean el tráfico de salida se aplican antes de que el tráfico se envíe a la pasarela NAT. Puedes usar el almacenamiento de registros de reglas de cortafuegos para ver si tus reglas de salida personalizadas están bloqueando el tráfico saliente.
Consulte los tipos de Cloud NAT. Es posible que NAT no gestione el destino de su tráfico.
Se excluyen determinados registros
Verifica que el registro de NAT esté habilitado y que tu filtro de registros no excluya los registros que quieras conservar. Puedes quitar un filtro de registros para que no se excluya nada.
Cloud NAT no registra todos los eventos. Durante los periodos de mucho tráfico de salida, el registro de NAT se limita de forma proporcional al tipo de máquina de la VM. Es posible que se omitan traducciones o registros de errores, y no se puede determinar qué se omite durante la limitación.
Paquetes descartados con el motivo "Sin recursos"
Si observas una pérdida de paquetes en las VMs que usan Cloud NAT, puede deberse a que no hay suficientes tuplas de dirección IP de origen y puerto de origen de NAT disponibles para que las VMs las usen en el momento de la pérdida de paquetes (agotamiento de puertos). Una quíntupla (dirección IP de origen de NAT, puerto de origen y una tupla de destino) no se puede reutilizar en el tiempo de espera TIME_WAIT de TCP.
Si no hay suficientes tuplas NAT disponibles, el dropped_sent_packets_count
motivo es
OUT_OF_RESOURCES. Para obtener más información sobre las métricas, consulta Usar métricas de instancias de VM.
Consulta Reducir el uso de puertos para ver cómo hacerlo.
Si usas la asignación dinámica de puertos, consulta la siguiente sección para ver cómo reducir la pérdida de paquetes cuando se usa esta asignación.
Paquetes descartados cuando se configura la asignación dinámica de puertos
La asignación dinámica de puertos detecta cuándo una VM está a punto de quedarse sin puertos y duplica el número de puertos asignados a la VM. De esta forma, se asegura que no se desperdicien puertos, pero pueden perderse paquetes mientras aumenta el número de puertos asignados.
Para reducir el número de paquetes perdidos, ten en cuenta lo siguiente:
Si puedes aumentar las conexiones más lentamente, Cloud NAT tendrá más tiempo para asignar más puertos.
Si las VMs están estableciendo conexiones TCP, puedes configurar las VMs con un valor más alto para
tcp_syn_retries, lo que da al sistema más tiempo para establecer la conexión y aumenta las probabilidades de que la conexión se realice correctamente.Por ejemplo, en las máquinas virtuales Linux, puedes ver la configuración actual:
sysctl net.ipv4.tcp_syn_retries
Si es necesario, puedes aumentar el valor de este ajuste:
sudo sysctl -w net.ipv4.tcp_syn_retries=NUM
Si tienes cargas de trabajo con picos de actividad y necesitas asignar más puertos rápidamente, puede que tengas que ajustar el número mínimo de puertos por VM. Consulta el uso de tus puertos y determina el número mínimo de puertos por VM adecuado.
Paquetes descartados por conflicto de independencia de endpoint
Si observas una pérdida de paquetes en las máquinas virtuales que usan NAT público y tienes activada la asignación independiente del endpoint, es posible que la pérdida de paquetes se deba a un conflicto independiente del endpoint. Si es así, el
dropped_sent_packets_count
motivo es
ENDPOINT_INDEPENDENCE_CONFLICT. Para obtener más información sobre las métricas, consulta Usar métricas de instancias de VM.
Para reducir las probabilidades de que se produzcan conflictos independientes de los endpoints, puedes usar las siguientes técnicas:
Desactiva Asignación independiente de puntos finales. De esta forma, la nueva conexión de una dirección IP y un puerto de origen determinados puede usar una dirección IP y un puerto de origen de NAT diferentes a los que usaba antes. Habilitar o inhabilitar la asignación independiente de puntos finales no interrumpe las conexiones establecidas.
Aumenta el número mínimo predeterminado de puertos NAT por instancia de VM para que el procedimiento de reserva de puertos pueda asignar más tuplas de dirección IP de origen y puerto de origen NAT a cada VM de cliente. De esta forma, se reduce la probabilidad de que se asignen la misma dirección IP de origen de NAT y la misma tupla de puerto de origen a dos o más tuplas de dirección IP de cliente y puerto de origen efímero.
Comprueba cuántos puertos de origen efímeros se están usando:
En el caso de las VMs Linux:
netstat -an | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | wc -l
En las máquinas virtuales de Windows: