Linux EADDRINUSEВысокая

Порт 514 уже используется: причины и быстрые решения на Linux

Ошибка «порт 514 уже используется» появляется, когда служба syslog конфликтует с другим процессом. В статье вы получите проверку занятости порта и три способа решения.

Обновлено 12 июля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+RHEL 8+

Что означает ошибка EADDRINUSE (порт 514 уже используется)

Ошибка появляется, когда приложение (чаще всего rsyslog или syslog-ng) пытается привязать сокет к порту 514 (стандартный порт для syslog), но система сообщает, что этот порт уже занят другим процессом. В журнале вы увидите сообщения вроде:

rsyslogd: error: bind to address 0.0.0.0:514 failed: Address already in use

Это значит, что любой процесс, уже слушающий UDP/TCP‑порт 514, препятствует запуску вашего syslog‑демона.

Причины возникновения

  • Запущен второй syslog‑демон (например, systemd-journald в режиме ForwardToSyslog=yes).
  • Сторонний сервис (например, snort, suricata или пользовательский скрипт) использует порт 514 для собственных логов.
  • Конфигурация Docker/Podman: контейнер с проброшенным портом 514 уже работает на хосте.
  • Неправильный параметр в /etc/rsyslog.conf: попытка слушать одновременно UDP и TCP без указания ModLoad imudp/imtcp.
  • Остаточный процесс после неудачного обновления, оставшийся в памяти.

Способы решения

Способ 1: Найти и остановить конфликтующий процесс

  1. Выполните команду, чтобы увидеть, кто занимает порт:
    sudo ss -ulpn | grep :514
    

    Пример вывода:
    udp   UNCONN  0      0      *:514       *:*   users:(("systemd-journald",pid=1234,fd=12))
    
  2. Остановите процесс по PID или имени службы:
    sudo systemctl stop systemd-journald
    # или, если это сторонний процесс:
    sudo kill -9 1234
    
  3. Перезапустите rsyslog:
    sudo systemctl restart rsyslog
    
  4. Проверьте статус:
    sudo systemctl status rsyslog
    

⚠️ Важно: Останавливая systemd-journald, убедитесь, что журналирование не требуется другими сервисами. После перезапуска rsyslog можно снова включить systemd-journald:

sudo systemctl start systemd-journald

Способ 2: Перенаправить syslog на альтернативный порт

Если конфликтовать с другим сервисом невозможно, измените порт, который использует rsyslog.

  1. Откройте конфигурацию:
    sudo nano /etc/rsyslog.conf
    
  2. Найдите строки, отвечающие за ввод:
    module(load="imudp")   # UDP listener
    input(type="imudp" port="514")
    module(load="imtcp")   # TCP listener
    input(type="imtcp" port="514")
    
  3. Замените 514 на свободный, например 515:
    input(type="imudp" port="515")
    input(type="imtcp" port="515")
    
  4. Сохраните файл и перезапустите сервис:
    sudo systemctl restart rsyslog
    
  5. При необходимости измените конфигурацию клиентов (например, в /etc/rsyslog.d/remote.conf) чтобы они отправляли логи на новый порт.

Способ 3: Отключить прослушивание одного из протоколов

Если вам нужен только UDP или только TCP, отключите ненужный модуль, тем самым освобождая порт для другого процесса.

  1. В файле /etc/rsyslog.conf закомментируйте лишний ввод:
    #input(type="imtcp" port="514")   # отключаем TCP
    
  2. Перезапустите rsyslog:
    sudo systemctl restart rsyslog
    
  3. Проверьте, что теперь порт занят только одним процессом:
    sudo ss -ulpn | grep :514
    

Способ 4: Проверить Docker/Podman контейнеры

Если вы используете контейнеры, один из них может пробрасывать порт 514 на хост.

  1. Список контейнеров с пробросом портов:
    sudo docker ps --format "{{.ID}} {{.Names}} {{.Ports}}" | grep 514
    
  2. Остановите конфликтующий контейнер:
    sudo docker stop <container_id>
    
  3. Перезапустите rsyslog.

Профилактика

  • Регулярно проверяйте используемые порты: sudo ss -tuln в cron‑задании поможет вовремя заметить конфликты.
  • Не запускайте одновременно два syslog‑демона. Оставьте только один (обычно rsyslog или systemd-journald с ForwardToSyslog=no).
  • При работе с контейнерами явно указывайте маппинг портов и проверяйте, не конфликтует ли он с хостом.
  • Обновляйте конфигурацию после установки новых пакетов, которые могут добавить свои слушатели (например, snort).

Часто задаваемые вопросы

Почему при запуске rsyslog появляется ошибка ‘port 514 already in use’?
Можно ли использовать альтернативный порт для syslog?
Как проверить, какой процесс занимает порт 514?
Поможет ли перезагрузка системы?

Полезное

Проверить, какой процесс занимает порт 514
Остановить конфликтующий сервис
Перезапустить rsyslog
Изменить порт syslog (альтернатива)

Эта статья помогла вам решить проблему?