Skip to content
مقاله / 2 دقیقه مطالعه

راه‌اندازی پروکسی SOCKS5 در macOS: سیستم‌عامل، ترمینال و پیکربندی هر برنامه

macOS واقعاً یک تنظیم پروکسی SOCKS سیستمی دارد، اما همه برنامه‌ها به آن احترام نمی‌گذارند. در اینجا نحوه تنظیم آن در System Settings و networksetup، مسیریابی Terminal و ابزارهای توسعه‌دهنده، و بررسی DNS و نشت اطلاعات را می‌بینید.

macOS واقعاً یک تنظیم پروکسی SOCKS دارد، که باعث می‌شود شبیه یک کلید سراسری سیستم به نظر برسد. در عمل، Safari و برخی برنامه‌ها از آن پیروی می‌کنند، در حالی که Terminal، Homebrew و بسیاری از ابزارهای توسعه‌دهنده آن را نادیده می‌گیرند. این راهنما نشان می‌دهد چگونه یک پروکسی SOCKS5 را در macOS از System Settings و networksetup تنظیم کنید، سپس چگونه ابزارهایی را که واقعاً استفاده می‌کنید وادار کنید بدون نشت DNS از آن تبعیت کنند.

تنظیم پروکسی SOCKS در macOS کجاست

System Settings > Network را باز کنید. Wi-Fi یا Ethernet را انتخاب کنید، روی Details کلیک کنید، سپس Proxies. کادرهای Web Proxy (HTTP)، Secure Web Proxy (HTTPS)، SOCKS Proxy و موارد دیگر را خواهید دید. بخش SOCKS Proxy یک سرور و پورت می‌خواهد. گزینه کشویی نسخه پروتکل ارائه نمی‌دهد. برای کنترل دقیق، برنامه‌های تک‌تک را با socks5h پیکربندی کنید، وقتی از آن پشتیبانی می‌کنند.

تنظیم پروکسی SOCKS در macOS از System Settings

  1. System Settings > Network را باز کنید.
  2. سرویس شبکه فعال، مانند Wi-Fi، را انتخاب کنید.
  3. روی Details > Proxies کلیک کنید.
  4. SOCKS Proxy را فعال کنید.
  5. آدرس سرور و پورت را وارد کنید.
  6. هر دامنه بای‌پسی که نیاز دارید، مانند منابع محلی، را اضافه کنید.
  7. روی OK کلیک کنید و اعمال کنید.

به خاطر داشته باشید که این تنظیم روی برنامه‌هایی تأثیر می‌گذارد که به پروکسی سیستمی 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'

نام سرویس شبکه را داخل کوتیشن بگذارید، خصوصاً اگر فاصله دارد.

وادار کردن Terminal و ابزارهای توسعه‌دهنده به استفاده از 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 تنظیمات شبکه خودش را دارد. اگر روی Use system proxy settings تنظیم شده باشد، باید از macOS پیروی کند. اگر به DNS راه دور نیاز دارید، Firefox را روی Manual proxy configuration تنظیم کنید و Proxy DNS when using SOCKS v5 را فعال کنید.

پس از تغییر تنظیمات مرورگر، در یک پنجره خصوصی آزمایش کنید تا اتصالات کش‌شده شما را گمراه نکنند.

بررسی پروکسی و شناسایی نشت DNS

پیکربندی پروکسی سیستم را بررسی کنید:

scutil --proxy

آی‌پی خروجی را بررسی کنید:

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

سپس با یک تست نشت DNS مقایسه کنید. تمایز کلیدی بین socks5 و socks5h است: socks5 ممکن است DNS را به صورت محلی resolve کند، در حالی که socks5h نام میزبان را برای resolve به پروکسی می‌فرستد. اگر هدف‌گیری جغرافیایی مهم است، DNS راه دور معمولاً همان چیزی است که می‌خواهید.

خاموش کردن آن و پرهیز از دام‌های رایج

  • وقتی دیگر به پروکسی نیاز ندارید، آن را غیرفعال کنید؛ در غیر این صورت ممکن است پورتال‌های captive و دستگاه‌های محلی از کار بیفتند.
  • برای تداخل با کلاینت‌های VPN و سایر افزونه‌های شبکه بررسی کنید.
  • به یاد داشته باشید که تنظیمات پروکسی سیستمی همه برنامه‌ها را پوشش نمی‌دهند.
  • اگر پروکسی روی ماشین دیگری اجرا می‌شود، از 127.0.0.1 استفاده نکنید.
  • برنامه واقعی مورد نظرتان را بررسی کنید، نه فقط Terminal را.

جمع‌بندی

macOS یک چک‌باکس واقعی پروکسی SOCKS سیستمی به شما می‌دهد، اما راه‌حل جهانی نیست. از System Settings یا networksetup برای برنامه‌هایی که از پروکسی سیستمی پیروی می‌کنند استفاده کنید، سپس Terminal و ابزارهای توسعه‌دهنده را مستقیماً با socks5h پیکربندی کنید و رفتار DNS را بررسی کنید.