Настройка 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 через Системные настройки
- Откройте Системные настройки > Сеть.
- Выберите активную сетевую службу, например Wi-Fi.
- Нажмите «Подробнее» > «Прокси».
- Включите «Прокси SOCKS».
- Введите адрес сервера и порт.
- Добавьте необходимые домены для обхода, например локальные ресурсы.
- Нажмите «ОК» и примените.
Имейте в виду, что эта настройка влияет на приложения, которые учитывают системный прокси 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.