status=225/NETWORK в systemd
Код 225/NETWORK значит, что systemd не сумел настроить сетевую изоляцию службы. Обычно причина в окружении: во вложенном контейнере создать сетевое пространство имён нельзя, либо путь из NetworkNamespacePath= не существует.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Окружение не позволяет создать сетевое пространство имён
Операция требует CAP_SYS_ADMIN и разрешения от ядра. В контейнере без нужных прав
PrivateNetwork=yesне проходит. -
Файл пространства имён из
NetworkNamespacePath=отсутствуетПуть должен указывать на существующий файл пространства имён, обычно в /run/netns. Если его создаёт другая служба, она могла не успеть или упасть.
-
Служба одновременно просит изоляцию сети и доступ к сети
При
PrivateNetwork=yesу службы остаётся только петлевой интерфейс. Если ей нужно наружу, изоляция противоречит задаче — и настройка, добавленная «для безопасности», ломает работу.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает шаг NETWORK и причину отказа.
journalctl -xeu myapp.service --no-pager -n 20Все параметры сетевой изоляции вместе.
systemctl show myapp.service -p PrivateNetwork -p NetworkNamespacePath -p PrivateIPCРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Операция требует CAP_SYS_ADMIN и разрешения от ядра. В контейнере без нужных прав
PrivateNetwork=yesне проходит.
- Как проверить
-
Проверьте окружение и параметр.
systemd-detect-virt systemctl show myapp.service -p PrivateNetwork -p CapabilityBoundingSet
- Как исправить
-
Уберите
PrivateNetwork=yesв таком окружении либо дайте контейнеру нужные права. Изоляция сети — не обязательное условие работы службы.
NetworkNamespacePath= отсутствует- Почему происходит
- Путь должен указывать на существующий файл пространства имён, обычно в /run/netns. Если его создаёт другая служба, она могла не успеть или упасть.
- Как проверить
-
Проверьте путь и порядок запуска.
systemctl show myapp.service -p NetworkNamespacePath ls -l /run/netns/
- Как исправить
-
Добавьте зависимость от службы, которая создаёт пространство имён, через
After=иRequires=, либо создайте его заранее.
- Почему происходит
- При
PrivateNetwork=yesу службы остаётся только петлевой интерфейс. Если ей нужно наружу, изоляция противоречит задаче — и настройка, добавленная «для безопасности», ломает работу.
- Как проверить
-
Посмотрите, нужен ли службе доступ в сеть, и что у неё стоит в параметрах изоляции.
systemctl show myapp.service -p PrivateNetwork -p IPAddressAllow
- Как исправить
-
Уберите
PrivateNetwork=yesи ограничивайте сеть точнее: черезIPAddressDeny=,IPAddressAllow=илиRestrictAddressFamilies=.
Пример вывода
PrivateNetwork=yes во вложенном контейнере. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: exit-code) since Mon 2026-09-14 21:44:05 MSK; 1s ago
Process: 21500 ExecStart=/usr/local/bin/myapp (code=exited, status=225/NETWORK)
systemd[21500]: myapp.service: Failed at step NETWORK spawning /usr/local/bin/myapp: Operation not permitted
Связанные ошибки
- status=226/NAMESPACE в systemd Код 226/NAMESPACE: не удалось настроить пространства имён монтирования, UTS или IPC. Частая причина — путь в ReadOnlyPaths= или ProtectHome=.
- status=232/ADDRESS_FAMILIES в systemd Код 232/ADDRESS_FAMILIES: не удалось применить ограничение семейств адресов из RestrictAddressFamilies=.
- status=218/CAPABILITIES в systemd Код 218/CAPABILITIES: не удалось применить набор возможностей процесса из CapabilityBoundingSet= или AmbientCapabilities=.
- Protocol not supported при создании сокета Ошибка 93: семейство или протокол не поддержаны. Разбор для IPv6, ограничений изоляции и контейнеров.
- openvpn: Cannot open TUN/TAP dev /dev/net/tun Служба не может открыть устройство туннеля: нет модуля, нет устройства в контейнере или мешает изоляция unit-файла.
- Порт занят, но процесса не видно Адрес занят, а инструменты не показывают владельца: другое сетевое пространство имён, контейнер, сокет systemd.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
Где встречается чаще всего
Источники
-
systemd.exec(5)
225 EXIT_NETWORK: не удалось настроить сетевое пространство имён, см. PrivateNetwork=. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено в контейнере без CAP_SYS_ADMIN.