Тест доступности хоста NAGIOS для хоста, который не может быть ПРОВЕРЕН С ПОМОЩЬЮ PING-ЗАПРОСОВ, не будет говорить со мной, но может быть traceroute'd

Часть моего сетевого имущества имеет довольно важную зависимость от хоста, наличие которого трудно проверить. У меня есть много хостов позади него, и у моего поставщика NAGIOS VPS иногда есть проблемы маршрутизации, которые отключают поставщика, где все эти хосты расположены. Когда это недоступно, я очень предпочел бы, чтобы хосты позади него показали UNAVAILABLE чем DOWN, потому что они не снижаются.

Но его доступность трудно обнаружить, потому что она не может быть ПРОВЕРЕНА С ПОМОЩЬЮ PING-ЗАПРОСОВ

[me@nagios systems]$ ping -c 1 -w 1 205.251.232.153
[...]
1 packets transmitted, 0 received, 100% packet loss, time 1000ms

и, кажется, нет никаких сетевых служб на нем, которые отвечают на запросы:

[me@nagios systems]$ nmap -P0 -sT 205.251.232.153
[...]
All 1000 scanned ports on 205.251.232.153 are filtered

Это действительно, однако, участвует в и отвечает на traceroutes, который привел меня обнаруживать, что это возвратит ICMP-port-unreachable, когда я попытаюсь говорить с избранным диапазоном портов UDP. Это tcpdump вывод, в то время как я делаю echo foo|nc -u 205.251.232.197 33459:

[me@nagios systems]$ sudo tcpdump -n -n -i p1p1 host 205.251.232.197
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p1p1, link-type EN10MB (Ethernet), capture size 65535 bytes
15:04:01.278269 IP a.b.c.d.36139 > 205.251.232.197.33459: UDP, length 4
15:04:01.448659 IP 205.251.232.197 > a.b.c.d: ICMP 205.251.232.197 udp port 33459 unreachable, length 36

Таким образом, мне кажется, что то, в чем я нуждаюсь, является тестом, который испускает пакет UDP к хосту и порту и рассматривает ICMP-port-unreachable как доказательство успеха (слышащий, что ничто не составляет отказ). Кто-либо знает о способе сделать это? Как другие решают сопоставимые контрольные проблемы?

0
задан 19 September 2014 в 17:16
2 ответа

Я наконец и с опозданием понял, что если я смогу трассировать через хост, я также смогу трассировать до этого хоста, и при тестировании , подтвердил, что это действительно так.

Все плагины, связанные с traceroute, которые я смог найти в таких местах, как NAGIOS exchange , более сложны, чем это; они хотят проверить такие вещи, как идентификация первого или второго перехода в цепочке и т. д. Все, что мне нужно, это плагин, который проверяет, могу ли я проследить маршрут до хоста и получить ответ. Я нашел плагин, который (примерно) сделал это, и придал ему форму для использования с Linux (в частности, CentOS 6); он появляется ниже на тот случай, если он кому-то пригодится.

#!/bin/sh
#set -vx

################################################################################
# AUTHOR: Vladimir Vuksan
# E-mail: Check http://vuksan.com/linux/
# License: GPL
# changes by Tom Yates, http://www.teaparty.net/
################################################################################
if [ $# -ne 1 ]; then
        echo "Usage: $0 <ip.address>"
        exit;
fi

IP=${1}

TRACEROUTE=`/bin/traceroute -n ${IP} 2>&1 | grep "${IP} "`
RESULT=`echo $TRACEROUTE | grep -c ms`

if [ $RESULT -eq 1 ]; then
        echo TRACERT OK: `echo $TRACEROUTE | cut -f4- -d" "`
        exit 0
else
        echo TRACERT CRITICAL: Host unreachable
        exit 2
fi

Этот хост с тех пор несколько раз становился недоступным, и мой NAGIOS поступил правильно: все хосты на удаленной стороне предупредили как НЕДОСТУПЕН, а не ВЫКЛЮЧЕНЫ.

0
ответ дан 5 December 2019 в 13:17

Независимо от того, какой протокол вы используете для проверки доступности хостов, если есть проблемы с маршрутизацией к хосту, он будет отображаться как неработающий. Если вы хотите проверить доступность хостов и не хотите включать ICMP, вы можете выполнить check_tcp или check_udp для любой из запущенных там служб. Например. check_tcp -p 80 для HTTP или check_tcp -p 22 для ssh.

Хотя, похоже, более серьезная проблема, которую вы пытаетесь решить, - это предупреждение , а не для хостов за шлюзом, когда шлюз недоступен. Это можно решить, указав зависимости в nagios. Хосты (или службы) за шлюзом должны зависеть от шлюза. Затем, если шлюз не работает, он не будет предупреждать вас о других хостах. ( http://nagios.sourceforge.net/docs/3_0/dependencies.html )

0
ответ дан 5 December 2019 в 13:17

Теги

Похожие вопросы