قبل
الحديث عن الـ NAT
لابد من مقدمة ممهدة وموضحة ..
تطلب
التصميم الأصلي للإنترنت أن يكون لكل منظمة أو جهة أو مؤسسة عنوان واحد فقط من
عناوين الشبكة IPv4
المصنفة (classful)
وتطلب ذلك من الجهات المنظمة لتوزيع العناوين عدم تكرار توزيع أي من عناوين شبكات IP وطالما أن كل
منظمة تستخدم عناوين IP
الموجودة فقط ضمن أرقام شبكتها المسجلة فلن يتم تكرار عناوين IP مطلقاً وسيعمل
توجيه IP
بشكل ممتاز.
وفي
بداية التسعينيات كان من الواضح أن الإنترنت ينمو بسرعة كبيرة بحيث أوشكت جميع
أرقام شبكات IP
على النفاذ بحلول منتصف التسعينيات ومن هنا بدأ القلق من أن الشبكات المتاحة سيتم
تخصيصها بالكامل وأن بعض المنظمات والجهات لن تكون قادرة على الاتصال بالإنترنت.
كان
الحل الأساسي طويل المدى لهذه المشكلة هو زيادة حجم عنوان IP وكانت هي السبب
لظهور الإصدار (IPv6)
والذي يستخدم 128 بت ، بدلاً من (IPv4) والذي يستخدم 32
بت. مما يمكن لـ IPv6
بسهولة دعم كل مؤسسة وفرد على هذا الكوكب مع وصول عدد عناوين IPv6 نظريًا إلى ما
يزيد على عدد حبات الرمل الموجودة على كوكبنا!
وكحلول
قصيرة المدى لمشكلة (IPv4) تم ايجاد ثلاثة معايير مهمة يعمل اثنان منها بشكل مترابط وهما
ترجمة عناوين الشبكة (NAT)
والعنونة الخاصة(private
addressing). بحيث تسمح هذه الميزات معاً للعديد من
المؤسسات باستخدام نفس أرقام عناوين شبكات IPv4 الغير المسجلة استخداماً داخليا ولا
يمكنه الخروج للانترنت. أما المعيار الثالث فكان الـ (CIDR) والذي مكّن
مزودي خدمات الإنترنت بتقليل إهدار عناوين IPv4 من خلال تخصيص مجموعة فرعية من رقم الشبكة للشركة بدلاً من الشبكة
بأكملها. ومكنهم أيضاً من تلخيص المسارات بحيث أن شبكات متعددة من الفئة A أو B أو C تتطابق مع مسار
واحد وهو ما يقلل حجم جداول توجيه الإنترنت.
CIDR
هو اصطلاح عالمي لتخصيص العناوين ويحدد كيفية قيام هيئة
الإنترنت للأرقام المخصصة (IANA) والوكالات الأعضاء ومزودي خدمات الإنترنت بتعيين مساحة عنوان IPv4 الفريدة عالميا
للمؤسسات الفردية.
CIDR
والمحدد في RFC
4632 له هدفان رئيسيان:
١- تحديد طريقة تعيين عناوين IP العامة في جميع
أنحاء العالم للسماح بتجميع المسار أو تلخيص المسار.
٢- الحد من اهدار العناوين والناتج عن استخدام الـ (classful network)
المثال أدناه يمثل حالة نموذجية لمعنى تجميع المسار
(الهدف الأول من الـCIDR)وكيف يمكن استخدام CIDR لاستبدال أكثر من 65000 مسار بمسار واحد. أولاً تخيل أن مزود
الخدمة ISP 1
يمتلك شبكات من (class C)
من 198.0.0.0 إلى 198.255.255.0 لفقد خصصت IANA جميع العناوين التي تبدأ بـ 198 لأحد موزعي الإنترنت الإقليميين
الخمسة وهو (RIR)
،
وقام RIR
بتعيين هذا النطاق بالكامل لمزود خدمة إنترنت كبير واحد في ذلك الجزء من العالم
يتيح
تخصيص جميع العناوين التي تبدأ بـ 198 لمزود خدمة إنترنت واحد لمزودي خدمة
الإنترنت الآخرين من استخدام مسار واحد فقط هو مسار لـ 198.0.0.0/8 وهو كافي
لمطابقة كل هذه العناوين وإعادة توجيه الحزم لتلك العناوين إلى ISP1 ويوضح الشكل
مزودي خدمة الإنترنت على اليسار لكل منهم مسار واحد إلى 198.0.0.0/8 وبمعنى آخر
مسار لجميع الأجهزة التي يبدأ عنوان IP الخاص بهم بـ 198. وهذا المسار التلخيصي
سيتطابق مع الحزم المرسلة إلى جميع العناوين في 65.536 شبكة IP من الفئة C تبدأ بـ 198.
أما
(الهدف الثاني من الـCIDR) فهو أنه يسمح لـ RIRs و ISPs بتقليل الفاقد من خلال تخصيص مجموعة فرعية من شبكة (classful) لعميل واحد. على
سبيل المثال تخيل أن العميل A لمزود خدمة الإنترنت ISP1 يحتاج فقط 10 عناوين IP وأن العميل C يحتاج فقط 25 عنوان IP. يقوم ISP1 بما يلي:
■ إعطاء العميل A الـ (CIDR block)
198.8.3.16/28 مع 14 عنوانًا قابلاً للتخصيص (198.8.3.17 إلى
198.8.3.30).
■ إعطاء العميل B الـ (CIDR block)
198.8.3.32/27 مع 30 عنوانًا قابلاً للتخصيص (198.8.3.33 إلى
198.8.3.62).
تعمل
كتل CIDR
هذه إلى حد كبير كشبكة IP
عامة فهم يمنحون كل شركة مجموعة متتالية من عناوين IPv4 العامة
لاستخدامها وعملية تخصيص الشبكات العامة قللت الهدر في العناوين بشكل كبير جداً.
في
الواقع ، كانت معظم تعيينات العناوين العامة على مدار
العشرين عامًا الماضية عبارة عن مجموعة CIDR وليست شبكة كاملة (classful) من الفئة A أو B
أو C.
العناوين الخاصة
عند
إنشاء شبكة خاصة ليس لها اتصال بالإنترنت يمكن استخدام أرقام شبكات IP التي تسمى شبكة
الإنترنت الخاصة والمعرفة والمحددة في RFC 1918
بعنوان "تخصيص العناوين للإنترنت الخاص". يحدد RFC هذا مجموعة من
الشبكات التي لن يتم تعيينها مطلقاً إلى أي مؤسسة كرقم شبكة مسجل. بمعنى آخر ، يمكن لأي منظمة استخدام أرقام الشبكة هذه. ومع ذلك ، لا يُسمح لأي منها باستخدامها على الإنترنت.
NAT
يسمح
الـ NAT والمعرف والمحدد في RFC
3022 لجهاز ليس لديه عنوان IP مسجل وفريد
عالمياً بالاتصال بالإنترنت. قد تستخدم هذه الأجهزة عناوين خاصة ومع ذلك تمكن الـ NAT لهذه العناوين الغير مهيأة للإنترنت بالاستمرار في استخدامها والاتصال
بالإنترنت. تحقق NAT
هدفها هذا باستخدام عنوان IP عام لتمثيل عنوان IP خاص. بحيث تقوم وظيفة NAT بتغيير عناوين IP الخاصة إلى عناوين IP المسجلة بشكل عام داخل كل حزمة IP كما هو موضح في
الشكل
لاحظ
أن جهاز التوجيه(router)
الذي يقوم بإجراء NAT
يغير عنوان IP
المصدر للحزمة عندما تغادر الحزمة المؤسسة الخاصة ويقوم الموجه أيضاً بتغيير
العنوان في كل حزمة يتم إعادة توجيهها مرة أخرى إلى الشبكة الخاصة. العنوان
200.1.1.0 هي العنوان العام الذي تمتلكه المؤسسة وتقوم ميزة NAT بإجراء الترجمة.
يدعم Cisco IOS عدة طرق مختلفة لتهيئة NAT ساحرص على توضيح المفاهيم الكامنة وراء
العديد من هذه الاختلافات.
Static NAT
يعمل
Static NAT
تمامًا مثل المثال الموضح سابقاً ولكن مع تعيين وتحديد
عناوين IP
المرتبطة مع بعضها البعض. يوضح الشكل أدناه الفكرة
عيّن
مزود خدمة الإنترنت للشركة شبكة مسجلة 200.1.1.0. لذلك يجب أن يجعل جهاز توجيه NAT عناوين IP الخاصة تبدو كما
لو كانت في الشبكة 200.1.1.0 وللقيام بذلك يقوم الموجه بتغيير عناوين IP المصدر في الحزم
من اليسار إلى اليمين في الشكل. ففي هذا المثال ، يقوم الموجه بتغيير عنوان المصدر من 10.1.1.1 إلى 200.1.1.1. باستخدام Static NAT ، بحيث يقوم الموجه ببساطة بتعيين واحد
لواحد بين العناوين الخاص والعناوين العامة. فقد قام الموجه بتعيين ثابت بين
العنوان الخاص 10.1.1.1 والعنوان المسجل 200.1.1.1.
يتطلب
دعم جهاز آخر باستخدام NAT
ثابت تعيين آخر باستخدام عنوان IP عام آخر له. فعلى سبيل المثال لدعم 10.1.1.2 يقوم جهاز التوجيه
بإعطاء 10.1.1.2 العنوان العام 200.1.1.2 بشكل ثابت. لاحظ أننا قمنا بسمية
العناوين المستخدمة داخل الشبكة والغير قادرة على الوصول الى الانترنت بالـ (private) وتلك الأخرى
المحجوزة من قبل مزودي الخدمة والقادرة على الوصول للإنترنت بالـ (public) هذه المسميات قد
تختلف عند الحديث عن Cisco بحيث تمسى الـ (private) بالـ (inside local) في حين تسمى الـ (public) بالـ (inside global)
تمثل
الرسمة أدناه نفس المثال السابق ولكن باستخدام التسمية
الخاصة بـ Cisco
فشبكة المؤسسة التي تستخدم عناوين خاصة وتحتاج إلى NAT هي الجزء
"الداخلي" من الشبكة. والجانب المرتبط بالإنترنت هو الجزء
"الخارجي" من الشبكة والمضيف الذي يحتاج إلى NAT (مثل 10.1.1.1) لديه عنوان IP يستخدمه داخل الشبكة ويحتاج إلى عنوان IP لتمثيله في
الشبكة الخارجية.
Dynamic NAT
يوجد
في Dynamic NAT
بعض أوجه التشابه والاختلاف مقارنةً بـ Static
NAT فهما يتشابهان في أن جهاز التوجيه NAT يقوم بتعيين
عنوان واحد لعنوان واحد ما بين الخاص الداخلي والعام الخارجي وكذلك أنه يقوم
بتغيير عناوين IP
في الحزم عند خروجها ودخولها إلى الشبكة الا أن تعيين العنوان العام للعنوان الخاص
يحدث بشكل آلي. بحيث يُنشئ Dynamic NAT مجموعة من العناوين العامة المتاحة ويحدد معايير المطابقة لتحديد
عناوين IP
الخاصة التي يحق لها استخدام NAT فعلى سبيل المثال في الشكل أدناه تم إنشاء مجموعة من خمسة عناوين IP عامة: 200.1.1.1
حتى 200.1.1.5 وتم إعداد NAT لترجمة أي عناوين خاصة تبدأ بـ 10.1.1
تشير
الأرقام 1 و 2 و 3 و 4 في الشكل إلى التسلسل التالي
للأحداث:
1. يرسل المضيف 10.1.1.1 الحزمة الأولى
إلى الخادم عند 170.1.1.1.
2. عندما تدخل الحزمة إلى جهاز توجيه NAT يطبق جهاز
التوجيه منطق المطابقة ليقرر ما إذا كان يجب تطبيق NAT على الحزمة أم
لا. ولأن المنطق قد تم تحديده بحيث يتطابق مع عناوين IP التي تبدأ بـ
10.1.1 يضيف الموجه إدخالاً في جدول NAT لـ 10.1.1.1 كعنوان خاص.
3. يحتاج موجه NAT إلى تخصيص عنوان IP من مجموعة
العناوين العامة المتاحة فيختار أول واحد متاح (200.1.1.1 ،
في هذه الحالة) ويضيفه إلى جدول NAT لإكمال الإدخال.
4. يقوم موجه NAT بترجمة عنوان IP المصدر وإعادة
توجيه الحزمة.
يبقى
الإدخال الديناميكي في الجدول طالما تتدفق حركة المرور من حين لآخر ويمكنك كمهندس
للشبكة إعداد مدة زمنية للمهلة التي يجب أن ينتظرها جهاز التوجيه قبل إزالة
الإدخال الديناميكي ويمكنك كذلك مسح المدخلات يدوياً بالأمر
clear ip nat translation
يمكن
إعداد الـ NAT
مع المزيد من عناوين IP
الخاصة مقارنة بمجموعة العناوين العامة. يقوم جهاز التوجيه بتخصيص وإعطاء العناوين
العامة لكل حزمة ترغب في الخروج للانترنت حتى يتم
تخصيصها جميعًا فإذا وصلت حزمة جديدة من جهاز داخلي آخر وتحتاج إلى الـ NAT ولكن جميع عناوين
IP
العامة قيد الاستخدام يتجاهل جهاز التوجيه الحزمة بكل بساطة ويجب على المستخدم
المحاولة مرة أخرى حتى تنتهي مهلة إدخال NAT وعند هذه النقطة تعمل وظيفة NAT مع الجهاز التالي
الذي يرسل الحزمة.
بشكل
أساسي يجب أن تكون مجموعة العناوين العامة كبيرة مثل الحد الأقصى لعدد الأجهزة
الراغبة في استخدام الإنترنت في نفس الوقت الا إذا كنا نستخدم ما يسمى بالـ PAT
PAT
تحتاج
بعض الشبكات إلى وصول معظم الأجهزة إن لم يكن جميعها إلى الإنترنت فإذا كانت هذه
الشبكة تستخدم عناوين IP
الخاصة ، فإن موجه NAT يحتاج إلى مجموعة
كبيرة جداً من عناوين IP
العامة. وهنا لا نستطيع استخدام Static NAT
لأن كل جهاز يحتاج إلى الوصول إلى الإنترنت وبالتالي نحتاج إلى
عنوان IP
عام لكل جهاز وهذا مستحيل ويخالف أصلاً فكرة وجود الـ NAT، وكذلك لا نستطيع
استخدام Dynamic NAT
لأن شبكتنا تتطلب وصول الجميع للانترنت وهو يحقق الوصول
للبعض دون البعض بحسب أولوية الطلب، وهنا جاءت فائدة الـ PAT لمعالجة هذه
المشكلة والمفتاح لفهم كيفية عملها هو تذكر كيفية استخدام الأجهزة لأرقام المنافذ
المستخدمة مع TCP
و UDP.
للتوضيح
تخيل وجود ثلاثة اتصالات TCP منفصلة بخادم ويب
من ثلاثة أجهزة مختلفة كما هو موضح في الشكل أدناه
الآن
قارن اتصالات TCP
الثلاثة في الشكل أدناه مع الثلاثة السابقة ستجد أن الثلاثة الأخيرة من عميل واحد
وفي الحقيقة يدرك الخادم وجود إختلاف لأنه يرى عنوان IP ورقم منفذ TCP في كلا الشكلين إلا أنه فعلياً لا يهتم
أبداً بما إذا كانت اتصالات TCP تأتي من جهازين مختلفين أو نفس الجهاز فهو يرسل البيانات ويستقبلها عبر كل اتصال
يستفيد
NAT
من حقيقة أن الخادم لا يهتم بما إذا كان لديه اتصال واحد من ثلاثة أجهزة مختلفة أو
ثلاثة اتصالات من جهاز واحد. فالـ PAT لا يترجم العنوان
فقط بل يترجم رقم المنفذ عند الضرورة أيضاً يوضح الشكل
أدناه الفكرة.
عندما
يقوم الـ PAT
بالتعيين الآلي فإنه لا يحدد فقط عنوان IP الخاص فقط ولكن كذلك رقم المنفذ الفريد
لاستخدامه مع هذا العنوان ويحتفظ جهاز توجيه NAT بإدخال الجدول
لكل مجموعة فريدة من داخل عنوان IP الخاص وكذلك والمنفذ مع الترجمة إلى العنوان العام ورقم منفذ فريد
مرتبط بالعنوان الخاص. ونظرًا لأن حقل رقم المنفذ يحتوي على 16 بت فإن الـ NAT يمكن أن يستخدم
أكثر من 65000 رقم منفذ مما يسمح بالتوسع بشكل جيد دون الحاجة إلى العديد من
عناوين IP
العامة وفي كثير من الحالات تحتاج إلى عنوان IP عام واحد فقط
We absolutely love your blog and find a lot of your post’s to be just what I’m looking for.
Do you offer guest writers to write content for yourself?
I wouldn’t mind creating a post or elaborating on most of the subjects
you write regarding here. Again, awesome website!
Thank you for visiting the site. I am very happy that you found what you were looking for. I will soon open participation in it with your names so that everyone can benefit.
It is perfect time to make some plans for the long run and it’s time to be happy.
I have learn this post and if I could I desire to recommend you some
fascinating issues or advice. Maybe you can write next articles relating to this article.
I desire to read even more issues about it!
Thank you very much for your nice comment. I hope I find the time to do so