نظرة عامة علي الشبكات الداخلية NAT والمفاهيم المتعلقة بها
نظرة عامة علي الشبكات الداخلية NAT والمفاهيم المتعلقة بها |
نظرة عامة علي الشبكات الداخلية NAT والمفاهيم المتعلقة بها
تتكون شبكة الإنترنت من الأجهزة الطرفية End Devices وهي الأجهزة التي نرغب بتوصيلها ببعضها لمشاركة المعلومات والخدمات فيما بينها مثل الحواسيب والهواتف الشخصية وهواتف VOIP والطابعات وكاميرات المراقبة إلى آخره، وأجهزة أخرى وسيطة Intermediary Devices وهي الأجهزة التي تعمل كحلقة وصل بين الأجهزة الطرفية والمسؤولة عن حمل المعلومات من جهاز طرفي(المصدر) إلى جهاز طرفي آخر (الوجهة) وأهم الأجهزة الوسيطة هي الموجهات Routers والمحولات Switches.كلا من المحولات والموجهات يلزمه طريقة لتمييز الأجهزة المتصلة بحيث يستطيع توصيل المعلومات من مصدر محدد لمسارها المقصود إلا أن كل منهما له أسلوب مختلف في التمييز نتيجة لإختلاف بيئات العمل والغرض منهما، فالمحولات تعمل على مستوى الشبكات المحلية في نطاق جغرافي قريب نسبياً وتعتمد على عناوين MAC في تمييز الأجهزة المتصلة والتي تسمى بالعناوين الفيزيائية لأن قيمتها المحدده محفوظة بشكل دائم على لوحات كروت الشبكات كما أن عناوين ماك فريدة من نوعها فلكل كارت شبكة عنوان ماك موحد.
أما الموجهات فتستخدم في الربط بين الشبكات وتعتمد على عناوين IP والتي تسمى أيضاً بالعناوين المنطقية Logical addresses وذلك لأنها لا ترتبط فيزيائياً ويمكن للأجهزة إستخدام أي من عناوين الـ IP المتاحة على الشبكة وتغييرها من آن لآخر.
لماذا نستخدم عناوين MAC وIP في الوقت ذاته؟
فكر بالأمر كالتالي، إذا إنضممت لعدد من الأشخاص في جلسه صغيره في قاعه ما سيبدأ كل منكم بالتعريف عن نفسه للجميع وبعدها يصبح بإمكانك تمييز الأشخاص والتحدث مع كل منهم بشكل خاص إن أردت، الآن هب أن هؤلاء الأشخاص تفرقوا فإنضم كل منهم لمجموعات أخرى من الأشخاص في ذات القاعة وأردت أن تتواصل مع أحدهم مجدداً فماذا ستفعل؟ أنت تعلم من يكون ذلك الشخص وتستطيع تمييزه جيداً ولكن هذا لا يجعلك على علم بمكانه والسبيل الوحيد أمامك في هذه الحاله هو أن تتفقد كل مجموعة من الأشخاص في القاعه فستعرف أين تفرقت مجموعتك وستحفظ أماكنهم الجديدة، وبمرور الوقت قد يتفرق الأشخاص مجدداً مشكلين مجموعات جديدة فسينبغى عليك إعادة تفقد مواقعهم بشكل دوري لكي تحافظ على تواصلك بهم، الآن هذا الأمر ممكن في حدود القاعه التي نتحدث عنها ولكن ماذا لو كانت هناك قاعه أخرى مجاورة يتفرق الأشخاص بها أيضاً هنا يزداد عبئ عملية مراقبه أماكن الأشخاص وكلما زاد عدد القاعات تزداد الصعوبة ولمعالجه المشكله ينبغي عليك إيجاد وسيلة أخرى لتحديد موقع الأشخاص أليس كذلك؟
بالمثل في الشبكات فعند توصيل الأجهزة بشبكة يبدأ كل منها بإرسال broadcast وهي رسالة لكل الأجهزة الأخرى لمشاركة عنوانه ومعرفه عناوينهم ولكن عنوان ماك في الواقع لا يحدد الموقع بل فقط يميز الأجهزة المختلفة وقناة الإتصال التي يستخدمها كل منهم ولذلك ترسل الأجهزة الـ broadcast لا لمرة واحدة بل بشكل دوري إلى الأبد لكي تبقى الأجهزة على علم بما يجري (مثلما تضطر لإعاده تفقد مواقع الأشخاص بشكل دوري) وبالمثل أيضاً هذه المهمه سهله في حدود الشبكات الصغيره ولكن كلما زاد حجم الشبكه سواء بإنضمام حواسيب جديده أو بتوصيلها بشبكات أخرى تزداد صعوبة المهمه وأيضاً لمعالجة المشكلة ينبغي إيجاد وسيلة أخرى لتحديد موقع الشخص وهو ما تعلمناه بالطريقة الصعبة فقد كانت الشبكات تعتمد على عنوان ماك فقط في بدايات الإنترنت مثل NetWare إلى أن تم تطوير عناوين IP والتي يمثل جزء منها عنوان الشبكة تحديداً التي يقع بها الجهاز المتصل والجزء الآخر منه يمثل رقم الجهاز على تلك الشبكة وذلك الرقم مرتبط بجدول داخل الأجهزة الوسيطة Intermediary Devices يدل على عنوان الماك وبالتالي مهما توسع الإنترنت لا يؤثر هذا على أداء الشبكة بفضل إستخدام عنوان IP في عملية الـ Routing وعنوان MAC في عملية الـ Switching. للمزيد.
ما هو NAT؟
نات إختصار Network Address Translation وهو ببساطة عملية تمثيل عنوان أو أكثر IP بعنوان واحد آخر.
نظرة عامة علي الشبكات الداخلية NAT والمفاهيم المتعلقة بها |
لماذا نستخدم NAT؟
في البدء كان إستخدام NAT كمجرد إختصار للوقت بتجنب إعادة ضبط عناوين الأجهزة عند إنتقال الشبكة أما اليوم فهو وسيلة لابد منها في مواجهة نقص عناوين IP حيث قد تم تصميم بروتوكول IP الإصدار الرابع بحد أقصى 4.3 مليار عنوان متاح وهو ما كان يُعتقد أنه كافي للأجهزة التي ستتصل بالإنترنت ومع التوسع الهائل للإنترنت كان لابد من إستخدام NAT في الشبكات الداخليه بحيث يملك الموجه Router في كل شبكة العنوان العام الوحيد القابل للوصول مباشرة عبر الإنترنت وتظهر الأجهزة المتصلة على الشبكة الداخلية على الإنترنت جميعها بذلك العنوان.
كيف يعمل NAT؟
إذا كانت جميع الأجهزة الداخلية تظهر على الإنترنت بنفس العنوان فما الذي يحدث عندما يرد إتصال على ذلك العنوان إلى أي جهاز على الشبكة سيذهب ذلك الإتصال؟ هل للموجه نفسه أم لجهاز معين على الشبكة أم للجميع؟
حسناً دعنا نتحدث أولاً عن حاسوبك وحده بعيداً عن NAT أنت تستخدم متصفح في زيارة المواقع المختلفة وأحيانا تقوم بفتح أكثر من علامة تبويب بالمتصفح وكل منها يتصل بموقع مختلف ومع ذلك تصلك الإستجابه من الموقع في علامة التبويب الصحيحة بلا خلط أو تداخل، وكذلك تستخدم الكثير من العمليات في نظام التشغيل الإنترنت ومع ذلك فجميع البيانات الوارده لحاسوبك يذهب كل منها للعملية الصحيحة وذلك بفضل إستخدام المنافذ Ports وهي أرقام وهمية لا ترتبط بأي مدخلات أو مسارات فيزيائية في الحاسوب تُستخدم فقط لتمييز البيانات، كل برنامج يستخدم الإنترنت يقوم بحجز رقم منفذ معين ولا يمكن لأي برنامج آخر إستخدام ذلك المنفذ في نفس الوقت، وبعض البرامج تستخدم العديد من المنافذ تبعاً لطبيعة عملها فالمتصفح يستخدم رقم منفذ لكل علامه تبويب جديدة على سبيل المثال. ويتم تخزين ارقام المنافذ على الحاسوب بإستخدام 16 بت وبالتالي الحد الأقصى لعدد المنافذ التي يتعامل معها كل نظام هو إثنان مرفوعه للأس 16 ناقص واحد وهو ما يكافئ 65,535 وهو أكثر من كافي، ومع ذلك فرقم المنفذ الواحد يمكن إستخدامه مره كـ tcp وأخرى كـ udp أي أن هناك 65,535 لكل منهما.
وبالمثل في شبكات NAT بالرغم من إستخدام جميع الحواسيب لعنوان عام واحد إلا أن الموجه Router يستطيع تمييز البيانات عبر أرقام المنافذ هو الآخر، عندما تصفحت هذا الرابط على عرب فيوتشر قام المتصفح بإختيار منفذ عشوائي لتمييز البيانات على مستوى نظام التشغيل وقام الموجه بحجز منفذ لحاسوبك بشكل مؤقت لتمييز البيانات على مستوى الشبكة. ولكن هذه العملية التلقائيه تحدث فقط في الإتصالات الصادره من حاسوبك أما الإتصالات الوارده إليك مباشرة وليست كإستجابة لطلب أرسلته أنت إبتداءاً فتلك لم يتوقع الموجه إستقبالها ولا يعلم أين يرسلها فسيتم رفضها ولن تصل لأي وجهة على الشبكة الداخلية.
Port Forwarding
تحويل المنافذ هي الخطوة التي ينبغي إجرائها لتمييز الإتصالات الواردة مباشرة إلى الموجه، جميع الموجهات تسمح لك بتعيين منفذ ما لجهاز معين على الشبكة الداخلية وبالتالي عند ورود إتصال إلى هذا المنفذ يعلم الموجه إلى أين ينبغي تحويله ثم يتبقى دور نظام التشغيل على الحاسوب المستهدف الذي سيبحث عن العملية التي تستخدم ذلك المنفذ فإن لم يجد سيقوم بإسقاط الحزم الوارده.
يُستخدم Port forwarding لإستضافة الخوادم، يمكنك تثبيت خادم ويب يستخدم المنفذ 80 أو خادم نقل ملفات يستخدم المنفذ 21 فحينها يجب تحويل المنفذ المستخدم من الموجه إلى عنوان حاسوبك على الشبكة الداخلية.
لا يشترط أن يتم تحويل المنفذ في الموجه إلى نفس المنفذ في النظام فيمكنك تحويل منفذ 900 في الموجه إلى 80 في حاسوبك مثلاً، بل ويمكنك إعادة عملية التحويل على مستوى النظام من منفذ لآخر ولكن لا داعي لعمل ذلك دون ضرورة مثل أن تكون على نظام التشغيل بحساب مستخدم لا يملك صلاحية التعديل على قواعد الجدار الناري وقد تم حجب جميع المنافذ عدا واحد فقط وهو قيد الإستخدام من قبل عملية لا يمكنك إنهاؤها فهنا لابد من تحويل المنفذ الخارجي للموجه إلى المنفذ المفتوح في النظام ثم إعادة تحويله في النظام إلى منفذ آخر شاغر.
Port Triggering
في حين أن الإتصالات الصادرة عن الحاسوب يتم تعيين أرقام منافذ عشوائية لها على مستوى النظام والموجه، وأن الإتصالات الوارده تتطلب تحويل المنافذ (أو فتح المنافذ) بشكل يدوي من إعدادات الموجه، ثمة حالة أخرى من الإتصالات حيث يقوم البرنامج بالإتصال بخادم ما ولكنه ينتظر منه الرد في إتصال آخر مستقل مثل إتصال FTP من النوع Active حيث يتصل العميل بالخادم ويستخدم هذا الإتصال الصادر في إرسال الأوامر بينما يرسل الخادم البيانات على منفذ آخر مختلف بإتصال مستقل قد يتم تخصيصه قبل بدء الإتصال من برنامج ftp المستخدم، فهنا يتطلب الأمر إجراء عملية تحويل المنافذ إلا أن كثرة العمليات والبرامج التي تتبع هذا النمط في الإتصال أدى إلى توفير خيار Port Triggering في الموجهات وفيه تقوم بتخصيص رقم منفذ معين يرتبط إستخدامه بفتح منفذ آخر، في المثال السابق قد نقوم بتخصيص المنفذ 1026 ليتم تحويله عند إرسال إتصال لخادم على منفذ 21. وتتسم هذه الخاصية بالديناميكية حيث لا يتم تحديد عنوان الحاسوب على الشبكة الداخلية، بل يتم إجراء التحويل تلقائياً على المنفذ الثاني لأي حاسوب يرسل إتصال على المنفذ المحدد، وبعد إنتهاء الإتصال يتم إلغاء التحويل تلقائياً ويمكن إستخدامه بعد ذلك من حاسوب آخر. فهذه الميزة هي مجرد أتمته لتحويل المنافذ في الحالات التي ترتبط فيها عملية التحويل بإتصال صادر أولاً.
UDP hole punching
عند إجراء إتصال من نوع Peer to Peer بين حاسوبين كلاهما خلف شبكة NAT سيتطلب الأمر وجود منافذ مفتوحة لكل حاسوب وبالتالي ضرورة إجراء تحويل المنافذ Port Forwarding من كلا الطرفين لإنشاء إتصال Peer to Peer والإستفاده من سرعته إلا أن هذه الخطوة رغم بساطتها غير مناسبة في كثير من الحالات، تخيل أنك تقوم بفتح منفذ لعمل مكالمة على سكايب أو العديد من المنافذ لإكمال تحميل ملف تورنت! (فتلك التطبيقات تستخدم إتصال P2P)، وهنا جاءت الحاجة لإستخدام UDP hole punching وهي تقنية تستغل آلية عمل بروتوكول UDP في الموجهات routers حيث يتم فتح منفذ عشوائي لإستقبال الرد على الطلبات الصاده كما ذكرنا سالفاً ونظراً لكون بروتوكول UDP لامتصل connectionless فلا يتم التحقق من مصدر البيانات على ذلك المنفذ العشوائي وهو ما أمكن إستغلاله لإرسال البيانات لحواسيب تعمل خلف شبكات NAT دون الحاجه لتوجيه المنافذ أو خاصية port triggering وذلك عبر وجود خادم وسيط كل مهمته هي الحصول على أرقام تلك المنافذ العشوائية وتمريرها بين الحاسوبين لإنشاء الإتصال في البداية.
Bind Vs Reverse
عند إنشاء إتصال مباشر من حاسوب لآخر كلاهما خلف شبكة NAT على أحدهم أن يعمل كخادم ويقوم بإجراء تحويل المنافذ يدوياً لكي يسهل على الآخر إجراء الإتصال تلقائياً دون خطوات إضافية، يمكنك إنشاء إتصال مباشر Bind من حاسوبك إلى عنوان IP على منفذ معين وحينها على الطرف الآخر إجراء التحويل من إعدادات الموجه والجدران النارية المستخدمة سواء على مستوى الشبكة أو نظام التشغيل. والإختيار الآخر أن تقوم أنت بتوفير عنوان IP الخاص بك ورقم منفذ معين للطرف الآخر وإجراء التحويل من جانبك وهنا يصبح الإتصال عكسي Reverse من جانبك بينما يعد bind للطرف الآخر.
يستخدم قراصنة الإنترنت الإتصال العكسي عادة عند زرع برامج تحكم في الأنظمة فليس من الممكن للبرمجية الخبيثة الوصول للموجه وإجراء عملية التحويل تلقائياً لأن الموجهات عادة لا توفر واجهة برمجية API للتحكم في الإعدادات كما أن القراصنة ينشرون البرمجيات الخبيثة على نطاق جغرافي واسع حيث يتم إستخدام Firmwares بإصدارات مختلفة قد يصعب إعداد برمجية واحدة للتعامل معها جميعاً عبر الطرق الغير مباشرة للأتمتة في غياب الـ APIs فضلاً عن إحتمالية إستخدام كلمات مرور غير إفتراضية لواجهة الإعدادات وإحتمالية حجب الجدران النارية للإتصالات الواردة مباشرة أو إثارتها للشك.
DMZ
إستخدام NAT يعطي طبقة من الحماية للحواسيب فإذا كانت البرمجيات أو الخدمات على الشبكة الداخلية مصابة بثغرات أمنية فلن يمكن إستغلالها من خارج الشبكة الداخلية (من الإنترنت) إلا إن تم إجراء تحويل المنافذ، ولكن ماذا لو كان أحد الحواسيب الداخلية معرض بالفعل للإنترنت لإستضافته خادم ويب على سبيل المثال وتمكن أحدهم من إستغلال خلل ما في الوصول لذلك الخادم في هذه الحاله أصبح للمهاجم الخارجي حاسوب داخل الشبكة يستطيع من خلاله إستغلال الثغرات في الخدمات الداخلية الأخرى الغير معرضة للإنترنت.
وهنا يأتي إستخدام خاصية DMZ وهي إختصار demilitarized zone وهي كناية عن المناطق محظورة السلاح لأسباب سياسية بين الدول وفي الشبمات تعني عزل الخوادم المعرضة للإنترنت عن باقي أجهزة الشبكة الداخلية بحيث إن تعرضت تلك الخوادم للإختراق من الخارج فلن يتمكن المهاجم من إلحاق المزيد من الضرر بالوصول للأجهزة الداخلية الأخرى مع العلم أن الأجهزة الداخلية لا تفقد إتصالها بالخوادم المعزولة ولكن العكس وفي هذا الوضع تظل هناك فرصه أخرى للمهاجم في إستغلال ثغرات في البرامج التي تحاول الإتصال بالخادم المصاب، فمثلا لو حاول حاسوب داخلي الإتصال بموقع ويب على الخادم المصاب بإستخدام متصفح IE غير محدث قد يستغل المهاجم ثغرات في العميل (IE) من نوع BOF أو ما شابه ومع ذلك يظل إستخدام DMZ طبقة إضافة من الحماية وفي حالة تتطلب مزيد من التفاعل والتعقيدات في الوصول للخدمات الداخلية الأخرى كما يمكنك إعداد DMZ بإعدادات مخصصة بحيث تحجب عنه الشبكة الداخلية كلياً ولكن لا تنسى حلقات الوصل الأخرى مثل الموجه نفسه الذي قد يظل على إتصال مباشر بكلا من منطقة DMZ والشبكة الداخلية فيمثل سطح معرض للهجوم. لاحظ أن DMZ تستخدم مع الخوادم التي تم تعريضها للإنترنت مسبقاً أي بعد فتح المنافذ لها بإستخدام Port Forwarding وليست هي المسؤولة عن فتح المنافذ بالضرورة.
MultiNat
وهي خاصية تستخدم لربط الحواسيب الداخلية بعناوين IP عامه مختلفة في حالة شراء أكثر من عنوان عام من مزود الإنترنت كما يشيع في خطط الإستخدام التجاري لتوفير عنوان مستقل لكل خادم.
ليست هناك تعليقات:
يمكنك إضافة الملاحظات او الإستفسار عن محتوي المشاركة او اضافة معلومة جديدة لم يتم التطرق اليها ، يمنع اضافة اية روابط علي سبيل الدعاية