Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)


Описание особенности

При запуске контейнеров Podman в пользовательской сессии с низким уровнем целостности:

  • Контейнер запускается, но выдается предупреждение вида:
    WARN[0000] failed to set net.ipv6.conf.default.accept_dad sysctl: open /proc/sys/net/ipv6/conf/default/accept_dad: permission denied
    Данное предупреждение не влияет на функционирование контейнера.
  • Возникает ошибка запуска с сообщением вида:
    Error: runc: runc create failed: unable to start container process: error during container init: open /proc/sys/net/ipv4/ping_group_range: permission denied: OCI permission denied

Рекомендации

Устранение ошибки запуска

Для устранения ошибки запуска:

  1. В файле конфигурации /etc/containers/containers.conf в секции default_sysctl убрать строку "net.ipv4.ping_group_range=0 0", приведя секцию к следующему виду:
    default_sysctls = []

Опция net.ipv4.ping_group_range в файле конфигурации определяет диапазон идентификаторов групп (GID), которым разрешено отправлять запросы ICMP Echo Request (ping) без использования Linux-привилегий CAP_NET_RAW. Указание диапазона 0-0 должно разрешить отправку таких запросов группе root, и только этой группе.

Удаление опции приведет к тому, что при запуске контейнера будет использоваться фактический диапазон 0-1. Такое значение диапазона запрещает ping для всех, также может быть нарушена работа некоторых приложений (например, traceroute, mtr, или службы мониторинга). При этом при проверке установленного диапазона ядро будет сообщать, что установлен диапазон 65534-65534. Значение 65534 в данном случае не является реальным GID. Это зарезервированная константа DEFAULT_OVERFLOWGID, указывающая, что заданное в настройках значение находится вне множества допустимых значений.

Устранение предупреждения при запуске

Предупреждение выдается при попытке установить для контейнера значение параметра ядра net.ipv6.conf.default.accept_dad. Этот параметр доступен только при использовании протокола IPv6 и определяет порядок обнаружения и обработки дублирования сетевых адресов IPv6:

  • 0 — отключить обнаружение;
  • 1 — включить обнаружение (используется по умолчанию);
  • 2 — включить обнаружение и отключать IPv6 при обнаружении дублирования.

Для устранения предупреждение о невозможности установки значения этого параметра при запуске можно отключить использование протокола IPv6, для чего:

  1. При запуске контейнеров использовать опцию --network slirp4netns:enable_ipv6=false, например:
    podman run -it --network slirp4netns:enable_ipv6=false registry.astralinux.ru/alse:latest

Опция запуска контейнера --network slirp4netns:enable_ipv6=false отключает поддержку IPv6 внутри контейнера. В контейнерах, запущенных с использованием этой опции, для всех сетевых соединений используется только IPv4. В большинстве случаев использование этой опции не вызывает побочных эффектов, так как большинство приложений при невозможности использовать IPv6 автоматически переключаются на IPv4. Однако, работа приложения, работающих исключительно с IPv6, может быть нарушена. Также приложениям, работающим в контейнере, будут недоступны внешние службы, использующие только IPv6. Ограничения работы могут возникнуть в средах, где используется IPv6 NAT или IPv6-ориентированные балансировщики нагрузки.

  • Нет меток