DreamNet

أخيرا حل مشكلة تجاوز الروتر في الاتصال

9 ردود في هذا الموضوع

السلام عليكم ورحمة الله وبركاته

بعد بحث طويلا وتجارب عديدة تم حل مشكلة تجاوز الروتر للاتصال المباشر بين طرفين موجودين على الأنترنت

الحل وجدته في أحد المنتديات الأجنبية لكني وجدت مشكل مع الروتر الذي أعمل به لذلك بدأت بالبحث في جانب الUPNP والتي تكون مدعومة عادة من معظم الرواتر الآن وقد حللت المشكل مع الروتر الذي أملكه وتم الاتصال بنجاح

العملية تعتمد على التحاور مع الروتر بارسال اوامر في منطقة آمنة من أجل فتح منفذ داخل الروتر من أجل استقبال الاتصال الخارجي فقط يجب كما قلنا أن تكون خاصية UPNP مفعلة على الروتر

ضمن المثال المقترح فئة Socket مبسطة وجميلة طبعا سهلة الاستعمال وجدتها على vbfrance فقط قمت بتعديل بسيط داخلها من أجل دعم الكتابة العربية

المثال مطروح للتجربة يحوي على 3 مشاريع

الأول كلاس UPNPSocket قمت فيها بتجميع الأكواد المهمة المستعملة

الثاني برنامج الخادم

post-23361-1234450355_thumb.jpg

الثالث برنامج العميل

post-23361-1234450344_thumb.jpg

عند تشغيل الخادم يعطيك رقم الايبي الحقيقي الذي يمكن للعميل الاتصال به مع الخادم

لذلك يجب أن يعرف العميل هذا العنوان لكي يتصل بالخادم

الملفات:

الكود سورس

UPNPSocket.zip

الملفات التنفيذية من أجل التجربة

EXE.zip

بالتوفيق للجميع

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله بك اخي دريم بالفعل مشاركة مميزة إذ لم يطرح هذا الموضوع لنقاش من قبل ,

يعتبر تقديم حل الـUpnP لتجاوز الراوتر حل جيد من ناحية عمل اتصال مؤقت بين اثنين من الـClients لكن لا يمكن اعتماده في التطبيقات التي تعتمد على الإتصال الدائم إذ ان تغير الأي بي سيؤدي إلى فقدان الإتصال كما ان الطرف المقابل يجب أن يعرف الـIP الخاص بالطرف الآخر ولكن يمكن حل هذا الأمر بوجود جهاز ثالث Server بين الإثنين يحوي على قاعدة بيانات يتصل من خلاله الجهاز الأول ليخزن IP الذي يملكه في تلك اللحظة ويتصل الجهاز الثاني بقاعدة البيانات لقراءة ذلك الـIP ...

المشكلة هنا بعدم احتواء هذه البروتوكول على Authentication مدمج بحيث لا يسمح بالإتصال إلا من الجهة الموثوقة لكن يمكن ايضا تجاوز هذا الأمر ببرمجة ذلك أو بستخدام الـAuthentication على مستوى التطبيق ...

الخلاصة: ننصح باستخدامه في حالات الإتصال المؤقت أو في حالة Network Games بين اجهزة من خلا الإنترنت وكذلك ببرمجته مع تطبيقات الـP2P لدعم امكانية الإتصال من خلال الإنترنت لكن لا ينصح بستخدامه في حالات طلب اتصال مشفر وامن بين الطرفين وفي هذه الحالة ينصح باستخدام الـ VPN بين المتصلين P2P بدلا من الـUpnP ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أهلا بك أستاذ فادي :)

بالفعل كما ذكرت فالاعتماد على الUPNP يكون في حالات الp2p التي لا تحتاج تشفير

والحقيقة فأنا حاليا أستعمل هذه الطريقة للاتصال من أجل اكمال مشروع صغير لمسنجر يعتمد على موقع يتم في التسجيل والبحث من خلال البرنامج وكذلك جلب عنوان الايبي للطرف الذي سيتم الاتصال به وبهذا فان هذا الحل هو الأنسب لي

المثال والملفات التنفيذية طرحتها من أجل التجربة فربما هذا الحل لا يتناسب مع بعض أنواع الرواتر لاني في البداية واجهت مشكلة من هذا النوع

وحاليا تمت تجربة البرنامج على نوعين من الرواتر فقط

speedtouch و ZTE

أرجو من الاخوة الذين يجربون البرنامج على رواتر أخرى أن يعطونا النتيجة

يعني هل تم فعلا الاتصال خلف الروتر أم لا؟

بالتوفيق للجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

طريقة التجربة باستعمال برنامج الخادم فقط واستعمال موقع utorrent لفحص هل تم فتح المنفذ فعلا على الروتر

الصورة:

post-23361-1234546492_thumb.jpg

بعد تشغيل برنامج الخادم وجعله في حالة استماع نفتح المتصفح ونفحص حالة المنفذ

باستعمال العنوان التالي:http://www.utorrent.com/testport.php?port=1007

اذا كان المنفذ 1007 الذي يستعمله برنامجي قد تم فتحه على الروتر فان النتيجة تظهر كما في الصورة والا فانه يعطيك رسالة خطأ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بعد عدة تجارب ومشاكل وجدنا طريقة أخرى أسهل بكثير

بشرى سارة أيضا لاصدقاء الvb6 أيضا يمكنكم أيضا الاستفادة من الطريقة أيضا

الحل الأسهل متوفر على نظام الاكس بي

فهو يوفر مكتبة من أجل التعامل مع الNAT تحت اطار الUPNP هذه المكتبة تساعدنا على التحكم في اعدادات فتح منفذ على الجهاز البعيد الموفر لخدمة الأنترنت IGD يدعم UPNP

هذا الجهاز قد يكون عبارة عن كمبيوتر على الشبكة يقوم بعملية مشاركة الأنترنت مثلا أو حتى عبارة عن جدار ناري فقط وقد يكون أيضا عبارة عن روتر

هذه المكتبة هي NATUPnP عبارة عن COM يمكن استعماله سواء على الدوت نت أو لغات أخرى

طريقة الاستعمال :

أولا نضيف المرجع من تبويب COM للمكتبة كما في الصورة

post-23361-1235309297_thumb.png

بعدها يمكننا استعمال دوال المكتبة بكل بساطة من أجل فتح منفذ من أجل توجيه الطلب للإتصال من الخارج أو مايسمى Port Forwarding

بعد استدعاء فضاء الأسماء الذي يتيح لنا الوصول لكائنات المكتبة

Imports NATUPNPLib

يمكننا البدء

يمكننا فتح المنفذ وتوجيه الطلب لجهاز ما بالطريقة التالية:

نعرف كائن جديد يحمل الفئة UPnPNATClass وهي التي تهمنا كثيرا

Dim upnpnat As NATUPNPLib.UPnPNATClass = New NATUPNPLib.UPnPNATClass()

نقوم باضافة المنفذ الذي سيتم فتحه مثلا 1007 بالبروتوكول المختار مثلا TCP

هذه الطريقة تشبه فتح المنفذ على الجدار الناري للويندوز التي نعرفها

post-23361-1235309309_thumb.jpg

هنا يجب أن نحدد أيضا الايبي للجهاز الذي يتم توجيه الطلب على المنفذ المفتوح

upnpnat.StaticPortMappingCollection.Add(1007, "TCP", 1007, ipmachine, True, description)

بعدها يمكننا أن نعرض المجموعات المضافة التي تقوم بعملية فتح المنافذ على العتاد المسؤول على مشاركة الأنترنت أو الجدار الناري

   Dim mappings As NATUPNPLib.IStaticPortMappingCollection = upnpnat.StaticPortMappingCollection
For Each portMapping As NATUPNPLib.IStaticPortMapping In mappings
ListBox1.Items.Add(portMapping.Description)
Next

عملية حذف المنفذ

نقوم فقط بتحديد المنفذ والبروتوكول من أجل عملية الحذف

upnpnat.StaticPortMappingCollection.Remove(1007, "TCP")

وكما ذكرت سابقا فان كون المكتبة عبارة عن COM يمكن لمبرمجي الاصدار السادس vb6 أن يستعملو المكتبة بنفس الطريقة smile.gif

فقط عليكم اضافة مرجع المكتبة للمشروع

post-23361-1235309322_thumb.jpg

بالتوفيق للجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تحياتي لك وتقديري واحترامي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

اخوانى ممكن بعد ازنكم طلب صغير

انا ححملت المشروع وقمت بالتجربة

ولكنها لم تفلح معى

الا على النتورك فقط

فارجو المساعدة وشرح بالاعدادت اللازمة

وجزاكم الله خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا لك موضوع رائع جدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

طب وليه تعب القلب ما نعمل نات من على الروتر وخلاص؟؟

او بورت فوروارد

مشكور على التعب ولكن انا افضل ان اعطي كل زي حق حقه

الحاجات دى المفروض تتعمل من على الروتر وبرمجتها بالشكل ده مش حتبقي استيبل ودى اهم حاجه فى اى برنامج الاستابلتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .