Почему не работает IP Limit Management в 3x-ui
Решение проблем с блокировкой IP в панели 3x-ui. Настройка fail2ban, исправление путей логов и проверка iptables.
Почему не работает IP Limit Management в панели 3x-ui? Лимит на IP включен в клиенте, логи настроены в ./access.log, но подключения с домашнего и мобильного интернета не блокируются (заблокированных IP: 0). Прилагаю конфигурации:
3x-ipl.conf в action.d:
[INCLUDES]
before = iptables-allports.conf
[Definition]
actionstart = <iptables> -N f2b-<name>
<iptables> -A f2b-<name> -j <returntype>
<iptables> -I <chain> -p <protocol> -j f2b-<name>
actionstop = <iptables> -D <chain> -p <protocol> -j f2b-<name>
<actionflush>
<iptables> -X f2b-<name>
actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'
actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
echo "$(date +"%%Y/%%m/%%d %%H:%%M:%%S") BAN [Email] = <F-USER> [IP] = <ip> banned for <bantime> seconds." >> /var/log/x-ui/3xipl-banned.log
actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>
echo "$(date +"%%Y/%%m/%%d %%H:%%M:%%S") UNBAN [Email] = <F-USER> [IP] = <ip> unbanned." >> /var/log/x-ui/3xipl-banned.log
[Init]
name = default
protocol = tcp
chain = INPUT
3x-ipl.conf в jail.d:
[3x-ipl]
enabled=true
backend=auto
filter=3x-ipl
action=3x-ipl
logpath=/var/log/x-ui/3xipl.log
maxretry=2
findtime=32
bantime=30m
В чем может быть причина и как исправить?
IP Limit Management в панели 3x-ui не работает из-за несоответствия пути лог-файла в конфигурации fail2ban и реального расположения логов. Ключевые причины: неверный путь в logpath (указан /var/log/x-ui/3xipl.log, а логи пишутся в ./access.log), отсутствие корректного фильтра для парсинга событий и возможные ошибки в цепочке правил iptables. Для исправления требуется синхронизировать пути и проверить статус сервиса fail2ban.
Содержание
- Основные причины неисправности
- Проверка конфигурации лог-файлов
- Диагностика работы fail2ban
- Исправление конфигурации
- Тестирование решения
- Источники
- Заключение
Основные причины неисправности
Проблема возникает из-за трёх критических несоответствий в текущей настройке. Во-первых, в файле jail.d/3x-ipl.conf указан путь /var/log/x-ui/3xipl.log, но логи панели 3x-ui пишутся в ./access.log — это приводит к тому, что fail2ban не видит событий для анализа. Во-вторых, отсутствует корректный фильтр 3x-ipl.conf, который должен парсить шаблоны ошибок аутентификации. В-третьих, в цепочке INPUT iptables не добавлены правила для обработки трафика панели, из-за чего блокировка не применяется.
Ещё один скрытый нюанс: параметр maxretry=2 требует двух неудачных попыток за 32 секунды, но если логи не попадают в мониторинг, триггер срабатывает. Проверьте, не переполнена ли директория /var/log/x-ui — отсутствие прав на запись в 3xipl-banned.log может маскировать ошибки.
Проверка конфигурации лог-файлов
Шаг 1: Сопоставьте пути логов
Откройте конфигурацию 3x-ui и убедитесь, куда пишутся логи аутентификации. Для панели 3x-ui стандартный путь — ./x-ui/access.log (относительно рабочей директории). В вашем случае указан ./access.log, что может означать путь в корневой директории панели. Сравните с настройками в jail.d/3x-ipl.conf:
- logpath = /var/log/x-ui/3xipl.log
+ logpath = /путь/к/x-ui/access.log
Шаг 2: Проверьте права доступа
Выполните:
ls -la /путь/к/x-ui/access.log
Если владелец файла — root, а fail2ban работает от пользователя fail2ban, добавьте группу fail2ban в права:
chown root:fail2ban /путь/к/x-ui/access.log
chmod 640 /путь/к/x-ui/access.log
Шаг 3: Убедитесь, что логи содержат ошибки
Проверьте, есть ли в логе записи об ошибках аутентификации:
grep "failed" /путь/к/x-ui/access.log
Если вывод пуст, включите детальное логирование в настройках 3x-ui или проверьте работу фильтра.
Диагностика работы fail2ban
Статус джейла
Выполните:
fail2ban-client status 3x-ipl
Если джейл не активен, вы увидите:
Status for the jail: 3x-ipl
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/x-ui/3xipl.log
`- Actions
|- Currently banned: 0
`- Total banned: 0
Это подтверждает, что fail2ban не видит событий из-за неверного пути лога.
Тестовый запуск
Проверьте, как fail2ban парсит логи:
fail2ban-regex /путь/к/x-ui/access.log /etc/fail2ban/filter.d/3x-ipl.conf
Если в выводе много строк Ignored, значит фильтр 3x-ipl.conf не соответствует формату логов. Пример корректного шаблона для 3x-ui:
[Definition]
failregex = ^.*"login" failed for.*IP <HOST>.*
Исправление конфигурации
1. Обновите путь лога в jail.d/3x-ipl.conf
[3x-ipl]
enabled = true
logpath = /путь/к/x-ui/access.log # Укажите реальный путь
maxretry = 3
findtime = 60
bantime = 1h
2. Добавьте фильтр 3x-ipl.conf в filter.d
Создайте файл /etc/fail2ban/filter.d/3x-ipl.conf:
[Definition]
failregex = ^.*"login" failed for.*IP <HOST>.*
ignoreregex =
3. Проверьте цепочку iptables
Убедитесь, что правило добавлено в правильную цепочку. Для 3x-ui обычно используется порт 54321:
iptables -L INPUT -n | grep 54321
Если правила нет, добавьте вручную:
iptables -A INPUT -p tcp --dport 54321 -j f2b-3x-ipl
Тестирование решения
Этап 1: Перезапустите сервис
systemctl restart fail2ban
Этап 2: Симулируйте ошибку
Попробуйте войти в панель с неправильным паролем 3 раза за 60 секунд. Проверьте логи:
tail -f /var/log/fail2ban.log
Должны появиться строки:
Ban <IP> for 3600 seconds
Этап 3: Проверьте блокировку
Выполните:
iptables -L f2b-3x-ipl -n
Если IP в списке, проверьте доступ к панели с этого адреса — соединение должно обрываться.
Источники
- Fail2ban Official Documentation — Детальная настройка фильтров и джейлов: https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Jails
- 3x-ui GitHub Repository — Официальные рекомендации по логированию: https://github.com/vaxilu/x-ui
- Iptables Manual — Правила работы с цепочками и блокировками: https://linux.die.net/man/8/iptables
Заключение
Проблема с IP Limit Management в 3x-ui решается синхронизацией путей лог-файлов, настройкой корректного фильтра и проверкой цепочек iptables. Ключевые шаги: обновите logpath до реального расположения access.log, добавьте фильтр для парсинга ошибок аутентификации и убедитесь, что fail2ban активен через fail2ban-client status. Проверьте блокировку через iptables — если IP появляется в списке, система работает. Не забудьте тестировать с нескольких устройств, так как мобильные провайдеры часто используют динамические IP, что может маскировать эффект блокировки.
Пользователь столкнулся с проблемой в 3x-ui, где IP Limit Management не блокирует подключения, несмотря на включенный лимит. Конфигурации:
3x-ipl.confвaction.dсодержит настройки для управления IP-лимитами3x-ipl.confвjail.dимеет параметры:maxretry=2,findtime=32,bantime=30m
Проблема: Подключения с домашнего и мобильного интернета не блокируются, количество заблокированных IP равно 0.
Логи: Настроены в ./access.log, но в логах нет информации о блокировках.
Пользователь просит помочь определить причину и предложить решение.