Dépanner des vérifications d'état

Dépanner les vérifications d'état en bloquant les plages d'adresses IP

Dans certains cas, il peut être utile de provoquer l'échec des vérifications d'état. Cette opération est parfois nécessaire lors d'une opération de dépannage d'une VM ou dans le cadre de sa procédure d'arrêt.

Pour forcer l'échec d'une vérification d'état existante ou ancienne, vous pouvez bloquer temporairement l'accès aux plages d'adresses IP qui lui sont associées. Cet exemple montre comment forcer l'échec des vérifications d'état à l'aide du logiciel de pare-feu iptables exécuté sur une machine virtuelle Linux.

Le blocage des vérifications d'état existantes et anciennes peut également bloquer d'autres connexions entrantes. C'est le cas si votre vérification d'état utilise le même port que votre service, et si les connexions proviennent des mêmes plages d'adresses IP que celles de la vérification d'état.

Pour provoquer l'échec des vérifications d'état existantes et anciennes d'une VM, connectez-vous à celle-ci et exécutez une commande iptables comme dans l'exemple suivant, en remplaçant [HEALTH_CHECK_PORT] par le numéro de port TCP approprié. Vous pouvez ajouter des commandes iptables comme celles-ci à un script d'arrêt, suivies d'un délai approprié en fonction de l'intervalle d'exécution de la vérification périodique et du seuil non sanitaire.

$ 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

Pour supprimer les règles iptables, exécutez les commandes suivantes, en remplaçant [HEALTH_CHECK_PORT] par le port TCP de la vérification d'état.

$ 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