Почему мой конфиг RemoteIP вызывает сбой теста конфигурации Apache2?

Вопрос или проблема

  • Apache 2.4.52
  • Ubuntu 22.04.5 LTS
  • Сервер AWS EC2 за балансировщиками нагрузки

Я использовал %{X-Forwarded-For}i, чтобы получить IP-адрес клиента в логах для обработки fail2ban, пока не прочитал это в конфигурационном файле.

Обратите внимание, что использование %{X-Forwarded-For}i вместо %h не рекомендуется. Используйте mod_remoteip вместо.

Я проверил, и remoteip уже был установлен и загружен. Он загружается в remoteip.load со следующей строкой:

LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so

Я создал remoteip.conf и написал в него следующие строки.

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy = 35.170.149.235 52.202.248.219 34.232.106.28 54.234.162.178 3.232.179.245 44.205.134.80
RemoteIPInternalProxy = 172.0.8.172 172.0.7.138 172.0.7.148 172.0.7.22 172.0.6.0/24 172.0.5.0/24 172.0.0.233

Когда я запускаю apachectl configtest, я получаю следующее:

scottd:/etc/apache2$ sudo apachectl configtest
AH00526: Синтаксическая ошибка на строке 2 в /etc/apache2/conf-enabled/remoteip.conf:
RemoteIP: Ошибка разбора IP = (Имя или служба не известна) для RemoteIPTrustedProxy
Действие 'configtest' не прошло.

Если я переставлю строку RemoteIPInternalProxy выше RemoteIPTrustedProxy, он жалуется на строку RemoteIPInternalProxy.

Я удалил все IP, кроме одного, и ошибка все равно осталась?

Я просто не вижу никакой ошибки в этом очень простом конфигурационном файле?

Посмотрите на эту строку в ошибке:

RemoteIP: Ошибка разбора IP = (Имя или служба не известна) для RemoteIPTrustedProxy

Конфигурация не может разобрать знак =, как указано здесь; она пытается обработать = как IP-адрес:

Ошибка разбора IP =

Учитывая это, попробуйте удалить знаки = из каждой строки:

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 35.170.149.235 52.202.248.219 34.232.106.28 54.234.162.178 3.232.179.245 44.205.134.80
RemoteIPInternalProxy 172.0.8.172 172.0.7.138 172.0.7.148 172.0.7.22 172.0.6.0/24 172.0.5.0/24 172.0.0.233

Ответ или решение

Проблема, с которой вы столкнулись при использовании mod_remoteip в конфигурации Apache2, связана с синтаксисом, который используется для определения доверенных прокси-серверов. Давайте рассмотрим, почему возникает ошибка и как ее исправить.

Анализ проблемы

Согласно вашему описанию, вывод команды apachectl configtest указывает на ошибку синтаксиса, которую вы видите здесь:

RemoteIP: Error parsing IP = (Name or service not known error) for RemoteIPTrustedProxy

Это сообщение разъясняет, что модуль mod_remoteip не может правильно обработать введенные вами параметры. Основной проблемой является использование знака равенства (=) в строках конфигурации, что является нарушением корректного синтаксиса для директив RemoteIPTrustedProxy и RemoteIPInternalProxy.

Исправление конфигурации

Чтобы устранить возникшую ошибку, вам нужно удалить знак равенства из директив. Ваша конфигурация должна выглядеть следующим образом:

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 35.170.149.235 52.202.248.219 34.232.106.28 54.234.162.178 3.232.179.245 44.205.134.80
RemoteIPInternalProxy 172.0.8.172 172.0.7.138 172.0.7.148 172.0.7.22 172.0.6.0/24 172.0.5.0/24 172.0.0.233

Причины ошибки

  1. Неверный синтаксис: Знак равенства не требуется в инструкции RemoteIPTrustedProxy и RemoteIPInternalProxy. Эти директивы принимают список IP-адресов и CIDR-блоков без разделителей.

  2. Сообщения об ошибках: Apache ожидает увидеть IP-адреса или CIDR-адреса сразу после директивы. Поэтому при обнаружении знака равенства, который не соответствует ожиданиям Apache, возникает указанная вами ошибка.

Рекомендации

  • После внесения изменений в файл конфигурации, обязательно выполните команду sudo apachectl configtest для проверки синтаксиса. Если все правильно, вы увидите сообщение о том, что конфигурация правильная.
  • Не забывайте перезапускать Apache после изменения конфигурации с помощью команды sudo systemctl restart apache2, чтобы изменения вступили в силу.

Следуя этим рекомендациям, вы сможете успешно настроить mod_remoteip и устранить возникшую проблему с конфигурацией Apache2.

Оцените материал
Добавить комментарий

Капча загружается...