كل ما تود معرفته عن ال NAT
بعد زيادة نسبة المستخدمين للـــ Internet واحتياج كل مستخدم لــ IP Address خاص به للاتصال عبر الانترنت فى حين أن IPv4 لم يعد يلبى هذه الاحتياجات بسبب سوء التوزيع مما يؤدى إلى نقص فى توفر public IP Address لكل مستخدم تم اللجوء حل يسمى Network Address Translation أو ال NAT وهذا الحل يمكننا ببساطة من لو كان عندنا فرضا شركة تتكون من 10 أفراديستخدموا ال internet فى عملهم . قبل هذا الحل كان لابد من شراء public ip من ال ISP لكل فرد ليتمكنوا من استخدام الانترنت فى نفس الوقت أما مع هذا الحل فيمكننا شراء Public IP واحد فقط ليستخدمه الجميع وسوف نفهم فيما بعد كيفية عمل ذلك وله مميزات أخرى لن نتطرق لها الآن
أنواع الــ NAT :
1- Static NAT :
وهذا النوع من الـــ NAT بختار بنفسي لكل Private IP من الموجودين عندي Public IP عندما يخرج إلى شبكة أخرى أو إلى الانترنت مثلا يعنى 192.168.32.10 لما يحاول الاتصال بالــ Internet بيظهر على الــ Internet بـــ 213.18.123.110 وهكذا مع باقي الأجهزة .
مثال : لو عندي web server لموقع ما أكيد ال web server ده موجود فى شبكة داخلية وله private IP ولكن يظهر للشبكات الخارجية بــ public IP ليتم الاتصال به .
2- Dynamic NAT :
فى هذا النوع من الــ NAT بختار مجموعة من الــ Private IP ليظهروا عبر الشبكات الخارجية بمجموعة من الــ Public IP وهنا لا يشترط أن يظهر مثلا 192.168.32.10 فى الشبكات الخارجية بــ 231.18.123.116 بل يأخذ أول Public IP حر أو بمعنى لا يستخدمه احد طيب ماذا لو لم يجد 192.168.32.10 أي public IP حر ووجد الجميع مستخدم من قبل الغير .... سوف ينتظر إلى أن يجد Public IP حر ويخرج حينها إلى الشبكة الخارجية فى صورته . وهنا طبعا أكيد عدد ال private ip اكبر من عدد الـ public ip .
3- NAT Overloading
وهذا النوع هو المنتشر بكثرة ومن اشهر الأمثلة عليه هو DSL Modem وهو عبارة عن مجموعة من الــ private IP تظهر للشبكات الخارجية بــ Public IP واحد فقط ويتم التفرقة بينهم باستخدام ال TCP/UDP port number بمعنى أن 192.168.32.10 و 192.168.32.12 يظهروا للشبكات الخارجية بـــ 213.18.123.100 ولكن يتم التفرقة بينهم باستخدام TCP/UDP port number،حيث أن 192.168.32.10 يظهر بــ 213.18.123.100:101 أي عن طريق ال port 101 و 192.168.32.12 عن طريق 213.18.123.100:102
ويمكنك أن ترى هذا الموضوع باستخدام الأوامر التالية
1- Start>run>cmd>ipconfig/all من هذا الأمر سوف تعرف private ip
2- افتح Internet explorer أو FireFox مثلا واكتب http://showip.net/ سوف يظهر لك ال public ip الذي تستخدمه وبالأسفل connected at port وبها رقم ال port الذي تتصل من خلاله
3- جرب الخطوة 1و2 على جهاز أخر موجود على الشبكة سوف تجد نفس ال public IP ولكن الاختلاف فى ال port number
مصطلحات ال NAT :
كل جهاز موجود فى ال Inside Network أو الشبكة الداخلية يعتبر Inside Device سواء كان pc, switch,…… وأي جهاز موجود فى Outside Network أو الشبكة الخارجية يعتبر Outside Device
2- Local Address
وهو أي IP Address بيظهر فى الشبكة الداخلية
3- Global Address
وهو أي IP Address بيظهر فى الشبكة الخارجية
4- Inside Local Address
وهو كل جهاز له private IP موجود بالشبكة الداخلية
5- Outside Local Address
وهو أي جهاز خارجي هايظهر للشبكة كأنه جهاز داخلي بمعنى أخر لو ال router عندي استلم packet من pc وليكن له ip 171.16.86.1 وأنا عندي Network ID 10.1.1.0 ال router بيعمل translate أو ترجمة لــ source Address ليظهر كأنه موجود فى الشبكة عندي فيظهر عندي فى الشبكة الداخلية بهذا الشكل ip 10.1.1.X
6- Inside Global Address
وهو أي جهاز داخلي له private ip هايظهر للشبكات الخارجية بــPublic IP
7- Outside Global Address
وهو أي جهاز خارج الشبكة الداخلية وله public IP
1- Static NAT
Allow PC 0 to use the internet and appear at the outside networks by 200.1.1.3
المطلوب هنا نسمح لــ PC 0 باستخدام الـ Internet بواسطة اننا هانجعل يظهر فى الشبكات الخارجية بــ Public IP وهو 200.1.1.3 وده هايتم باخطوات التالية :
R1(config)#int fa 0/0
R1(config-if)#ip nat inside
هنا بعرف الــ Router ان Fa 0/0 بيطل على الشبكة الداخلية
R1(config)#int s 2/0
R1(config-if)#ip nat outside
هنا بعرف الــ Router ان S 2/0 بيطل على الشبكة الخارجية
R1(config)#ip nat inside source static 192.168.1.2 200.1.1.3
وهنا الامر الرئيسى لـ Static NAT وهنا بقول للـ Router ان ال private ip الفلانى لما يحب يخرج لشبكة تانية اظهره فى الشبكة الخارجية بــالـ public ip الفلانى
R1# show ip nat translations
وهنا من الامر ده بعرف انا عامل NAT لكام Device واعرف منه ال ip الخاص به فى الشبكة الداخلية ولما يخرج لشبكة اخرى هايبقى ال ip بتاعه ايه ..
R1(config)#no ip nat inside source static 192.168.1.2 200.1.1.3
الامر ده علشان الغى ال NAT من على الـ Router علشان انتقل للمرحلة القادمة وهي الــ Dynamic NAT
2- Dynamic NAT
R1(config)#int fa 0/0
R1(config-if)#ip nat inside
R1(config)#int s 2/0
R1(config-if)#ip nat outside
R1(config)# ip nat pool mac 200.1.1.3 200.1.1.254 netmask 255.255.255.0
هنا بعرف range لل public ip واديته اسم mac وممكن اى اسم اخر
R1(config)#ip nat inside source list 1 pool mac
هنا بعرف ان اى جهاز واخد private ip فى الشبكة ال inside لما يروح يكلم اى حد من شبكة خارجية ياخد من range ال public ip اللى اسمه mac ومعنى list 1 اى طبق على ال inside interface ال access-list اللى رقمها 1
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R1# show ip nat translations
وهنا من الامر ده بعرف انا عامل NAT لكام Device واعرف منه ال ip الخاص به فى الشبكة الداخلية ولما يخرج لشبكة اخرى هايبقى ال ip بتاعه ايه ..
ملحوظة : الامر show ip nat translation مش هايطلع اى نتائج الا بعد ان استخدم الاجهزة ال inside خارج الشبكة الداخلية بمعنى اخر ممكن اعمل ping على اى جهاز فى شبكة خارجية وبعد ذلك سوف تظهر النتائج
سؤال : بفرض ان جميع ال public IP محجوزة لمجموعة من الـ private IP و بعض الاجهزة التى حجزت ال public ip لا تستخدمه حاليا ..
واريد ان احرر بعض ال public IP لاتيح للاجهزة الاخرى خدمة الانترنت مثلا ماذا افعل ؟
الحل لهذه المشكلة يمكن بطريقتين
1- First way
R1(config)#clear ip nat translation*
// this command Deletes all dynamic translations
وهذا الامر بيحذف جميع ال Nat table الخاصة بــ Dynamic NAT
2- Second way
R1(config)#ip nat translation timeout (time by seconds)
والامر ده بحدد فيه الوقت للــ Dynamic NAT بمعنى ان لو الجهاز مش عمل اى حاجة على الشبكات الخارجية خلال الوقت ده ال session بتتقفل وبيتحذف من ال NAT table ال ip address inside global الخاص بالجهاز ده بحيث يسمح لباقى الاجهزة انها تاخد دورها .
والوقت الافتراضى هو 86400 اى 24 ساعة وممكن اغير فيه زى ما احب وممكن الغيه خالص يعنى لو فضل طول عمره من غير ما يعمل حاجة هايفضل واخد ال public ip اللى هو حجزه فى الاول .
3- NAT Overload
R1(config)#int fa 0/0
R1(config-if)#ip nat inside
R1(config)#int s 2/0
R1(config-if)#ip nat outside
R1(config)#ip nat pool mac 200.1.1.3 200.1.1.3 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool mac overload
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255