Ошибка failed to send request: operation not permitted появляется в терминале при выполнении команд вроде curl, ping или при обращении приложения к сети, когда операционная система блокирует отправку сетевого пакета на уровне сокета. Формулировка operation not permitted (код EPERM) означает, что запрос даже не покинул устройство: его остановил локальный механизм контроля — файрвол, система песочницы, антивирус или ограничение прав процесса.
Проблема встречается на macOS, Linux и в среде WSL на Windows, а также в мобильных приложениях и контейнерах Docker. Возможная причина зависит от окружения: где-то достаточно выдать приложению разрешение, где-то потребуется перенастроить правила фильтрации трафика. Ниже разберём проверяемые сценарии диагностики, которые не зависят от конкретной версии системы.
Что означает ошибка operation not permitted
Системный вызов, отправляющий данные в сеть, возвращает код EPERM, когда ядро отказывает процессу в операции. Это не сетевой сбой и не проблема удалённого сервера — соединение блокируется на вашем устройстве до того, как пакет уходит в интерфейс.
Типичные источники блокировки:
- 🛡️ Файрвол или фильтр пакетов — правила pf на macOS, iptables/nftables на Linux, брандмауэр Windows.
- 📦 Песочница приложения — на macOS программа без разрешения на исходящие соединения получает именно эту ошибку.
- 🔒 Антивирус или EDR-агент — перехватывает сетевые вызовы и режет неизвестные процессы.
- 👤 Недостаток привилегий — например, отправка raw-сокетов или ICMP-пакетов требует повышенных прав.
- 🐳 Ограничения контейнера — в Docker без нужных capabilities сетевые операции могут запрещаться.
⚠️ Внимание: не отключайте файрвол и антивирус полностью «на всякий случай». Сначала локализуйте причину тестами из следующего раздела — иначе вы снимете защиту, так и не поняв, что именно блокировало запрос.
Быстрая диагностика: что блокирует запрос
Прежде чем что-то менять, выполните три проверки. Они безопасны и сразу сужают круг подозреваемых.
Первая проверка — повторить команду с повышенными привилегиями:
sudo curl -v https://example.com
Если с sudo запрос проходит, дело в правах процесса или в правилах файрвола, привязанных к пользователю. Если ошибка сохраняется даже от root — блокировка на уровне системного фильтра или стороннего защитного ПО.
Вторая проверка — посмотреть, работает ли сеть в принципе. Откройте тот же адрес в браузере. Браузер открывает страницу, а терминал выдаёт operation not permitted? Значит, блокировка избирательная: она нацелена на конкретное приложение или тип трафика, что характерно для антивирусов и приложений-фильтров вроде Little Snitch или LuLu на macOS.
Решение для macOS
На macOS самая частая возможная причина — встроенный сокетный фильтр или приложение контроля исходящего трафика. Проверьте, включён ли брандмауэр: Системные настройки → Сеть → Брандмауэр (путь может отличаться в зависимости от версии системы — сверьтесь с документацией Apple для вашей версии).
Если установлен Little Snitch, LuLu или корпоративный агент безопасности, откройте его журнал: там обычно видно, какой процесс был заблокирован и когда. Разрешите нужному приложению исходящие соединения вместо полного отключения фильтра.
Отдельный случай — ошибка в приложениях из App Store или запущенных в песочнице. Такой программе может не хватать entitlement на сетевой доступ, и исправить это может только разработчик. Проверить гипотезу просто: если ошибка возникает только в одном приложении, а остальные программы выходят в сеть нормально, обратитесь в поддержку этого приложения.
Решение для Linux и WSL
В Linux начните с просмотра правил фильтрации. В зависимости от дистрибутива используется iptables, nftables или надстройка вроде ufw:
sudo iptables -L -n
sudo nft list ruleset
sudo ufw status verbose
Ищите правила DROP или REJECT в цепочке OUTPUT — они блокируют исходящие запросы. Если нашли подозрительное правило, не удаляйте всю таблицу: отключите или скорректируйте только его, зафиксировав, что именно вы меняете.
☑️ Диагностика на Linux
В WSL на Windows ситуация иная: трафик Linux-окружения проходит через сетевой стек Windows, и его может резать брандмауэр Windows или сторонний антивирус. Проверьте, открывается ли тот же адрес из PowerShell на самой Windows. Если и там блокировка — ищите виновника среди защитного ПО Windows, а не внутри WSL.
⚠️ Внимание: командаiptables -Fсбрасывает все правила фильтрации. На удалённом сервере это может либо открыть доступ, либо наоборот — отрезать вас от машины, если политика по умолчаниюDROP. На сервере, доступном только по SSH, сначала убедитесь, что политика по умолчанию разрешающая.
Ошибка в Docker и других изолированных средах
Внутри контейнера Docker процесс по умолчанию лишён части capabilities ядра. Операции с raw-сокетами, ping и некоторые системные вызовы могут возвращать operation not permitted именно поэтому. Проверка: выполните ту же команду на хосте — если там работает, причина в изоляции контейнера.
Для диагностики контейнер иногда запускают с расширенными правами, например с флагом --cap-add=NET_RAW для работы ping. Полный режим --privileged используйте только для временной проверки — он снимает почти все ограничения и небезопасен для постоянной работы. Точный набор capabilities, необходимый вашему приложению, определяйте по его документации.
Когда виноват VPN, прокси или антивирус
VPN-клиенты с функцией kill-switch блокируют весь трафик вне туннеля. Если VPN отвалился или не успел подключиться, любые запросы будут завершаться ошибкой — и это штатное поведение защиты, а не поломка. Проверьте статус VPN-подключения и временно отключите kill-switch для теста.
Антивирусы с модулем контроля сети действуют тоньше: они могут пропускать браузер, но резать неизвестные утилиты командной строки. Признак — ошибка только в терминале при рабочем браузере. В настройках антивируса найдите раздел управления сетевым доступом приложений и добавьте нужный инструмент в исключения. Название раздела различается у разных продуктов, поэтому ориентируйтесь на документацию вашего антивируса.
Почему ping выдаёт operation not permitted
Утилита ping использует ICMP-пакеты, для отправки которых нужны особые права. На Linux без setuid-бита или capability cap_net_raw, а также в контейнерах без NET_RAW, ping завершится именно этой ошибкой, хотя обычные TCP-соединения могут работать нормально.
Сводная таблица причин и действий
| Окружение | Вероятная причина | Первое действие |
|---|---|---|
| macOS, терминал | Фильтр исходящего трафика (Little Snitch, LuLu) | Проверить журнал фильтра и разрешить процесс |
| Linux, десктоп/сервер | Правило DROP в iptables/nftables | Просмотреть правила, скорректировать одно правило |
| WSL на Windows | Брандмауэр или антивирус Windows | Проверить тот же запрос из PowerShell |
| Docker-контейнер | Отсутствие capabilities у процесса | Запустить с нужным --cap-add для теста |
| Любая система + VPN | Kill-switch при разрыве туннеля | Проверить статус VPN-подключения |
Если ни один из сценариев не подошёл, соберите минимальную диагностику: точная команда, полный текст ошибки, операционная система и список установленного защитного ПО. С этими данными причину проще найти в журналах системы или обсудить на профильном форуме.
Частые вопросы
Ошибка появляется только в одном приложении — что это значит?
Скорее всего, блокировка направлена на конкретный процесс: его режет файрвол-фильтр, антивирус или, на macOS, песочница приложения без разрешения на сеть. Проверьте журналы защитного ПО и настройки доступа для этой программы.
Может ли ошибка быть на стороне сервера?
Нет. Формулировка operation not permitted (EPERM) означает отказ локальной системы выполнить операцию. Серверные проблемы выглядят иначе: таймауты, отказ в соединении, HTTP-коды ошибок.
Поможет ли переустановка программы?
Как правило, нет: запрос блокирует системный механизм, а не сама программа. Переустановка не меняет правила файрвола и политики безопасности. Сначала найдите, кто именно блокирует трафик.
Ошибка возникает при ping, но сайты открываются — это нормально?
Да, это типичная ситуация. Для ping нужны права на отправку ICMP-пакетов, а обычные TCP-соединения их не требуют. Проверьте права на утилиту ping или наличие нужных capabilities в контейнере.
Опасно ли игнорировать эту ошибку?
Сама по себе ошибка безопасна — это отказ в операции, а не повреждение данных. Но если запросы блокирует неизвестный вам процесс или правило, стоит разобраться в источнике: возможно, на устройстве работает забытое защитное ПО или чужая политика фильтрации.