راهنمای کاربر / پیشرفته

عبور دادن WSL2 و Docker Desktop از Clash

پیشرفته · به‌روزرسانی 2025-09-22 · حدود 2 دقیقه مطالعه

WSL2 روی یک شبکهٔ مجازی جداگانه اجرا می‌شود، بنابراین تنظیم پروکسی سیستم ویندوز برای آن بی‌معناست. اگر می‌خواهید curl، apt یا git داخل زیرسیستم از پروکسی عبور کنند، باید خودتان آن‌ها را به میزبان اشاره دهید.

گام اول: اجازهٔ اتصال از شبکهٔ محلی

در صفحهٔ General گزینهٔ Allow LAN را روشن کنید. بدون آن، Clash تنها روی 127.0.0.1 گوش می‌دهد و اتصال‌هایی که از کارت شبکهٔ مجازی WSL می‌آیند مستقیماً رد می‌شوند — رایج‌ترین دلیل «همه‌چیز طبق آموزش انجام شد ولی وصل نمی‌شود».

پیشنهاد همکاریلینک اشتراک را از کجا بیاوریم؟سرویس همکار ما هنگام ثبت‌نام ۱ گیگابایت ترافیک پرسرعت هنگ‌کنگ رایگان می‌دهد.دریافت سرور پرسرعت

گام دوم: اشاره به میزبان از داخل WSL

نشانی میزبان در شبکهٔ مجازی ممکن است با هر بار راه‌اندازی عوض شود، پس خواندن آن از /etc/resolv.conf مطمئن‌تر از نوشتن ثابت است. این خطوط را به ~/.bashrc اضافه کنید:

export hostip=$(grep nameserver /etc/resolv.conf | awk '{print $2}')
export http_proxy="http://$hostip:7890"
export https_proxy="http://$hostip:7890"

اگر WSL2 در حالت شبکهٔ آینه‌ای اجرا شود (networkingMode=mirrored در .wslconfig، فقط ویندوز ۱۱)، زیرسیستم پشتهٔ شبکه را با میزبان به اشتراک می‌گذارد و همان 127.0.0.1:7890 کافی است؛ خطوط بالا لازم نیستند.

Docker Desktop

ایمیج‌ها را سرویس Docker می‌گیرد و به متغیرهای محیطی داخل کانتینر کاری ندارد. در Settings ← Resources ← Proxies مقدار http://host.docker.internal:7890 را بنویسید. عبور دادن برنامه‌های داخل کانتینر از پروکسی موضوع جداگانه‌ای است: هنگام docker run گزینهٔ -e http_proxy=... را بدهید.

آخرین تله دیوارهٔ آتش ویندوز است. نخستین اتصال از WSL بدون هیچ پیامی مسدود می‌شود؛ در قوانین ورودی بررسی کنید Clash for Windows روی شبکه‌های خصوصی مجاز باشد.