Skip to content
Beginner / 3 min read

Socks5 Configurator در لینوکس: مسیریابی برنامه‌ها از طریق پروکسی SOCKS5 با Proxychains

لینوکس یک برنامه تنظیم‌کننده SOCKS5 واحد ندارد، بنابراین این راهنما proxychains-ng و redsocks را برای مسیریابی SOCKS5 به‌صورت هر فرمان و در سطح سیستم راه‌اندازی می‌کند، تأیید می‌کند که IP شما واقعاً تغییر کرده است، و توضیح می‌دهد چه زمانی تونل WireGuard انتخاب مناسب‌تری است.

لینوکس SOCKS5 WireGuard حریم خصوصی/ناشناسی

مرور کلی

کاربران ویندوز و مک یک پنجره گرافیکی «تنظیم‌کننده SOCKS5» دریافت می‌کنند. لینوکس چنین چیزی عرضه نمی‌کند، بنابراین همان کار با دو ابزار کوچک انجام می‌شود که خودتان به‌صورت دستی پیکربندی می‌کنید:

  • proxychains-ng — یک فرمان واحد را می‌پیچد و اتصالات TCP خروجی آن را به‌زور از پروکسی SOCKS5 شما عبور می‌دهد.
  • redsocks — ترافیک را به‌صورت شفاف از طریق iptables هدایت می‌کند، که به رفتار سطح سیستم نزدیک‌تر است.

این آموزش هر دو را پوشش می‌دهد، نشان می‌دهد چگونه اثبات کنید که آدرس IP شما واقعاً تغییر کرده است، و موقعیت‌هایی را توضیح می‌دهد که در آن‌ها SOCKS5 برای هر برنامه ابزار اشتباهی است و تونل WireGuard — برای مثال یک دروازه اختصاصی از NordLayer — انتخاب مناسب‌تری است.

پیش‌نیازها

  • یک دسکتاپ یا سرور لینوکس. دستورها برای Debian/Ubuntu، Fedora و Arch نمایش داده شده‌اند.
  • دسترسی sudo برای نصب بسته و ویرایش پیکربندی.
  • یک نقطه پایانی SOCKS5 فعال: میزبان، درگاه، و نام کاربری/گذرواژه اگر ارائه‌دهنده نیاز به احراز هویت دارد.
  • curl نصب‌شده برای تأیید (به‌طور پیش‌فرض روی بیشتر توزیع‌ها موجود است).

مراحل

۱. قبل از دستکاری سیستم، نقطه پایانی SOCKS5 را تأیید کنید

همیشه ابتدا تأیید کنید که پروکسی به‌تنهایی کار می‌کند، تا همزمان دو چیز را اشکال‌زدایی نکنید:

curl -x socks5h://YOUR_USERNAME:YOUR_PASSWORD@PROXY_HOST:1080 https://ifconfig.me/ip

دو جزئیات اینجا مهم است:

  • socks5h:// از پروکسی می‌خواهد که نام‌های DNS را برای شما حل کند. socks5:// ساده آن‌ها را به‌صورت محلی حل می‌کند، که می‌تواند نام‌های میزبانی که بازدید می‌کنید را افشا کند.
  • اگر گذرواژه شما شامل @، : یا / است، آن را درصدگذاری کنید، یا از curl --proxy-user استفاده کنید به‌جای جاسازی آن در URL.

۲. نصب proxychains-ng

دستور مناسب توزیع خود را انتخاب کنید:

# Debian / Ubuntu
sudo apt update && sudo apt install -y proxychains4
# Fedora
sudo dnf install -y proxychains-ng
# Arch
sudo pacman -S proxychains-ng

تأیید کنید که فایل اجرایی به‌صورت proxychains4 (Debian/Ubuntu) یا proxychains (Fedora/Arch) در دسترس است:

proxychains4 -h || proxychains -h

۳. زنجیره پروکسی را پیکربندی کنید

فایل پیکربندی را باز کنید (مسیر بر اساس بسته متفاوت است) و بلوک [ProxyList] را ویرایش کنید:

sudo nano /etc/proxychains4.conf   # Debian / Ubuntu
sudo nano /etc/proxychains.conf    # Fedora / Arch
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks5 203.0.113.10 1080 YOUR_USERNAME YOUR_PASSWORD

نکاتی درباره تنظیمات:

  • proxy_dns جست‌وجوهای DNS را به‌جای حل‌کننده محلی شما از طریق پروکسی انجام می‌دهد.
  • strict_chain از هر پروکسی به ترتیب استفاده می‌کند. اگر می‌خواهید گام‌های ناموفق رد شوند از dynamic_chain استفاده کنید، یا برای چرخش بین چند ورودی از random_chain همراه با chain_len استفاده کنید.
  • 203.0.113.10 1080 را با میزبان و درگاه ارائه‌دهنده خود جایگزین کنید، و اگر نقطه پایانی نیاز به احراز هویت ندارد آرگومان‌های نام کاربری/گذرواژه را حذف کنید.

۴. آزمایش کنید که یک فرمان اکنون با IP پروکسی خارج می‌شود

یک درخواست مستقیم را با یک درخواست پوشش‌داده‌شده مقایسه کنید:

curl -s https://ifconfig.me/ip          # your normal IP
proxychains4 -q curl -s https://ifconfig.me/ip   # should show the proxy IP

پرچم -q بنر proxychains را سرکوب می‌کند تا فقط پاسخ را ببینید. می‌توانید برنامه‌های گرافیکی را هم به همین روش بپیچید:

proxychains4 -q chromium https://ifconfig.me/ip

اگر هر دو فرمان یک IP یکسان برگردانند، همین‌جا متوقف شوید و قبل از ادامه بخش عیب‌یابی را دنبال کنید.

۵. متغیرهای محیطی پروکسی را برای ابزارهای همکار تنظیم کنید

بسیاری از ابزارهای خط فرمان متغیرهای استاندارد پروکسی را می‌خوانند، که وقتی نمی‌خواهید به ابتدای هر فرمان چیزی اضافه کنید مفید است:

export ALL_PROXY="socks5h://YOUR_USERNAME:YOUR_PASSWORD@PROXY_HOST:1080"
export HTTPS_PROXY="$ALL_PROXY"
export HTTP_PROXY="$ALL_PROXY"

curl، wget، git، pip و requests پایتون به‌طور پیش‌فرض این‌ها را رعایت می‌کنند، اما بسیاری از برنامه‌های دیگر کاملاً آن‌ها را نادیده می‌گیرند. با این به‌عنوان یک لایه راحتی رفتار کنید، نه یک پیکربندی در سطح سیستم.

۶. اختیاری: هدایت شفاف با redsocks

اگر نیاز دارید برنامه‌هایی که هیچ چیزی درباره پروکسی نمی‌دانند به‌صورت خودکار مسیریابی شوند، redsocks به‌همراه یک قاعده iptables این کار را انجام می‌دهد. پیکربندی را ایجاد کنید:

base {
    log_debug = off;
    log_info = on;
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;
    ip = 203.0.113.10;
    port = 1080;
    type = socks5;
    login = "YOUR_USERNAME";
    password = "YOUR_PASSWORD";
}

سرویس را راه‌اندازی کنید و قواعد هدایت را اضافه کنید. قاعده اول ضروری است: ترافیک به خود پروکسی هرگز نباید دوباره به داخل پروکسی هدایت شود، وگرنه یک حلقه ایجاد می‌کنید.

sudo systemctl restart redsocks

sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 203.0.113.10 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

Redsocks فقط TCP را هدایت می‌کند. ترافیک UDP، ICMP و هر چیزی که iptables را دور بزند همچنان از اتصال عادی شما خارج می‌شود، بنابراین این معادل VPN نیست.

SOCKS5 در لینوکس در برابر دروازه WireGuard

SOCKS5 برای هر برنامه و یک تونل WireGuard مشکلات هم‌پوشان را به روش‌های متفاوتی حل می‌کنند:

نیازمندی SOCKS5 با proxychains/redsocks تونل WireGuard (مثلاً دروازه اختصاصی)
دامنه یک فرمان یا برنامه در هر زمان هر برنامه و پروتکل روی دستگاه
مدیریت DNS به socks5h و proxy_dns بستگی دارد داخل تونل حل می‌شود
UDP و ICMP توسط proxychains پوشش داده نمی‌شود از طریق تونل حمل می‌شود
IP خروجی هر چیزی که ارائه‌دهنده SOCKS5 تخصیص دهد IP پایدار دروازه اختصاصی که می‌توانید در فهرست مجاز قرار دهید
تلاش پیکربندی کم، اما برای هر برنامه تکرار می‌شود راه‌اندازی یک‌باره تونل
بهترین برای مسیریابی و آزمایش سریع به‌ازای هر فرمان حریم خصوصی کل دستگاه، دسترسی تیمی، خودکارسازی فهرست مجاز

مسیر SOCKS5 را انتخاب کنید وقتی فقط به یک ابزار نیاز دارید که از IP دیگری خارج شود. یک تونل WireGuard را انتخاب کنید وقتی کل ماشین — یا کل یک تیم — به مسیریابی سازگار و رمزگذاری‌شده نیاز دارد. یک گزینه مدیریت‌شده مانند NordLayer تونل‌های WireGuard با دروازه‌های اختصاصی، فرایند شروع به کار مناسب تیم‌ها، و صورت‌حساب ماهانه ثابت ارائه می‌دهد که پیش‌بینی آن آسان‌تر از قیمت‌گذاری مبتنی بر مصرف است.

عیب‌یابی

proxychains روی یک فایل اجرایی خاص اثری ندارد

proxychains با پیش‌بارگذاری یک کتابخانه اشتراکی کار می‌کند، بنابراین نمی‌تواند برنامه‌های پیوندشده به‌صورت ایستا، فایل‌های اجرایی Go، یا فایل‌های اجرایی setuid را رهگیری کند. بررسی کنید با:

ldd $(which YOUR_APP)

اگر خروجی می‌گوید "not a dynamic executable"، به‌جای آن از redsocks استفاده کنید — یا ماشین را از طریق یک تونل WireGuard مسیریابی کنید، که زیر لایه برنامه کار می‌کند.

IP شما همچنان تغییرنکرده به نظر می‌رسد

  • تأیید کنید که از socks5h:// استفاده می‌کنید یا proxy_dns فعال است؛ یک URL ساده socks5:// نام‌ها را به‌صورت محلی حل می‌کند.
  • بررسی کنید که آیا ارائه‌دهنده انتظار احراز هویت دارد و آیا اطلاعات ورود شما درست است.
  • ابتدا با curl دوباره آزمایش کنید. اگر curl IP پروکسی را نشان می‌دهد اما برنامه این کار را نمی‌کند، برنامه پیش‌بارگذاری را دور می‌زند.

اتصالات زمان‌شان تمام می‌شود یا معلق می‌مانند

  • مقدار tcp_connect_time_out را در /etc/proxychains4.conf افزایش دهید.
  • تأیید کنید که میزبان پروکسی روی آن درگاه از شبکه شما قابل دسترسی است (فایروال‌های خروجی اغلب درگاه‌های غیراستاندارد را مسدود می‌کنند).
  • تعداد گام‌ها در زنجیره را کاهش دهید — زنجیره‌های strict طولانی تأخیر را چند برابر می‌کنند.

redsocks حلقه می‌زند یا همه‌چیز را رها می‌کند

قاعده RETURN شما برای IP خود پروکسی باید اول در زنجیره REDSOCKS بیاید. اگر قواعد را خارج از ترتیب ویرایش کردید، پاک‌سازی و بازسازی کنید:

sudo iptables -t nat -F REDSOCKS

خلاصه

لینوکس تنظیم‌کننده گرافیکی SOCKS5 را با proxychains4 برای مسیریابی هر فرمان و redsocks برای هدایت شفاف TCP جایگزین می‌کند. نقطه پایانی را با curl تأیید کنید، proxy_dns را برای جلوگیری از نشت DNS فعال نگه دارید، و به یاد داشته باشید که هیچ‌کدام از این ابزارها UDP یا فایل‌های اجرایی پیوندشده ایستا را پوشش نمی‌دهند. وقتی نیاز دارید هر برنامه و پروتکل روی دستگاه از یک IP خروجی پایدار و اختصاصی استفاده کند — به‌ویژه برای یک تیم — یک تونل WireGuard، مانند یک دروازه اختصاصی از NordLayer، انتخاب ساده‌تر و قابل‌اعتمادتری است.