Dante SOCKS روی loopback برای سرویس HTTPS فقط از طریق WireGuard
یک شنونده SOCKS اختصاصی را به loopback ببندید و یک مقصد TCP را مجاز کنید. منبع خروجی Dante، مسیر هسته، DNS و سیاست از دست رفتن تونل را جدا نگه دارید.
این راهنما به برنامهای که پروکسی را میشناسد دسترسی به یک مسیر WireGuard موجود میدهد، بدون انتشار پورت پروکسی روی سرور VPN یا در اینترنت. دیمن SOCKS رابط برنامه را فراهم میکند، WireGuard مسیر IP از پیش تأییدشده را فراهم میکند، و هیچکدام کاربر را به جای شما احراز هویت نمیکنند. هر گام زیر چیزی تولید میکند که میتوانید بازرسی کنید، و هر یک بازگشتی دارد: نمونه را متوقف کنید، قانون را بردارید یا تنظیم پروکسی برنامه را حذف کنید. هیچ چیز اینجا مسیر پیشفرض میزبان را تغییر نمیدهد.
مثال فرض میکند Dante 1.4.x بهعنوان یک نمونه اختصاصی و مدیریتشده روی یک ایستگاه کاری مطمئن Linux نصب شده و حساب سرویس و پیکربندی ثبت رویداد بسته در جای خود باقی مانده است. ایستگاه کاری صاحب 10.77.0.2 روی رابط WireGuard خود است، از طریق آن تونل به 10.60.0.20:443 میرسد، و نام درست سرویس app.corp.example است.
گام 1: شنونده را فقط به loopback ببندید
بخشهای شبکه، روش و قواعد را در پیکربندی فعال نمونه بگذارید و آدرسهای نمونه را جایگزین کنید. همه تنظیمات سرور پیش از بلوکهای قاعده میآیند:
internal: 127.0.0.1 port = 1080
external: 10.77.0.2
external.protocol: ipv4
clientmethod: none
socksmethod: none
client pass {
from: 127.0.0.1/32 to: 127.0.0.1/32
}
socks pass {
from: 127.0.0.1/32 to: 10.60.0.20/32 port = 443
command: connect
protocol: tcp
}این یک قطعه است، نه جایگزینی برای تنظیمات کاربر و ثبت رویداد بسته. یک پورت محلی بلااستفاده انتخاب کنید و تأیید کنید که این نمونه اختصاصی شنونده دیگری، قواعد عبور گستردهتر و ورودیهای زنجیره بالادست که قرارداد را تغییر دهند ندارد. اگر پیکربندی پیشین یک socks pass بدون محدودیت مقصد باقی گذاشته است، پیش از هر آزمونی آن را بردارید.
بازگشت این گام متوقف کردن نمونه است؛ پرونده پیکربندی میتواند روی دیسک بماند تا آن را برگردانید.
گام 2: دو قاعده بنویسید، نه یکی
مرجع پیکربندی Dante به دو نوع قاعده کارهای متفاوت میدهد. قاعده کلاینت اتصال به شنونده loopback را میپذیرد و مقصد آن آدرس خود شنونده است. قاعده SOCKS اتصال بعدی درخواستی به میزبان و پورت تأییدشده را مجاز میکند. درخواستهای بیتطابق بهطور پیشفرض مسدود میشوند، و به همین دلیل قاعده غایب دقیقاً مانند مسیر خراب به نظر میرسد.
توجه کنید این پیکربندی عمداً چه کاری نمیکند: هیچ گذرواژه SOCKS نمیخواهد. این برای میزبان محلی مطمئن مناسب است و احراز هویت کاربر نیست. هر فرایند دیگری روی آن ماشین هم میتواند از loopback استفاده کند. احراز هویت خود برنامه دور را سر جایش نگه دارید و این شکل بدون احراز هویت را برای کاربران محلی نامطمئن یا شنوندهای که به LAN نگاه میکند دوباره به کار نبرید.
گام 3: مسیر را از منبع درست بررسی کنید
external یک آدرس منبع خروجی انتخاب میکند؛ مسیر WireGuard نصب نمیکند. جستجوی فقطخواندنی برای منبع و مقصد نمونه:
ip -4 route get 10.60.0.20 from 10.77.0.2آن را در فضای نام شبکه واقعی Dante اجرا کنید، نه در هر پوستهای که تصادفاً باز دارید. مسیر، انتخاب همتای WireGuard، اجازه سمت دور و مسیر بازگشت همه باید با آن آدرس منبع جور باشند. جستجوی موفق لازم است و کافی نیست، زیرا هیچ نمیگوید که آیا انتهای دور درخواست را میپذیرد.
در برابر وسوسه افزودن مسیر پیشفرض مقاومت کنید تا جستجو موفق شود. پورت پروکسی فقط روی این ایستگاه کاری وجود دارد؛ تغییر مسیر پیشفرض میزبان برای ساختنش کل طراحی را وارونه میکند.
گام 4: با هویت مورد نظر بیازمایید
پس از آنکه مالک پیکربندی نصبشده را اعتبارسنجی کرد و نمونه را از طریق مدیر سرویس خود آغاز کرد، یک درخواست نمونه چنین است:
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/با socks5h، Dante تفکیک مقصد را انجام میدهد، اما Dante روی همین ایستگاه کاری اجرا میشود، پس تنظیم بهخودیخود DNS را به انتهای دور تونل نمیفرستد. تبدیلکننده تأییدشدهای که Dante استفاده میکند باید آدرس مجاز را برای آن نام برگرداند. فهرست خالی بدون پروکسی مانع میشود یک استثنای ارثی بیصدا SOCKS را دور بزند.
اعتبارسنجی نام میزبان و گواهی HTTPS را در آزمون حفظ کنید، سپس شنونده واقعی را بازرسی کنید و هر دو نیمه قرارداد را تأیید کنید: درخواست مجاز موفق میشود و مقصد استثناشده شکست میخورد. همچنین بررسی کنید که فرمانهای ارسال پشتیبانینشده رد بمانند، زیرا این قطعه فرمان SOCKS CONNECT روی TCP را مجاز میکند و هیچ چیز شبیه تونل عمومی UDP یا کل دستگاه را نه.
گام 5: تصمیم بگیرید وقتی تونل میافتد چه میشود
از دست رفتن تونل و راهاندازی دوباره نمونه را پیش از آنکه این را تولید بنامید بیازمایید. ناظری که Dante را پس از WireGuard آغاز میکند مسیریابی fail-closed نمیسازد و DNS fail-closed هم نمیسازد؛ هر دو باید از طریق مالک شبکه تحمیل شوند. ببینید برنامه وقتی تونل پایین است چه میکند: خطای پاک نتیجه خوبی است، سقوط بیصدا به یک تبدیلکننده عمومی نیست.
اگر آدرس تونل مقیدشده تغییر کرد بهروزرسانیها را هماهنگ کنید، زیرا external به آن سنجاق شده است. وقتی این ترتیب دیگر لازم نیست، این نمونه و تنظیم پروکسی برنامه را با هم بازنشسته کنید و مسیر WireGuard را به هر که مالک آن است واگذار کنید.