Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ NAT Gateway/ Preguntas frecuentes/ Regla de SNAT/ ¿Qué debo hacer si mi ECS no puede acceder a un servidor en la red pública por el gateway de NAT público?
Actualización más reciente 2023-06-19 GMT+08:00

¿Qué debo hacer si mi ECS no puede acceder a un servidor en la red pública por el gateway de NAT público?

La conexión de TCP puede fallar cuando un ECS accede a un servidor de la red pública con una regla de SNAT. Realice los siguientes pasos para localizar la causa del error:

  1. Ejecute el siguiente comando para comprobar si tcp_tw_recycle está habilitado en el servidor remoto:

    sysctl -a|grep tcp_tw_recycle

    Si tcp_tw_recycle está establecido en 1, tcp_tw_recycle está habilitado.

  2. Ejecute el siguiente comando para comprobar el número de paquetes perdidos del servidor remoto:

    cat /proc/net/netstat | awk '/TcpExt/ { print $21,$22 }'

    Si ListenDrops no se establece en 0, se produce una pérdida de paquetes, es decir, la red está defectuosa.

Solución de problemas

Método 1: Modificación del parámetro del kernel del servidor remoto

  • Ejecute el siguiente comando para modificar temporalmente los parámetros (la modificación no es válida después de reiniciar el servidor):

    sysctl -w net.ipv4.tcp_tw_recycle=0

  • Realice las operaciones siguientes para modificar permanentemente los parámetros:
    1. Modifique el archivo /etc/sysctl.conf:

      vi /etc/sysctl.conf

      Agregue el siguiente contenido al archivo:

      net.ipv4.tcp_tw_recycle=0

    2. Presione Esc, escriba :wq!, guarde el archivo y salga.
    3. Ejecute el siguiente comando para hacer que la modificación surta efecto:

      sysctl -p

Método 2: Modificación del parámetro del kernel del cliente local

  • Para modificar temporalmente los parámetros (la configuración no es válida después de reiniciar el cliente local), configure el parámetro de la siguiente manera:

    sysctl -w net.ipv4.tcp_timestamps=0

  • Realice las operaciones siguientes para modificar permanentemente los parámetros:
    1. Modifique el archivo /etc/sysctl.conf:

      vi /etc/sysctl.conf

      Agregue el siguiente contenido al archivo:

      net.ipv4.tcp_timestamps=0

    2. Presione Esc, escriba :wq!, guarde el archivo y salga.
    3. Ejecute el siguiente comando para hacer que la modificación surta efecto:

      sysctl -p