Skip to content
Статья / 1 мин. чтения

Настройка SOCKS5-прокси в macOS: общесистемная, для Терминала и отдельных приложений

В macOS есть системная настройка SOCKS-прокси, но не все приложения её учитывают. Вот как задать её в Системных настройках и networksetup, настроить Терминал и инструменты разработчика, а также проверить DNS и утечки.

В macOS есть настройка SOCKS-прокси, что создаёт ощущение общесистемного переключателя. На практике Safari и некоторые приложения следуют ей, а Терминал, Homebrew и многие инструменты разработчика её игнорируют. Это руководство показывает, как настроить SOCKS5-прокси в macOS через Системные настройки и networksetup, а затем как заставить инструменты, которые вы действительно используете, соблюдать её без утечек DNS.

Где macOS хранит настройку SOCKS-прокси

Откройте Системные настройки > Сеть. Выберите Wi-Fi или Ethernet, нажмите «Подробнее», затем «Прокси». Вы увидите флажки для веб-прокси (HTTP), защищённого веб-прокси (HTTPS), прокси SOCKS и других. В разделе «Прокси SOCKS» запрашиваются сервер и порт. Там нет выпадающего списка версии протокола. Для строгого контроля настройте отдельные приложения с socks5h, когда они это поддерживают.

Настройка SOCKS-прокси в macOS через Системные настройки

  1. Откройте Системные настройки > Сеть.
  2. Выберите активную сетевую службу, например Wi-Fi.
  3. Нажмите «Подробнее» > «Прокси».
  4. Включите «Прокси SOCKS».
  5. Введите адрес сервера и порт.
  6. Добавьте необходимые домены для обхода, например локальные ресурсы.
  7. Нажмите «ОК» и примените.

Имейте в виду, что эта настройка влияет на приложения, которые учитывают системный прокси macOS. Она не гарантирует, что каждое соединение из каждого приложения проходит через прокси.

Настройка из Терминала с помощью networksetup

networksetup полезен для скриптов, удалённой поддержки и быстрых изменений.

# Список сетевых служб
networksetup -listallnetworkservices

# Установить SOCKS-прокси для Wi-Fi
networksetup -setsocksfirewallproxy 'Wi-Fi' 127.0.0.1 1080

# Включить
networksetup -setsocksfirewallproxystate 'Wi-Fi' on

# Проверить текущую настройку
networksetup -getsocksfirewallproxy 'Wi-Fi'

# Выключить
networksetup -setsocksfirewallproxystate 'Wi-Fi' off

Вы также можете задать домены для обхода:

networksetup -setproxybypassdomains 'Wi-Fi' '*.local' '169.254/16' 'localhost'

Используйте кавычки вокруг названия сетевой службы, особенно если оно содержит пробелы.

Настройка Терминала и инструментов разработчика на использование SOCKS5

Сеансы Терминала обычно не наследуют настройку SOCKS-прокси macOS. Задайте переменные окружения для текущей оболочки:

export ALL_PROXY=socks5h://127.0.0.1:1080
export all_proxy=socks5h://127.0.0.1:1080

Некоторые инструменты используют HTTP_PROXY и HTTPS_PROXY. Будьте осторожны: не каждый инструмент понимает значение socks5h:// в этих переменных. Если у инструмента есть специальный флаг для SOCKS, используйте его вместо этого.

curl

curl --socks5-hostname 127.0.0.1:1080 https://api.ipify.org

git

git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080

# Удалить позже
git config --global --unset http.proxy
git config --global --unset https.proxy

Python

import requests

proxies = {
    'http': 'socks5h://127.0.0.1:1080',
    'https': 'socks5h://127.0.0.1:1080',
}

print(requests.get('https://api.ipify.org?format=json', proxies=proxies, timeout=10).json())

Заметки о браузерах: Safari, Chrome и Firefox

  • Safari обычно следует системному прокси macOS.
  • Chrome в macOS обычно использует системные настройки прокси, если только не запущен с явными флагами прокси.
  • Firefox имеет свои собственные сетевые настройки. Если установлено «Использовать системные настройки прокси», он должен следовать macOS. Если вам нужен удалённый DNS, установите в Firefox «Ручная настройка прокси» и включите «Прокси DNS при использовании SOCKS v5».

После изменения настроек браузера проверьте в приватном окне, чтобы кэшированные соединения не ввели вас в заблуждение.

Проверка прокси и выявление утечек DNS

Проверьте конфигурацию системного прокси:

scutil --proxy

Проверьте внешний IP:

curl --socks5-hostname 127.0.0.1:1080 https://api.ipify.org

Затем сравните с тестом на утечки DNS. Ключевое различие — socks5 против socks5h: socks5 может разрешать DNS локально, тогда как socks5h отправляет имя хоста прокси для разрешения. Если важна геопривязка, обычно нужен удалённый DNS.

Отключение и избежание распространённых ошибок

  • Отключите прокси, когда он больше не нужен; иначе captive-порталы и локальные устройства могут не работать.
  • Проверьте конфликты с VPN-клиентами и другими сетевыми расширениями.
  • Помните, что системные настройки прокси охватывают не все приложения.
  • Если прокси работает на другой машине, не используйте 127.0.0.1.
  • Проверьте именно то приложение, которое вас интересует, а не только Терминал.

Вывод

macOS предоставляет настоящий флажок системного SOCKS-прокси, но это не универсальное решение. Используйте Системные настройки или networksetup для приложений, которые следуют системному прокси, затем настройте Терминал и инструменты разработчика напрямую с socks5h и проверьте поведение DNS.