Soluciona problemas de verificaciones de estado

Soluciona problemas de verificaciones de estado mediante el bloqueo de rangos de direcciones IP

En ciertas circunstancias, es útil hacer que las verificaciones de estado fallen a propósito. Es posible que tengas que forzar una VM en particular para que haga fallar las verificaciones de estado como parte de una actividad de solución de problemas, o tal vez necesites que fallen las verificaciones de estado como parte del procedimiento de apagado.

Puedes forzar la falla de una verificación de estado o de estado heredada si bloqueas de manera temporal el acceso a los rangos de IP de verificación de estado. En este ejemplo, se muestra cómo hacer fallar las verificaciones de estado con el software de firewall iptables que se ejecuta en una VM de Linux.

El bloqueo de verificaciones de estado y de estado heredadas nuevas también podría bloquear otras conexiones entrantes nuevas. Este es el caso si la verificación de estado usa el mismo puerto que tu servicio y si las conexiones provienen de los mismos rangos de IP de verificación de estado.

Para que una VM falle los sondeos de verificación de estado y verificación de estado heredada, conéctate y ejecuta un comando iptables como en el siguiente ejemplo, mediante el reemplazo de [HEALTH_CHECK_PORT] por el número de puerto TCP correspondiente. Si necesitas que una VM falle los sondeos a propósito mientras se apaga, puedes agregar comandos iptables como estos a una secuencia de comandos de apagado, seguida de una demora apropiada según el intervalo de verificación y el límite de mal estado de la verificación de estado.

$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 35.191.0.0/16 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset
$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 130.211.0.0/22 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset
$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 209.85.152.0/22 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset
$ sudo iptables -I INPUT 1 -m state --state NEW \
-s 209.85.204.0/22 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset

Para quitar las reglas iptables, ejecuta los siguientes comandos y reemplaza [HEALTH_CHECK_PORT] por el puerto TCP de la verificación de estado.

$ sudo iptables -D INPUT -m state --state NEW \
-s 35.191.0.0/16 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset
$ sudo iptables -D INPUT -m state --state NEW \
-s 130.211.0.0/22 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset
$ sudo iptables -D INPUT -m state --state NEW \
-s 209.85.152.0/22 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset
$ sudo iptables -D INPUT -m state --state NEW \
-s 209.85.204.0/22 -p tcp --destination-port [HEALTH_CHECK_PORT] \
-j REJECT --reject-with tcp-reset