Один известный dns-хостер преподнёс неожиданный сюрприз, в результате которого b2b-площадка стала потихоньку “недоступна” клиентам потому, что указанные в описании домена NS-серверы (все пять, ага) перестали корректно резолвить имя (server can’t find example.org: REFUSED), мониторинг предупредить об опасности вовремя не смог (как известно метрики мониторинга добавляются по мере возникновения несчастных случаев). К счастью “дно кризиса” пришлось на вечер воскресенья, к несчастью “круглосуточная техническая поддержка” хостера показала себя во всей красе, объяснив что на дворе в общем-то вечер, воскресенье, а ваша проблема до понедельника только ваша.Ну бывает Чудо{вищная} часть на этом закончена, основная часть заметки не о том, что Русский Сервис™ не даст вам расслабиться, а о том, shit happens, страховаться от подобных случаев можно и нужно. Но первым делом нужно узнать о том, что проблема есть. И желательно не от ваших клиентов.

Итак задача – узнать отвечают ли NS-серверы правильным адресом.

  1. #!/bin/sh  
  2. DOMAIN=${DOMAIN:-$1}  
  3. IPADDR=${IPADDR:-$2}  
  4.   
  5. NAMESERVERS=$(dig +short @8.8.8.8 NS $DOMAIN)  
  6.   
  7. if [ -z "${NAMESERVERS}" ]; then  
  8.     echo -999 # "Unknown domain: $DOMAIN"  
  9. else  
  10.     EXPECTEDCOUNT=0  
  11.     ACTUALCOUNT=0  
  12.   
  13.     for ns in $NAMESERVERSdo   
  14.         EXPECTEDCOUNT=$((EXPECTEDCOUNT + 1))  
  15.         ACTUALCOUNT=$((ACTUALCOUNT + `dig +short $DOMAIN @$ns|grep -c ${IPADDR}`))  
  16.     done  
  17.     echo $((EXPECTEDCOUNT - ACTUALCOUNT))  
  18. fi  

Скрипт покажет количество NS-серверов, которые не вернули ожидаемый адрес. При любых ответах отличных от нуля стоит бить тревогу.

Теперь можно добавить в zabbix метрики вида external check или (как сделал я) zabbix trapper и переодически проверять “работоспособность” ваших DNS-ов. В перерывах между проверками можно основательно пересмотреть степень вашего доверия к своему DNS-хостеру, диверсифицировать DNS-хранилище, даже взять dns в свои умелые руки и разместить NS-серверы на подконтрольных машинах в разных частях света.

Доверяете ли вы своему DNS-хостеру ?
Tagged on:     

Leave a Reply