RestrictAddressFamilies=: какие сокеты доступны службе
Ограничивает семейства адресов, которые служба может использовать при создании сокетов. Работает через фильтр системных вызовов.
Что делает
Практический смысл — лишить службу возможности выходить в сеть, если она этого не должна. Для локальной службы достаточно AF_UNIX, для сетевой добавляют AF_INET и AF_INET6.
Про AF_UNIX забывают чаще всего, а он нужен почти всегда: через него идёт запись в журнал и обращение к системной шине. Без него служба не сможет даже сообщить об ошибке.
Где ставится. В секции [Service]. Имена семейств пишутся полностью, с префиксом AF_.
Значения
| Значение | Что происходит |
|---|---|
AF_UNIX | локальные сокеты: журнал, шина, обращение к соседним службам. |
AF_INET AF_INET6 | сеть IPv4 и IPv6. |
none | запретить все семейства — служба не сможет создать ни одного сокета. |
Пример
Локальная служба без выхода в сеть.
[Service]
RestrictAddressFamilies=AF_UNIX
IPAddressDeny=any
ExecStart=/usr/local/bin/worker --socket /run/worker/sock
Два разных механизма дополняют друг друга: один запрещает семейства сокетов, второй — адреса. Вместе они закрывают сеть надёжнее, чем по отдельности.
Типичные ошибки
Без AF_UNIX служба не может писать в журнал и обращаться к шине: ошибки будут непонятными.
Сокращённые имена (INET вместо AF_INET) не разбираются: код 232/ADDRESS_FAMILIES.
Нарушение ограничения в работе завершает процесс сигналом SYS, а не даёт ошибку в программе.
Связанные ошибки
- status=232/ADDRESS_FAMILIES в systemdКод 232/ADDRESS_FAMILIES: не удалось применить ограничение семейств адресов из RestrictAddressFamilies=.
- signal=SYS (status=31/SYS) в systemdПроцесс службы убит сигналом SYS: фильтр системных вызовов запретил вызов. Как найти запрещённый вызов и исправить SystemCallFilter.
- status=225/NETWORK в systemdКод 225/NETWORK: не удалось создать сетевое пространство имён для службы при PrivateNetwork=yes или NetworkNamespacePath=.
Рядом стоящие параметры
Источники
- systemd.exec(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)