UFW BLOCK в журнале: брандмауэр режет нужный трафик
Записи о блокировке в журнале ядра — самый прямой способ понять, что соединение не дошло из-за брандмауэра, а не из-за службы. По строке видно интерфейс, адреса, порт и протокол: этого достаточно, чтобы составить точное правило.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Правило для нужного порта отсутствует
Политика по умолчанию отбрасывает входящие соединения. Без правила служба недоступна снаружи при работающем слушателе.
-
Правило есть, но не для того направления или протокола
Правило для одного протокола не действует на другой, а исходящие и входящие правила независимы.
-
Блокируется служебный трафик, а не прикладной
Часть протоколов нужна для работы сети: объявления, обнаружение, проверки доступности. Их блокировка даёт странные последствия.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Что блокируется: интерфейсы, адреса, порты, протоколы.
journalctl -k -b --no-pager | grep -i "UFW BLOCK" | tail -20Действующие правила с номерами.
sudo ufw status numberedСамые частые блокируемые порты.
journalctl -k -b --no-pager | grep -i 'UFW BLOCK' | grep -oE 'DPT=[0-9]+' | sort | uniq -c | sort -rn | headРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Политика по умолчанию отбрасывает входящие соединения. Без правила служба недоступна снаружи при работающем слушателе.
- Как проверить
-
Посмотрите записи блокировки и правила.
journalctl -k -b --no-pager | grep -i "UFW BLOCK" | tail -5 sudo ufw status numbered 2>/dev/null | head -20
- Как исправить
- Добавьте правило для нужного порта, ограничив его источником. Открывать порт всему миру стоит только для служб, которым это действительно нужно.
- Почему происходит
- Правило для одного протокола не действует на другой, а исходящие и входящие правила независимы.
- Как проверить
-
Сравните запись блокировки и правила.
journalctl -k -b --no-pager | grep -i "UFW BLOCK" | tail -3 sudo ufw status verbose 2>/dev/null | head -20
- Как исправить
- Составьте правило по данным из записи блокировки: направление, протокол, порт. В записи есть всё нужное.
- Почему происходит
- Часть протоколов нужна для работы сети: объявления, обнаружение, проверки доступности. Их блокировка даёт странные последствия.
- Как проверить
-
Посмотрите, что именно блокируется чаще всего.
journalctl -k -b --no-pager | grep -i 'UFW BLOCK' | grep -oE 'PROTO=[A-Z0-9]+' | sort | uniq -c | sort -rn | head
- Как исправить
- Разрешите нужный служебный трафик в локальной сети. Блокировка объявлений и обнаружения ломает отказоустойчивость и печать.
Пример вывода
Порт службы не открыт в брандмауэре. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:12:34:56 SRC=192.0.2.55 DST=198.51.100.10 LEN=60 TOS=0x00 PREC=0x00 TTL=54 ID=41229 DF PROTO=TCP SPT=51422 DPT=8080 WINDOW=64240 RES=0x00 SYN URGP=0
Связанные ошибки
- Connection refused в журнале службы Соединение отклонено: служба не может подключиться к базе, кешу или другому сервису. Порядок запуска, адрес, брандмауэр.
- Connection timed out в журнале службы Соединение не устанавливается по таймауту: пакеты отбрасываются, узел недоступен, перегружен сервер на другой стороне.
- fail2ban: правила создаются, но не блокируют Служба работает и «блокирует» адреса, а доступ остаётся: действие настроено под другой брандмауэр.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Broken pipe в журнале службы Запись в закрытый канал или соединение: клиент отключился, обработчик завершился, конвейер разорван.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
- Connection reset by peer в журнале службы Соединение сброшено другой стороной: обрыв клиента, перезапуск сервера, промежуточное устройство.
Где встречается чаще всего
Источники
-
ufw(8)
Правила брандмауэра и запись блокировок в журнал. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено обращением на порт без разрешающего правила.