بهطور پیشفرض پورتی که کلاینت باز میکند فقط از همان دستگاه در دسترس است و هر تلاش دیگری رد میشود. این پیشفرض معقولی است و با یک خط عوض میشود. بعد از تغییر، هر دستگاهی در همان زیرشبکه که بتواند نشانی پروکسی بگیرد در این خط شریک میشود: تلویزیون اندرویدی، کنسول بازی، آیپد، یا لپتاپ دیگری که اصلاً چیزی رویش نصب نیست.
چیزی که این کلید عوض میکند نشانی شنود است
این گزینه معمولاً Allow LAN یا «اجازه اتصال از شبکه محلی» نام دارد و در پیکربندی همان allow-lan: true است. وقتی خاموش باشد، هسته فقط روی 127.0.0.1 گوش میدهد و جز خود دستگاه کسی به آن نمیرسد. وقتی روشن شود، نشانی شنود به 0.0.0.0 تبدیل میشود و اتصالهایی که از هر کارت شبکهای برسند پذیرفته میشوند. اگر میزبان چند کارت شبکه دارد — مثلاً کابل شبکه بهعلاوه آداپتور مجازی یک ماشین مجازی — با bind-address میتوانید دامنه را به یک نشانی مشخص برگردانید و بقیه را بسته نگه دارید.
وصل شدن فقط سه قدم دارد
- روی میزبان، Allow LAN را روشن کنید و همانجا شماره پورت ترکیبی را یادداشت کنید. بهطور پیشفرض معمولاً 7890 است.
- نشانی میزبان در شبکه محلی را پیدا کنید. آن نشانیای را میخواهید که با 192.168. یا 10. شروع میشود، نه نشانی عمومیای که سایتهای «IP من چیست» نشان میدهند.
- روی دستگاه دیگر، پروکسی HTTP دستی تنظیم کنید: نشانی میزبان بهعنوان سرور و همان شماره بهعنوان پورت. در اندروید و بیشتر باکسهای تلویزیون این بخش زیر تنظیمات پیشرفته همان شبکه Wi-Fi است؛ در iOS پایین صفحه جزئیات شبکه؛ در کنسولها داخل پیکربندی دستی شبکه.
- یک نکته که بهتر است از اول بدانید: خیلی از باکسهای تلویزیون و کنسولها فقط یک فیلد برای پروکسی HTTP دارند و هیچجای منو خبری از SOCKS نیست. پورت ترکیبی هر دو پروتکل را میپذیرد، پس همان یک شماره کار میکند و لازم نیست دنبال چیز دیگری بگردید.
ipconfig
ip -4 addr show
ifconfig | grep inet
همهچیز درست به نظر میرسد و هیچ اتصالی برقرار نمیشود
نه بار از ده بار، مقصر فایروال است. اولین باری که کلاینت روی یک نشانی بیرونی گوش میدهد، ویندوز پنجرهای بالا میآورد و میپرسد اجازه ارتباط روی شبکههای خصوصی داده شود، عمومی، یا هر دو. آن پنجره اغلب پیش از آنکه کسی بخواندش بسته میشود، یا فقط گزینه عمومی تیک میخورد در حالی که Wi-Fi خانه در دسته خصوصی جا گرفته است. نتیجه میزبانی است که برای خودش بیعیب کار میکند و هر دستگاه دیگری را پس میزند، بیآنکه در رابط کلاینت نشانی از مشکل دیده شود. در قواعد ورودی فایروال، مدخل مربوط به کلاینت یا هسته را پیدا کنید و مطمئن شوید برای نوع شبکهای که الان در آن هستید مجاز است. در macOS معادلش در بخش فایروال تنظیمات سیستم است؛ در لینوکس بستگی دارد ufw استفاده میکنید یا firewalld.
اول پورت را بیازمایید، بعد به دستگاه شک کنید
curl -x http://127.0.0.1:7890 -I https://www.cloudflare.com
curl -x http://192.168.1.10:7890 -I https://www.cloudflare.com
خط اول را روی میزبان اجرا کنید و خط دوم را از رایانهای دیگر، با نشانی خودتان. میزبان جواب میدهد و آن یکی نه: یا فایروال است یا این دو واقعاً در یک زیرشبکه نیستند — در یک شبکه خانگی معمولی سه بخش اول نشانی هر دو باید یکسان باشد. هیچکدام جواب نمیدهد: مشکل از کلاینت یا گره است و ربطی به اشتراکگذاری در شبکه محلی ندارد. روی دستگاهی که curl ندارد کافی است در مرورگر صفحهای باز کنید؛ اگر تصویرها بالا آمدند، مسیر باز است.
پیش از روشن کردن، تکلیف را روشن کنید که چه کسی وصل میشود
- هر دستگاهی در آن زیرشبکه میتواند وصل شود و پروکسی کسی را نمیشناسد. برای گذاشتن یک در، در پیکربندی
authenticationاضافه کنید — فهرستی از جفتهای نام کاربری و گذرواژه — و از آن پس دستگاه هنگام تنظیم پروکسی دو فیلد بیشتر میخواهد. در خوابگاه، خانه مشترک یا محل کار این اختیاری نیست. - DHCP دیر یا زود نشانی دیگری میدهد. میزبان را ریاستارت کنید یا اجاره نشانی تمام شود، نشانی جابهجا میشود و همه دستگاههایی که تنظیم کرده بودید یکجا ساکت میشوند. روی روتر برای میزبان نشانی رزرو کنید یا نشانی ثابت بدهید تا این مرحله را دوباره تکرار نکنید.
- بعضی دستگاهها اصلاً تنظیم پروکسی ندارند؛ بسیاری از لوازم خانگی هوشمند و تلویزیونهای قدیمی همینطورند. اینکه کل زیرشبکه بدون هیچ تنظیمی از پروکسی رد شود کار کاملاً دیگری است — دستگاه دروازه یا مسیریابی شفاف — و هم سختی و هم دامنه خرابکاریاش بسیار بیشتر است. جای بحثش اینجا نیست.
allow-lan آدمها را تشخیص نمیدهد: هر دستگاهی در آن زیرشبکه میتواند پروکسی شما را خروجی رایگان خودش کند، و ترافیک و سوابق دسترسی به نام شما نوشته میشود. اگر واقعاً چارهای نیست، bind-address بههمراه authentication کف کار است نه امتیاز اضافه — و بیشتر وقتها پاسخ درست این است که روشنش نکنید.