تحويل إتصال TCP إلى IP ومنفذ اخر

22-05-2015 Networking | Servers
إعلان

قد تحتاج في بعض الأحيان إلى عمل Redirect لكافة المعلومات التي تصل على Port معين إلى IP و Port مختلفين لمعالجة الطلب, فعلى سبيل المثال إريد أن اقوم بتحويل إي إتصال يصل إلى كمبيوتري الشخصي على Port رقم 1433 إلى جهاز أخر على نفس الشبكة الموجود عليها, يمكن فعل ذلك من خلال تحويل كافة الطلبات الواصلة على رقم المنفذ المعني إلى IP و Port مختلفين من خلال rinetd.

المنفذ رقم 1433 هو خاص للإتصال بقواعد البيانات Microsoft SQL Server, ويمكن تعديل هذه المعلومات من خلال SQL Configuration Manager - ومن ثم Protocols for SQLEXPRESS أو إسم ال INSTANCE الخاص بك - ومن ثم TCP/IP قم بتغيير الحالة إلى Enabled ثم اختر IP Addresses Tab لتعديل الإعدادات 

rinetd وبكل بساطة يقوم بعملية تحويل الإتصال من نوع TCP على منفذ معين إلى IP و Port تقوم أنت بتعيينها 

Rinetd: Redirects TCP connections from one IP address and port to another

يمكنك تحميل البرنامج مباشرة من هنا

قم بفك ضغط البرنامج داخل C, ومن ثم أدخل إلى مجلد rinetd وقم بإنشاء ملف جديد بإسم rinetd.conf وقم بكتابة المعلومات على الشكل التالي: 

192.168.100.198 25 192.168.100.251 1433
  • 192.168.100.198 هو IP الذي سيستقبل الإتصال
  • 25 هو المنفذ الذي سيفتح عليه الإتصال
  • 192.168.100.251 هو IP الذي ستقوم بتحويل الإتصال عليه
  • 1433 هو المنفذ الذي سيحول عليه الإتصال

وبعدها تقوم بفتح Command Prompt لتكتب عليه السطر التالي

C:\rinetd> rinetd -c rinetd.conf 

إذا ظهر لك الخطأ التالي بعد تنفيذ الأمر, قم بالتأكد من IP المدخل ورقم المنفذ

rinetd: couldn't bind to address 192.168.100.198 port 25

عن محمد جمال

مهندس حاسوب ومطور برمجيات, أعمل Freelancer في تطوير تطبيقات الويب من خلال ASP.NET منذ عام 2007 قمت بإنشاء عدة مشاريع في مجالات مختلفة (المتحكمات الدقيقة, الأنظمة المضمنة, الروبوت, برامج سطح المكتب, أنظمة قواعد البيانات) ومن هواياتي الخط العربي

subscribe

إعلان
إعلان

كيف يتم تحويلك إلى أقرب خادم عند إستخدامك لموقع إنترنت يستخدم شبكات توصيل المحتوى

26-12-2013 Networking
إعلان

 

خدمة توصيل المحتوى "CDN" التي عادة ما تستخدمها الشركات الضخمة والتي تملك عددا لا بأس به من الزوار والمستخدمين لخدماتها الإلكترونية تحرص كل الحرص على إبقاء الخدمة متاحة بشكل دائم مع إمكانية الوصول لها بسرعة كبيرة من خلال إستخدام خدمة CDN التي تقوم على مجموعة من الخوادم الموزعة "Distributed Servers" على مناطق جغرافية متعددة وكل خادم في منطقة ما يحتوي على بعض من محتويات الخادم الأصلي "Origin Content Provider" مثل Static Files وفي بعض الأحيان يتم عمل Cache لمعظم محتوى الموقع ويتم تحديثه بشكل مستمر.

لن أخصص حديثي هنا للتكلم حول كيفية عمل CDN وما هي الملفات التي يتم حفظها فقد أكتفيت بوضع فيديو توضيحي في الأعلى ليعطي فكرة عامة عن شبكات توصيل المحتوى, حاليا سأحاول التحدث عن مبدأ DNS-based load balancing والذي يقوم بتوزيع الطلبات من المستخدمين إلى أقرب خادم وهو الأسلوب المستخدم في إعادة توجيه المستخدمين داخل CDNs.

DNS-Based Load Balancing

عند طلبك لموقع معين وليكن على سبيل المثال jemo.me وخادمه الأصلي في الولايات المتحدة, وهو متوفر بخدمة توصيل المحتوى ومحتوياته موجودة على مجموعة من الخوادم حول العالم, فإذا قمت بالدخول إليه من الأردن كيف سيتم تحويلك إلى خادم الشرق الأوسط "الأقرب" بدل من الذهاب إلى الخادم الرئيسي "الولايات المتحدة" ؟

من المعروف أن لكل موقع IP Address خاص به يمكن استخدامه عوضا عن اسم الموقع ويكون مخزن داخل DNS Server تابع لشركة الإستضافة التي تم شراء المساحة منها وعادة لا يتوافر في مكان اخر بإستثناء Local DNS Servers التابعة لمزودي خدمة الإنترنت أو غيرهم ولفترة محدودة - "Cached".

عند قيامك بربط المساحة الخاصة بك مع اسم الموقع "Domain Name" يجب عليك تعبئة حقل Name Server في لوحة التحكم الخاصة باسم الموقع "Domain Name Panel" بالبيانات التي تزودك بها شركة الإستضافة وهي عنوان الخادم "DNS Server" الذي يحتوي على IP Address الخاص بموقعك وعادة ما يكون بالشكل التالي : 

ns1.hostingcompany.com

ns2.hostingcompany.com

في الغالب يكون هناك أكثر من DNS Servers لدى شركة الإستضافة وعادة ما يكون هناك خادمان, أحدهما رئيسي "Primary" والاخر ثانوي "Secondary" وبداخلهم نفس المحتوى ولكن لغايات الاحتياط في حال تعطل أحدهم يبقى هناك اخر.

ما الذي يحدث تحديدا ؟

  • تقوم بداية بكتابة موقع الإنترنت على Address Bar داخل المتصفح الخاص.
  • يتم البحث عن IP Address الخاص به في الكاش الخاصه بالمتصفح.
  • إذا لم يكن موجودا يتم البحث عنه في ملف hosts بالنظام نفسه.
  • إذا لم يكن موجودا يتم إرسال طلب إلى Local DNS Server بإسم الموقع المطلوب للحصول على IP Address الخاص به, فإذا كان محفوظا داخل Local DNS Server فيتم إرساله إلى المتصفح.
  • إذا لم يكن موجودا يتم إرسال طلب إلى Root Servers للإستعلام عن المكان الذي يمكن أن يجد به من يعرف IP Address لهذا العنوان.
  • يقوم Root Server بإرساله إلى Namespace خاصة بإمتداد الموقع المطلوب, فإذا كان الموقع com يقوم بإرساله إلى com Namespace.
  • عند الذهاب إليها يتم إعطاءه عنوان DNS Server الذي سيجد بداخله IP Address وهو نفسه الذي تم وضعة داخل لوحة تحكم اسم الموقع.
  • في المثال السابق كان العنوان ns1.hostingcompany.com ليذهب إليه, وبعدها يقوم DNS Server بإرسال IP الخاص بالموقع إلى Local DNS Server ليقوم بإرجاعها إلى المتصفح.

 

ما الذي يحدث عند إستخدام CDN ؟

  • تقوم بداية بكتابة موقع الإنترنت على Address Bar داخل المتصفح الخاص.
  • يتم البحث عن IP Address الخاص به في الكاش الخاصه بالمتصفح.
  • إذا لم يكن موجودا يتم البحث عنه في ملف hosts بالنظام نفسه.
  • إذا لم يكن موجودا يتم إرسال طلب إلى Local DNS Server بإسم الموقع المطلوب للحصول على IP Address الخاص به, فإذا كان محفوظا داخل Local DNS Server فيتم إرساله إلى المتصفح.
  • إذا لم يكن موجودا يتم إرسال طلب إلى Root Servers للإستعلام عن المكان الذي يمكن أن يجد به من يعرف IP Address لهذا العنوان.
  • يقوم Root Server بإرساله إلى Namespace خاصة بإمتداد الموقع المطلوب, فإذا كان الموقع com يقوم بإرساله إلى com Namespace.
  • عند الذهاب إليها يتم إعطاءه عنوان DNS Server الذي سيجد بداخله IP Address وهو نفسه الذي تم وضعة داخل لوحة تحكم اسم الموقع.
  • في المثال السابق كان العنوان ns1.hostingcompany.com ليذهب إليه, وبعدها يقوم DNS Server "بعمل حسابات خاصة معتمدا على موقع Local DNS Server الجغرافي ليقوم بعدها بإرسال IP Address لأقرب خادم على Local DNS Server الذي قام بالإستعلام عن الموقع" لتعود إلى Local DNS Server ثم يقوم بإرجاعها إلى المتصفح.

الذي يحدث تماما مشابه لما حدث سابقا بإستثناء خطوة واحدة فقط, فعند سؤال DNS Server عن عنوان الموقع يقوم أولا بعمل تقييم لموقعك الجغرافي اعتمادا على موقع Local DNS Server, فمن الطبيعي أن يكون مزود الأسماء المحلي الذي قمت بالإستعلام من خلاله قريب من منطقتك وهو ما يحدث غالبا وهذا ما يعتمد عليه مزودي شبكات توصيل المحتوى, وبناء عليه فيقوم بتزويدك بـ IP Address لخادم قريب منك, وعلى ذلك فستكون إستجابة DNS Server متغيرة تبعا لموقعك الجغرافي, فالعنوان الذي يقوم بتزويده لك في حال كنت في بريطانيا على سبيل المثال سيكون مختلفا عن العنوان في حال متصلا من الهند, وعليه قس.

في حال كان Local DNS Server يبعد عنك أكثر من خادم المحتوى الأصلي, فكيف سيتم معالجة مثل هذه الطلبات ؟

من الجدير بالذكر أن أي خادم داخل شبكة توصيل المحتوى يقوم بعمل تحديد للمدة بينة وبين المستخدم قبل البدء بالإستجابة على الطلبات من خلال إرسال بيانات واستقبالها وقياس الوقت المستغرق لهذه العملية "RTT", فإن كان ضمن قيمة معينه فيقوم الخادم بإرسال البيانات, وإذا كانت القيمة أكبر من المسموح بها فيتم إتخاذ إجراء خاص بخصوص هذه المسألة من خلال إرسال طلب خاص إلى DNS Server تحتوي على معلومات المستخدم ليتم تحويله إلى أقرب خادم.

الدكتور زكريا القضاة من جامعة اليرموك-كلية الحجاوي للهندسة التكنولوجية في قسم هندسة الحاسوب حصل على براءة إختراع في مجال CDNs من خلال عمل Routing للمستخدم إلى أقرب خادم مستخدما IP Address حقيقي للمستخدم عوضا عن إستخدام Local DNS Server لتحديد موقع المستخدم بشكل تقريبي, رابط الخبر


المعلومات التي قمت بكتابتها في الأعلى حلصت عليها من خلال قراءة مجموعة من المقالات تتحدث حول هذا الموضوع ولم أجد اي تناقض فيما بينها, فإن كانت لديك معلومة تناقض ما ورد في الأعلى أرجو أن يتم وضعها هنا ليتم التحقق من صحتها وتضمينها في هذه المقالة.

https://blogs.akamai.com/2013/03/intelligent-user-mapping-in-the-cloud.html

عن محمد جمال

مهندس حاسوب ومطور برمجيات, أعمل Freelancer في تطوير تطبيقات الويب من خلال ASP.NET منذ عام 2007 قمت بإنشاء عدة مشاريع في مجالات مختلفة (المتحكمات الدقيقة, الأنظمة المضمنة, الروبوت, برامج سطح المكتب, أنظمة قواعد البيانات) ومن هواياتي الخط العربي

subscribe

إعلان
إعلان

تنويه : الأراء في هذا الموقع شخصية ولا تبت لأحد بصلة تحت أي حال من الأحوال