Cloudflare предоставляет широкий спектр услуг для улучшения безопасности и производительности веб-сайтов. Однако, по мере развития их сети, IP-адреса могут меняться, что делает важным наличие мониторинга для отслеживания обновлений.
В этой статье мы рассмотрим процесс настройки мониторинга актуальных IP-адресов Cloudflare в системе мониторинга Zabbix.
Шаг 1: Создание bash скрипта
Для начала нам нужно создать bash скрипт, который будет проверять обновления IP-адресов Cloudflare. Этот скрипт загружает файл с IP-адресами, сравнивает его с локальной копией и возвращает соответствующий код в зависимости от результатов проверки.
Локальную копию файла IP-адресов можно загрузить на сервер Zabbix командой:
su zabbix
cd $HOME
wget https://www.cloudflare.com/ips-v4
Содержимое скрипта cf-check-ip.sh:
#!/bin/bash
# Path to the local copy of the file
LOCAL_FILE="$HOME/ips-v4"
# URL to download the new version of the file
REMOTE_URL="https://www.cloudflare.com/ips-v4"
# Downloading the file using wget with timestamping parameter
wget --timestamping "$REMOTE_URL" -P /tmp >/dev/null 2>&1
# Checking if the download was successful
if [ $? -eq 0 ]; then
# Calculating the MD5 hash of the local file
LOCAL_MD5=$(md5sum "$LOCAL_FILE" | awk '{print $1}')
# Calculating the MD5 hash of the downloaded file
REMOTE_MD5=$(md5sum "/tmp/ips-v4" | awk '{print $1}')
# Comparing the hash sums of files to determine if the file has been updated
if [ "$LOCAL_MD5" = "$REMOTE_MD5" ]; then
#echo "The file on the server has not changed."
echo "0"
exit 0
else
#echo "The file on the server has been updated."
echo "1"
exit 1
fi
else
# In case of an error during download
#echo "Error downloading the file."
echo "2"
exit 1
fi
Шаг 2: Настройка Zabbix
После создания bash скрипта мы переходим к настройке мониторинга в системе Zabbix. Мы импортируем шаблон, который будет использоваться для мониторинга Cloudflare.
Содержимое шаблона zbx_cf_check_ip.yaml:
zabbix_export:
version: '6.0'
date: '2024-03-05T08:03:58Z'
groups:
-
uuid: 7df96b18c230490a9a0a9e2307226338
name: Templates
templates:
-
uuid: c32ee8fea1694c5081f24b7eb66dc5b5
template: Cloudflare
name: Cloudflare
groups:
-
name: Templates
items:
-
uuid: 20d7a0193f1e4270b2da5936524b7472
name: 'Check Cloudflare IPv4'
type: EXTERNAL
key: cf-check-ip.sh
tags:
-
tag: Application
value: Cloudflare
triggers:
-
uuid: 01a1216595024bd8af90f20cfb3717e9
expression: last(/Cloudflare/cf-check-ip.sh)=2
name: 'Cloudflare IPv4 error downloading the file'
priority: DISASTER
-
uuid: 10c0c7305ff14a17a52222429cc2893f
expression: last(/Cloudflare/cf-check-ip.sh)=1
name: 'Cloudflare IPv4 has been updated'
priority: DISASTER