Cloudflare — популярный сервис для защиты веб-сайтов от DDoS-атак, ускорения загрузки страниц и обеспечения безопасности. Если вы используете Cloudflare для вашего сайта, важно, чтобы ваш веб-сервер был настроен на правильное получение реальных IP-адресов пользователей, которые проходят через Cloudflare. В этой статье мы расскажем, как автоматизировать обновление IP-адресов Cloudflare в конфигурационном файле Nginx с помощью скрипта на bash.
Почему Важно Обновлять IP-Адреса Cloudflare
Cloudflare использует множество IP-адресов для предоставления своих услуг. Эти адреса могут меняться, и если ваш сервер не будет обновлять список IP-адресов, он может не корректно определять реальный IP-адрес клиента. Это может привести к проблемам с безопасностью и доступом.
Что Нам Потребуется
Для автоматизации процесса обновления IP-адресов Cloudflare нам понадобятся следующие инструменты:
- Bash: для написания скрипта.
- Cron: для планирования выполнения скрипта.
- Nginx: веб-сервер, который мы будем настраивать.
Шаг 1: Создание Скрипта
Первый шаг — создание bash-скрипта, который будет скачивать текущий список IP-адресов Cloudflare и обновлять конфигурационный файл Nginx.
- Откройте терминал и создайте новый файл скрипта:
sudo nano /usr/local/bin/update-cloudflare-ips.sh
- Вставьте в файл следующий код:
#!/bin/bash # URL для получения IP-адресов Cloudflare CLOUDFLARE_IPS_URL="https://www.cloudflare.com/ips-v4" # Путь к файлу конфигурации Nginx NGINX_CONFIG_FILE="/etc/nginx/bx/maps/cloudflare.conf" # Создание или очистка конфигурационного файла echo "# CloudFlare IPs" > $NGINX_CONFIG_FILE # Загрузка IP-адресов и запись в конфигурационный файл curl -s $CLOUDFLARE_IPS_URL | while read ip; do echo "set_real_ip_from $ip;" >> $NGINX_CONFIG_FILE done # Добавление строки для заголовка echo "real_ip_header CF-Connecting-IP;" >> $NGINX_CONFIG_FILE # Проверка конфигурации Nginx if nginx -t; then # Перезагрузка Nginx для применения изменений systemctl reload nginx echo "Nginx configuration updated and reloaded successfully." else echo "Nginx configuration test failed. Please check the file: $NGINX_CONFIG_FILE" exit 1 fi
- Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/update-cloudflare-ips.sh
Шаг 2: Настройка Cron для Регулярного Выполнения
Теперь, когда у нас есть скрипт, его нужно настроить для регулярного выполнения, чтобы IP-адреса обновлялись автоматически.
- Откройте редактор crontab:
sudo crontab -e
- Добавьте строку для ежедневного выполнения скрипта. Например, чтобы запускать скрипт каждый день в 3:00 ночи:
0 3 * * * /usr/local/bin/update-cloudflare-ips.sh
- Сохраните изменения и выйдите из редактора.
Проверка и Отладка
После настройки скрипта и cron, убедитесь, что всё работает правильно:
- Запустите скрипт вручную, чтобы проверить его работу:
sudo /usr/local/bin/update-cloudflare-ips.sh
- Проверьте конфигурацию Nginx:
sudo nginx -t
- Просмотрите логи на наличие ошибок:
- Логи Nginx:
sudo tail -f /var/log/nginx/error.log
- Логи Cron:
sudo grep CRON /var/log/syslog
- Логи Nginx:
Заключение
Автоматическое обновление IP-адресов Cloudflare позволяет вашему серверу всегда иметь актуальный список IP-адресов, что критично для правильной работы защиты и обеспечения безопасности. Следуя описанным шагам, вы сможете настроить автоматическое обновление и поддерживать ваш сервер в актуальном состоянии.