ترفندهای پیشرفته
عبور دادن WSL2 و داکر از کلش ورج
پراکسی روی ویندوز بالاست، ولی curl داخل WSL2 باز هم تایماوت میشود. این ایراد نیست: WSL2 شبکه مجازی خودش را دارد و 127.0.0.1 داخلش به خود WSL اشاره میکند نه به میزبان.
اول دسترسی شبکه محلی را باز کنید
در تنظیمات، اجازه دسترسی از شبکه محلی را روشن کنید، وگرنه هسته فقط روی 127.0.0.1 گوش میدهد و WSL به آن نمیرسد. به پیام فایروال ویندوز «اجازه» بدهید. جزئیات در اشتراک پراکسی در شبکه محلی.
پیشنهاد همکاریلینک اشتراک را از کجا بیاوریم؟سرویس همکار ما هنگام ثبتنام ۱ گیگابایت ترافیک پرسرعت هنگکنگ رایگان میدهد.دریافت سرور پرسرعتWSL را به میزبان وصل کنید
export hostip=$(ip route show | grep -i default | awk '{print $3}')
export http_proxy="http://$hostip:7897"
export https_proxy="http://$hostip:7897"
آدرس میزبان ممکن است با هر بار راهاندازی مجدد WSL عوض شود، برای همین بهجای نوشتن ثابت از جدول مسیریابی خوانده میشود. این خطها را در ~/.bashrc بگذارید تا دیگر تایپ نکنید. شماره درگاه را از درگاه ترکیبی واقعی خودتان بردارید؛ اگر تغییرش دادهاید ببینید تداخل درگاه.
حالت آینهای سادهتر است
نسخههای جدیدتر ویندوز ۱۱ اجازه میدهند WSL پشته شبکه میزبان را آینه کند. در %USERPROFILE%\.wslconfig:
[wsl2]
networkingMode=mirrored
بعد از wsl --shutdown و راهاندازی مجدد، داخل WSL مستقیم 127.0.0.1:7897 کار میکند. ویندوز ۱۰ چنین حالتی ندارد و آنجا فقط روش بالا میماند.
داکر
از داخل کانتینر، میزبان با host.docker.internal در دسترس است. پراکسی مرحله ساخت ایمیج باید جدا داده شود؛ متغیرهای محیطی زمان اجرا به مرحله build نمیرسند:
docker build --build-arg http_proxy=http://host.docker.internal:7897 .
روشن بودن TUN هم گرفتن ترافیک WSL2 را تضمین نمیکند؛ مسیریابی آن کارت مجازی دست Hyper-V است. متغیرهای محیطی روش قابلاتکا باقی میمانند.
نصبکننده ویندوز ۶۴ بیت · نسخه 2.5.1 · رایگان و متنباز