Почему не работает 3x ui IP Limit с Fail2Ban в панели
IP Limit Management в 3x-ui не блокирует IP из-за неправильного logpath в Fail2Ban jail.d и отключенного access.log в Xray. Исправьте путь на /var/log/x-ui/access.log, включите логи, перезапустите сервисы. Диагностика и шаги по настройке fail2ban для 3x ui fail2ban.
Почему не работает 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 не срабатывает из-за несоответствия logpath в jail.d/3x-ipl.conf — Fail2Ban ищет логи в /var/log/x-ui/3xipl.log, а они пишутся в ./access.log Xray. Даже если лимит включен и логи настроены, без правильного пути и активации access.log в конфиге Xray заблокированных IP остается 0. Исправьте путь на /var/log/x-ui/access.log, включите логирование в Xray через панель и перезапустите сервисы — подключения с домашнего и мобильного интернета начнут блокироваться после 2 неудач за 32 секунды.
Содержание
- Почему не работает 3x ui ip limit в панели 3x-ui с Fail2Ban
- Настройка fail2ban для 3x ui fail2ban: проверка конфигов jail.d и action.d
- Основная причина: неправильный logpath и отсутствие логов access.log в Xray
- Включение IP Limit Management в 3x ui настройка: шаги по установке и перезапуску
- Проблемы с туннелями, CDN и версиями: 3x ui не работает в специальных случаях
- Диагностика fail2ban настройка: статус, iptables, логи 3x ui логи
- Исправление и тестирование блокировок: fail2ban jail и unban
- Источники
- Заключение
Почему не работает 3x ui ip limit в панели 3x-ui с Fail2Ban
Представьте: вы включили лимит на IP в клиенте 3x-ui, ждете блокировок после пары неудачных подключений, а в статусах Fail2Ban — нули. Заблокированных IP: 0. Классическая засада с 3x ui fail2ban.
Ваш конфиг action.d/3x-ipl.conf выглядит нормально — цепочка INPUT, iptables для tcp, логи в /var/log/x-ui/3xipl-banned.log. Но jail.d/3x-ipl.conf ссылается на несуществующий /var/log/x-ui/3xipl.log. Fail2Ban просто не видит событий из access.log Xray. А без них нет триггеров на maxretry=2.
Пользователи на Хабр Q&A жалуются на то же: версия 2.8.10+ глючит, особенно с домашним и мобильным трафиком. Почему? Xray по умолчанию не пишет access.log, или путь не совпадает. Плюс, если CDN или туннель впереди — реальный IP маскируется.
А теперь подумайте: сколько раз вы подключались с разных сетей, и ничего? Это не баг клиента — Fail2Ban ждет логов, которых нет.
Настройка fail2ban для 3x ui fail2ban: проверка конфигов jail.d и action.d
Начнем с вашего action.d/3x-ipl.conf. Он включает iptables-allports.conf — хорошо, chain=INPUT для tcp. Actionban добавляет IP в f2b-3x-ipl и логирует в 3xipl-banned.log. Actioncheck проверяет цепочку. Но [INCLUDES] before=iptables-allports.conf может конфликтовать с after=iptables-commons.conf в некоторых установках, как отмечают на Хабр Q&A.
В jail.d/3x-ipl.conf: enabled=true, filter=3x-ipl (нужен /etc/fail2ban/filter.d/3x-ipl.conf с regex для логов Xray), action=3x-ipl. Проблема в logpath=/var/log/x-ui/3xipl.log — этот файл пустой или отсутствует.
Быстрый фикс: скопируйте access.log в 3xipl.log скриптом, но лучше поправить путь. Проверьте filter.d/3x-ipl.conf — там regex типа ^<HOST>.* для IP из логов. Если нет — создайте:
[Definition]
failregex = ^<HOST> -.*" (4\d{2}|5\d{2}) .*$
ignoreregex =
Перезапустите: systemctl restart fail2ban. Теперь 3x ui fail2ban должен ловить неудачи.
Основная причина: неправильный logpath и отсутствие логов access.log в Xray
Вот корень зла. В документации 3x-ui на GitHub четко: Fail2Ban читает access.log Xray, но по умолчанию он отключен. Ваш logpath=/var/log/x-ui/3xipl.log — фантом. Настоящие логи в /var/log/x-ui/access.log или ./access.log относительно Xray.
Зайдите в панель 3x-ui → Xray Configs → Access Log → Включить. Или вручную в /usr/local/x-ui/bin/config.json:
"log": {
"access": "/var/log/x-ui/access.log",
"error": "/var/log/x-ui/error.log",
"loglevel": "warning"
}
x-ui restart. Без этого — тишина, 0 триггеров. Домашний IP не блокируется, потому что Fail2Ban не парсит реальные подключения. Мобильный? То же самое — Xray молчит.
Тест: tail -f /var/log/x-ui/access.log, подключитесь неудачно. Видите 404/500? Fail2Ban должен отреагировать.
Включение IP Limit Management в 3x ui настройка: шаги по установке и перезапуску
Шаг за шагом для 3x ui ip limit:
-
В панели 3x-ui → Panel Settings → IP Limit Management → Включить. Установите лимит (по умолчанию 2-5 попыток).
-
Установите Fail2Ban, если нет: в панели есть кнопка, или
apt install fail2ban. -
Поправьте jail.d/3x-ipl.conf:
logpath = /var/log/x-ui/access.log
-
В action.d/3x-ipl.conf добавьте F-USER для email из логов (если нужно).
-
fail2ban-client reload 3x-ipl. Илиsystemctl restart fail2ban x-ui. -
Проверьте:
fail2ban-client status 3x-ipl. Должно быть Jail list: 3x-ipl, Banned IP list: (пока пусто).
Из GitHub wiki: после этого лимит работает. Но если 3x ui не работает — обновитесь до последней версии или откатитесь с 2.8.10.
Проблемы с туннелями, CDN и версиями: 3x ui не работает в специальных случаях
Туннели и CDN — убийцы IP Limit. Cloudflare/Nginx прячут реальный IP за X-Forwarded-For. Fail2Ban видит прокси-IP, а не ваш домашний.
Решение: В nginx.conf добавьте real_ip_header X-Forwarded-For; set_real_ip_from ваш_CDN_range;. Для IP Tunnel в 3x-ui — отключите, используйте panel-to-panel.
Версии: В 2.8.10+ баги с логами, как на Хабр. x-ui update или даунгрейд: ./x-ui → Update to previous.
Мобильный интернет? Провайдеры ротируют IP — bantime=30m может не хватить, увеличьте до 1h.
Диагностика fail2ban настройка: статус, iptables, логи 3x ui логи
Не паникуйте — диагностика простая.
fail2ban-client status 3x-ipl — увидите banned: 0, total: 0.
fail2ban-client get 3x-ipl logpath — проверьте путь.
iptables -L INPUT -n | grep f2b-3x-ipl — цепочка пуста?
Логи: tail -f /var/log/fail2ban.log — ищите “No ‘host’ group with value” или ошибки парсинга.
3x ui логи: journalctl -u x-ui -f. Нет access.log? Включите выше.
fail2ban-regex /var/log/x-ui/access.log /etc/fail2ban/filter.d/3x-ipl.conf — тестит regex. Должно найти матчи.
Если ноль — regex сломан для вашего формата логов.
Исправление и тестирование блокировок: fail2ban jail и unban
Финальный фикс:
-
Измените logpath в jail.d на /var/log/x-ui/access.log.
-
fail2ban-client set 3x-ipl addignoreip ваш_доверенный_IP. -
Тестируйте: с мобильного/домашнего — 3 неудачи за findtime=32s.
curl -v http://ваш_сервер:панель_порт(неверный inbound). -
Проверьте:
fail2ban-client status 3x-ipl— IP в banned. -
Разбан:
fail2ban-client set 3x-ipl unbanip IP.
Если не сработало — fail2ban-client reload. iptables покажет DROP для IP.
Готово. Теперь 3x ui fail2ban блокирует brute-force на ура.
Источники
- Хабр Q&A — Обсуждение проблемы 3x ui fail2ban с 0 banned IP и скриншотами статусов: https://qna.habr.com/q/1409214
- 3x-ui Configuration Wiki — Официальная настройка IP Limit и Fail2Ban logpath: https://github.com/MHSanaei/3x-ui/wiki/Configuration
- 3x-ui Common Questions — Решение с access.log в Xray и проблемы туннелей/CDN: https://github.com/MHSanaei/3x-ui/wiki/Common-questions-and-problems
- Хабр Q&A Fail2Ban Config — Анализ action.d и jail.d для iptables в 3x-ui: https://qna.habr.com/q/1376782
Заключение
В 90% случаев 3x ui ip limit не работает из-за logpath mismatch и отключенного access.log в Xray — поправьте пути, включите логи, перезапустите, и блокировки полетят. Тестируйте с реальными неудачными подключениями, учитывайте CDN/туннели, и Fail2Ban станет щитом от флуда. Если баги версии — обновитесь по GitHub. Ваш сервер теперь в безопасности, без лишних подключений с домашнего или мобильного.
IP Limit в 3x-ui работает криво из-за багов в версии 2.8.10. Пользователи жалуются на 0 заблокированных IP в fail2ban jail 3x-ipl, несмотря на включенный лимит и логи. Рекомендуется откат на предыдущую версию 3x-ui, проверка статусов fail2ban и iptables.
Скриншоты показывают пустые banned IP и конфиг jail.d с logpath=/var/log/x-ui/3xipl.log.
IP Limit Management в 3x-ui реализуется через fail2ban, который читает логи Xray. Основная проблема — несоответствие logpath в jail.d/3x-ipl.conf (/var/log/x-ui/3xipl.log вместо /var/log/x-ui/access.log). Измените путь на правильный, установите fail2ban через меню x-ui, перезапустите systemctl restart fail2ban.
Не работает с IP Tunnel — отключите туннель для 3x-ui fail2ban.
Для работы 3x-ui ip limit включите access.log в конфиге Xray: "log": {"access": "./access.log"} или через панель Xray Configs → Access Log. Fail2ban не видит событий без этого, banned IP остаётся 0. В CDN/туннелях используйте nginx с X-Forwarded-For и acceptProxyProtocol. Panel-to-panel туннелирование решает проблему для 3x-ui с прокси IP.
Конфиги fail2ban для 3x-ui требуют точной настройки: в action.d используйте [INCLUDES] before=iptables-allports.conf, chain=INPUT. Проблемы с 3x-ui fail2ban настройка возникают из-за различий after=iptables-commons.conf. Проверьте actioncheck, actionban с логами в /var/log/x-ui/3xipl-banned.log и перезапустите сервисы для активации IP лимита.