SystemdDoctor
мешает работе сеть изоляция

Protocol not supported при создании сокета

Сообщение Protocol not supported (номер 93, EPROTONOSUPPORT) означает, что запрошенный протокол недоступен. У служб это обычно отключённый IPv6 или ограничение семейств адресов в unit-файле.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. IPv6 отключён, а программа его запрашивает

    Программа создаёт сокет этого семейства и получает отказ. Часть программ переходит на IPv4, часть падает.

  2. Семейство запрещено ограничением unit-файла

    Параметр ограничения семейств адресов режет доступные варианты. Программа получает отказ при создании сокета.

  3. Протокол недоступен в контейнере

    Среды исполнения контейнеров могут ограничивать семейства сокетов своими профилями.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Ограничение семейств адресов у службы.

systemctl show myapp.service -p RestrictAddressFamilies

Отключён ли IPv6 на уровне ядра.

sysctl net.ipv6.conf.all.disable_ipv6

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. IPv6 отключён, а программа его запрашивает
Почему происходит
Программа создаёт сокет этого семейства и получает отказ. Часть программ переходит на IPv4, часть падает.
Как проверить
Посмотрите состояние IPv6.
sysctl net.ipv6.conf.all.disable_ipv6
ip -6 addr | head
Как исправить
Либо включите IPv6, либо настройте программу на использование только IPv4. Отключать IPv6 на уровне ядра стоит осознанно: часть служб рассчитывает на его петлевой адрес.
2. Семейство запрещено ограничением unit-файла
Почему происходит
Параметр ограничения семейств адресов режет доступные варианты. Программа получает отказ при создании сокета.
Как проверить
Посмотрите ограничение.
systemctl show myapp.service -p RestrictAddressFamilies
Как исправить
Добавьте нужное семейство в список или уберите ограничение.
3. Протокол недоступен в контейнере
Почему происходит
Среды исполнения контейнеров могут ограничивать семейства сокетов своими профилями.
Как проверить
Определите окружение.
systemd-detect-virt --container
journalctl -u myapp.service -n 20 --no-pager | grep -i protocol
Как исправить
Ослабьте профиль контейнера или используйте доступное семейство.

Пример вывода

Программа запрашивает IPv6 при отключённом IPv6. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

myapp[4500]: error: socket(AF_INET6, SOCK_STREAM, 0): protocol not supported
myapp[4500]: falling back to IPv4

Связанные ошибки

Источники

  • socket(2): ошибка EPROTONOSUPPORT документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено отключением IPv6 параметром ядра.
    собственная проверка, systemd 255
    сверено 15 сентября 2026