Конфігурація системного проксі на macOS спрямовує весь мережевий трафік від програм, які дотримуються системних налаштувань проксі, через вказаний проксі-сервер, що зазвичай керується через Системні параметри (System Settings) або утиліту командного рядка networksetup.
macOS надає централізований механізм для налаштування параметрів проксі, які автоматично використовуватимуть більшість програм, включаючи веббраузери (Safari, Chrome, Firefox за замовчуванням), інструменти командного рядка (curl, wget) та інше мережеве програмне забезпечення. Це забезпечує послідовну мережеву поведінку в операційній системі без налаштування для кожної програми окремо.
Методи конфігурації
Існує два основні методи налаштування системних проксі на macOS:
- Графічний інтерфейс користувача (GUI): Використання програми Системні параметри. Це підходить для інтерактивних, одноразових налаштувань.
- Інтерфейс командного рядка (CLI): Використання утиліти
networksetup. Цей метод кращий для скриптів, автоматизації або віддаленого адміністрування.
Конфігурація через GUI: Системні параметри
Щоб налаштувати параметри проксі через Системні параметри macOS:
- Відкрийте Системні параметри.
- Перейдіть до розділу Мережа на бічній панелі.
- Виберіть активний мережевий інтерфейс (наприклад, Wi-Fi, Ethernet) зі списку.
- Натисніть кнопку Деталі... для вибраного інтерфейсу.
- У новому вікні виберіть Проксі на бічній панелі.
У панелі "Проксі" доступно кілька опцій:
-
Автоматична конфігурація проксі:
- Автоматичне виявлення проксі: Дозволяє виявляти параметри проксі за допомогою протоколу Web Proxy Auto-Discovery Protocol (WPAD).
- Автоматична конфігурація проксі: Вказує URL-адресу файлу Proxy Auto-Configuration (PAC).
-
Ручна конфігурація проксі:
- Веб-проксі (HTTP): Налаштовує HTTP-проксі для незашифрованого веб-трафіку.
- Безпечний веб-проксі (HTTPS): Налаштовує HTTPS (SSL/TLS) проксі для зашифрованого веб-трафіку.
- FTP-проксі: Налаштовує проксі для протоколу передачі файлів.
- SOCKS-проксі: Налаштовує SOCKS-проксі, який може обробляти різні типи мережевого трафіку.
- Gopher-проксі: (Застарілий) Налаштовує проксі для протоколу Gopher.
- Проксі для потокового передавання (RTSP/RTSP): Налаштовує проксі для протоколу Real-Time Streaming Protocol.
Для кожного типу ручного проксі:
- Сервер: Введіть IP-адресу або ім'я хоста проксі-сервера.
- Порт: Введіть номер порту, на якому проксі-сервер прослуховує.
- Проксі-сервер вимагає пароль: Поставте прапорець, якщо потрібна автентифікація. Введіть ім'я користувача та пароль.
Параметри обходу проксі
Поле "Обходити параметри проксі для цих хостів та доменів" дозволяє вказати призначення, які не повинні використовувати налаштований проксі. Введіть імена хостів, доменні імена або IP-адреси, розділені комами. Підтримуються символи підстановки (*) для зіставлення доменів.
Приклад:
*.local, 192.168.1.0/24, localhost, 127.0.0.1
Конфігурація через CLI: networksetup
Утиліта командного рядка networksetup надає повний контроль над мережевими налаштуваннями, включаючи проксі. Вона працює з "мережевими службами", які відповідають інтерфейсам, переліченим у Системних параметрах (наприклад, "Wi-Fi", "Ethernet").
Перелік мережевих служб
Перед налаштуванням визначте точну назву вашої мережевої служби:
networksetup -listallnetworkservices
Приклад виводу:
An asterisk (*) denotes that a network service is disabled.
Wi-Fi
Ethernet
Bluetooth PAN
Thunderbolt Bridge
Використовуйте назву точно так, як вона відображається (наприклад, "Wi-Fi").
Налаштування HTTP/HTTPS проксі
Щоб налаштувати веб-проксі (HTTP) та безпечний веб-проксі (HTTPS) для служби:
# Налаштувати HTTP-проксі (IP-адреса:порт)
networksetup -setwebproxy "Wi-Fi" 192.168.1.100 8080
# Налаштувати HTTPS-проксі (IP-адреса:порт)
networksetup -setsecurewebproxy "Wi-Fi" 192.168.1.100 8080
Щоб включити автентифікацію:
# Налаштувати HTTP-проксі з автентифікацією
networksetup -setwebproxy "Wi-Fi" 192.168.1.100 8080 ім'я_користувача пароль
# Налаштувати HTTPS-проксі з автентифікацією
networksetup -setsecurewebproxy "Wi-Fi" 192.168.1.100 8080 ім'я_користувача пароль
Примітка: Надання облікових даних безпосередньо в командному рядку зазвичай небезпечно, оскільки вони можуть зберігатися в історії оболонки. Розгляньте альтернативні методи, такі як змінні середовища або Keychain для конфіденційних облікових даних у скриптах.
Налаштування SOCKS-проксі
Щоб налаштувати SOCKS-проксі:
networksetup -setsocksfirewallproxy "Wi-Fi" 192.168.1.100 1080
З автентифікацією (подібна примітка щодо безпеки, як вище):
networksetup -setsocksfirewallproxy "Wi-Fi" 192.168.1.100 1080 ім'я_користувача пароль
Вимкнення проксі
Щоб вимкнути певні проксі:
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off
Щоб вимкнути всі ручні проксі для служби:
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setftpproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off
# ... і так далі для інших типів проксі
Налаштування автоматичної конфігурації проксі (PAC-файл)
Щоб вказати URL-адресу PAC-файлу:
networksetup -setautoproxyurl "Wi-Fi" http://proxy.example.com/proxy.pac
Щоб увімкнути автоматичне виявлення проксі (WPAD):
networksetup -setautoproxydiscovery "Wi-Fi" on
Налаштування доменів для обходу проксі
Щоб налаштувати домени, які обходять проксі:
networksetup -setproxybypassdomains "Wi-Fi" "*.local" "192.168.1.0/24" "localhost"
Аргументи після назви служби є записами обходу. Щоб очистити існуючі записи обходу:
networksetup -setproxybypassdomains "Wi-Fi" ""
Пояснення типів проксі
| Тип проксі | Оброблюваний протокол | Опис | Протокол, що обробляється | Опис |
Файли автоматичної конфігурації проксі (PAC)
PAC-файл — це JavaScript-файл, який визначає, як веббраузери та інші користувацькі агенти можуть вибрати відповідний проксі-сервер для даної URL-адреси. Це забезпечує гнучкість, дозволяючи різні конфігурації проксі залежно від хоста призначення, домену або навіть часу доби.
Вказівка PAC-файлу
Як зазначено в розділах GUI та CLI, ви можете вказати URL-адресу PAC-файлу. macOS завантажить і використовуватиме цей скрипт для визначення використання проксі.
Базова структура PAC-файлу
PAC-файл повинен містити функцію з назвою FindProxyForURL(url, host). Ця функція повертає рядок, що вказує проксі для використання.
function FindProxyForURL(url, host) {
// Пряме підключення для внутрішніх хостів
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(host, "192.168.1.0", "255.255.255.0")) {
return "DIRECT";
}
// Використання певного проксі для деяких доменів
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example.com:8080";
}
// За замовчуванням використовувати основний проксі для всього іншого трафіку
return "PROXY mainproxy.yourcompany.com:8080; DIRECT";
// Резервний варіант "DIRECT" використовується, якщо проксі недоступний.
}
Поширені функції PAC:
* isPlainHostName(host): Повертає true, якщо хост не містить крапок.
* dnsDomainIs(host, domain): Повертає true, якщо хост знаходиться в зазначеному домені.
* shExpMatch(host, pattern): Повертає true, якщо хост відповідає шаблону оболонки.
* isInNet(host, pattern, mask): Повертає true, якщо IP-адреса хоста знаходиться в зазначеній підмережі.
* myIpAddress(): Повертає IP-адресу машини.
* dnsResolve(host): Перетворює ім'я хоста DNS в IP-адресу.
Параметри обходу проксі
Конфігурація "Обходити параметри проксі для цих хостів та доменів" дозволяє вказати призначення, які не повинні маршрутизувати трафік через налаштований проксі. Це важливо для прямого доступу до внутрішніх ресурсів, запобігання зайвого навантаження на проксі або вирішення проблем несумісності проксі для певних служб.
Синтаксис для записів:
* Імена хостів: localhost, myinternalserver
* Доменні імена: *.local, example.com, sub.example.net
* * діє як символ підстановки. *.domain.com відповідає host.domain.com та sub.host.domain.com.
* IP-адреси: 192.168.1.10
* IP-підмережі: 192.168.1.0/24, 10.0.0.0/8
* Підтримується нотація CIDR.
Записи зазвичай розділяються комами в GUI або надаються як окремі аргументи для networksetup -setproxybypassdomains.
Перевірка та усунення несправностей
Перевірка поточних налаштувань проксі
Щоб перевірити поточні активні налаштування проксі для мережевої служби за допомогою CLI:
# Отримати всю інформацію про проксі для служби
networksetup -getwebproxy "Wi-Fi"
networksetup -getsecurewebproxy "Wi-Fi"
networksetup -getsocksfirewallproxy "Wi-Fi"
networksetup -getautoproxyurl "Wi-Fi"
networksetup -getautoproxydiscovery "Wi-Fi"
networksetup -getproxybypassdomains "Wi-Fi"
Поширені проблеми
- Неправильна IP-адреса/порт: Перевірте, чи правильні адреса та порт проксі-сервера.
- Помилка автентифікації: Переконайтеся, що ім'я користувача та пароль правильні. Перевірте журнали проксі-сервера на наявність спроб автентифікації.
- Блокування брандмауером: Локальний брандмауер на клієнті macOS або мережевий брандмауер між клієнтом і проксі-сервером може блокувати трафік на порту проксі.
- Проксі-сервер недоступний: Сам проксі-сервер може бути вимкнений або недоступний з мережевого сегмента клієнта.
- Помилки PAC-файлу: Якщо використовується PAC-файл, синтаксичні помилки в JavaScript можуть перешкодити його роботі. Протестуйте PAC-файл за допомогою валідатора або спростіть його, щоб виявити проблеми. Переконайтеся, що URL-адреса PAC-файлу доступна.
- Роздільна здатність DNS: Переконайтеся, що клієнт macOS може розділити ім'я хоста проксі-сервера (якщо використовується) та зовнішні імена хостів.
- Перевизначення для конкретних програм: Деякі програми можуть мати власні налаштування проксі, які перевизначають системні конфігурації. Перевірте конкретні налаштування програми, якщо трафік не маршрутизується, як очікувалося.