PrivateNetwork=yes: служба без доступа к сети
Помещает службу в отдельное сетевое пространство имён: у неё остаётся только петлевой интерфейс, внешняя сеть недоступна.
Что делает
Полезно для служб, которым сеть не нужна вовсе: обработка файлов, локальные расчёты, разовые задачи. Полная изоляция сети надёжнее любых правил брандмауэра, потому что сети просто нет.
Важно понимать, что «localhost» внутри такой службы — это не localhost машины. Обращение к локальной базе на 127.0.0.1 работать не будет: в её пространстве имён этого адреса никто не слушает.
Где ставится. В секции [Service].
Значения
| Значение | Что происходит |
|---|---|
yes | отдельное сетевое пространство имён, только петлевой интерфейс. |
no | по умолчанию: обычный доступ к сети машины. |
По умолчанию: no
Пример
Разовая задача обработки файлов без доступа к сети.
[Service]
Type=oneshot
PrivateNetwork=yes
PrivateTmp=yes
StateDirectory=converter
ExecStart=/usr/local/bin/convert --in /var/lib/converter/in --out /var/lib/converter/out
Типичные ошибки
Обращение к 127.0.0.1 машины изнутри не работает: у службы своё пространство имён.
В контейнере без нужных прав пространство имён создать нельзя: код 225/NETWORK.
Для ограничения сети у службы, которой сеть нужна, лучше подходят IPAddressAllow= и IPAddressDeny=.
Связанные ошибки
- status=225/NETWORK в systemdКод 225/NETWORK: не удалось создать сетевое пространство имён для службы при PrivateNetwork=yes или NetworkNamespacePath=.
- Connection refused в журнале службыСоединение отклонено: служба не может подключиться к базе, кешу или другому сервису. Порядок запуска, адрес, брандмауэр.
- status=226/NAMESPACE в systemdКод 226/NAMESPACE: не удалось настроить пространства имён монтирования, UTS или IPC. Частая причина — путь в ReadOnlyPaths= или ProtectHome=.
Рядом стоящие параметры
Источники
- systemd.exec(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)