پرش به مطلب اصلی

UdpConnector

📖 معرفی کلی

گره UdpConnector برای برقراری اتصال UDP به یک آدرس و پورت مشخص استفاده می‌شود. این نود به‌عنوان یک کلاینت UDP عمل کرده و اتصال‌های خروجی ایجاد می‌کند.

🔧 مشخصات فنی اساسی

ویژگیمقدارتوضیح
نوع نودAdapter (تک‌جهته)جهت کانکشن ها از چپ شروع و به راست پیش روی می‌کنند
لایه شبکهلایه ۴ (Transport Layer)کار با کانکشن‌ها، نه پکت‌های خام
موقعیت در زنجیرانتهای زنجیرفقط در انتهای زنجیر قابل استفاده است
وابستگینیاز به حداقل یک نود قبلیبرای دریافت داده‌ها ضروری است
نکات
  • جایگاه ثابت: این نود باید حتماً در انتهای یک زنجیر قرار گیرد و نمی‌تواند در میانه یا ابتدای زنجیر استفاده شود.
  • وابستگی اجباری: برای عملکرد صحیح، نیاز به نود قبلی دارد تا داده‌های دریافتی را به آن منتقل کند.
  • عدم دوجهته بودن: برخلاف برخی نودهای لایه ۳، این نود فقط داده را از چپ به راست منتقل می‌کند.
  • نود آداپتر: این نود از نوع Adapter است.

این نود با TcpConnector فرق داره ؛ صرفا بر اساس تایم اوت کانکشن مقصد رو می بنده و هیچ sense از بسته یا باز بودن نداره چون طبیعیت UDP همینجوریه.

به طور کلی ۱۸۰ ثانیه بعد از اخرین پکت ارسالی یا دریافتی ؛ اگه تبادل جدید صورت نگیره سوکت آزاد خواهد شد.


🎯 قابلیت‌ها و عملکردها

گره UdpConnector دارای قابلیت‌های زیر است:

🌐 مدیریت اتصالات UDP

  • برقراری اتصال به آدرس و پورت مقصد به‌عنوان یک کلاینت UDP
  • مدیریت کامل چرخه‌ی حیات سوکت‌ها: از ایجاد تا بسته شدن و تبادل داده با نود قبلی

🔒 کنترل دسترسی پیشرفته

  • پشتیبانی از فرمت‌های مختلف شبکه مانند CIDR (مثلاً /24، /32)

🚪 پشتیبانی از چندین پورت

  • قابلیت انتخاب پورت مقصد به‌صورت تصادفی از یک بازه‌ی مشخص

🌍 پشتیبانی از چندین IP

  • قابلیت اتصال به یک IP با subnet mask (مثلاً در سرورهایی که IPv6 با subnet می‌دهند، می‌تواند هر بار یک IP از بازه انتخاب کند)

🌐 پشتیبانی از دامنه

  • امکان تبدیل دامنه به IP برای برقراری اتصال

🔄 پشتیبانی از داده‌های متغیر

  • قابلیت دریافت آدرس و پورت مقصد از context و اتصال به مقصد مورد نظر
  • مثلاً اگر نود قبلی یک Socks5Server یا HttpProxyServer باشد، می‌تواند آدرس درخواستی کاربر را خوانده و به آن متصل شود

⚙️ راهنمای پیکربندی

📋 ساختار کلی

{
"name": "connector_name",
"type": "UdpConnector",
"settings": {
// تنظیمات پایه
"address": "1.1.1.1",
"port": 8443,
// تنظیمات اختیاری
"domain-strategy": "ipv4"
},
"next": "next_node_name"
}

🔧 پارامترهای ضروری

1. Address (آدرس مقصد)

IP مشخص:

"address": "192.168.1.100"

برای اتصال مستقیم به یک آدرس IP ثابت.

آدرس از context:

"address": "dest_context->address"

برای اتصال به آدرس درخواستی کاربر (این مقدار باید توسط نودهای پروکسی مانند Socks5Server، HttpProxyServer و غیره تنظیم شود).

دامنه:

"address": "google.com"

برای اتصال به یک دامنه که به IP تبدیل می‌شود (در این حالت می‌توانید پارامتر domain-strategy را نیز تنظیم کنید).

2. Port (پورت مقصد)

پورت منفرد:

"port": 8443

پورت از context:

"port": "dest_context->port"

پورت تصادفی از یک بازه:

"port": "random(1000,2000)"

در این حالت برای هر اتصال یک پورت تصادفی جدید از بازه‌ی مشخص انتخاب می‌شود.


🔧 پارامترهای اختیاری

پارامتر domain-strategy

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

مقادیر مجاز:

"domain-strategy": "prefer-ipv4"
"domain-strategy": "prefer-ipv6"
"domain-strategy": "ipv4"
"domain-strategy": "ipv6"

نکته مهم: اگر از حالت prefer استفاده نکنید و دامنه IP نسخه‌ی مورد نظر را نداشته باشد، اتصال لغو می‌شود.