Что делает eBPF

Программу eBPF загружают в ядро через BPF API и подключают к подходящей точке: например, сетевой обработке, трассировке или Linux Security Module. Это не универсальный плагин, который автоматически работает на любом Linux-сервере: нужны соответствующая версия и конфигурация ядра, поддерживаемый тип программы, загрузчик и необходимые разрешения.

Ядро проверяет программу до запуска. Verifier анализирует потоки выполнения, типы регистров и доступ к памяти, чтобы ограничить небезопасные операции. Проверка важна, но не означает, что любой eBPF-код корректен для конкретной задачи или что сама система полностью защищена.

Программы, maps и точки подключения

Программы разных типов работают в разных контекстах и получают разные разрешенные функции. BPF maps дают способ хранить и передавать данные между программами ядра и пользовательскими процессами; набор типов map и доступных helper-функций зависит от ядра и конкретной операции.

Этим объясняется, почему два примера из разных руководств могут не загрузиться на одном сервере: они требуют разных типов программы, BTF, helper-функций или прав. Сообщение verifier обычно нужно читать вместе с типом программы и конфигурацией целевого ядра, а не как общий диагноз «eBPF не поддерживается».

Что проверить перед применением на VPS

Сначала определите версию и настройки ядра, тип программы и точку подключения. Затем проверьте, доступны ли нужные BPF-функции, maps, BTF и привилегии. Если VPS управляется поставщиком, уточните, разрешена ли загрузка BPF-программ в гостевой системе: виртуализация и политика безопасности могут ограничивать отдельные операции.

eBPF не равен контейнеру, гипервизору или отдельному ядру. Он расширяет возможности ядра через проверяемые программы, но не создает самостоятельную изоляционную границу для любого приложения. Не загружайте неизвестный объект в рабочее ядро без анализа исходника, необходимых разрешений и плана отката.

Смежные темы: Linux-контейнеры, CPU steal time и VPS/VDS. Использованы документы ядра Linux по BPF, verifier и maps; программы и серверы не загружались и не тестировались.