پروتکل NAT
با خواندن این مقاله دیگر می توانید متوجه این شوید که NAT چیست و استفاده آن برای کاربران چگونه است . و همچنین از مزایای آن باخبر می شوید و استفاده از (Network Address Translation (NAT را برای شبکه تان الزامی میدانید.
دوستان عزیز ، اینترنت بزرگتر از چیزی است که هر کسی تصور آن را می کند. هر چند که نمی توان آمار دقیقی از اینترنت بدست آورد ، اما هم اکنون حدود 100میلیون HOST و همچنین 350 میلیون کاربر اکتیو در آن وجود دارد که این تعداد عملا بیشتر از تعداد مردم ایالت متحده می باشد. در حقیقت نرخ رشد اینترنت با کاربرانش در هر سال ، دو برابر سال قبلی اش می باشد.
حالا سوالی که اینجا در ذهن همه ایجاد می شود این است که چه مقدار از NAT ، برای اینترنت استفاده می کنند و پاسخی هم که به این سوال باید داد این است که تقریبا همه چیز یا همه شبکه ها و همچنین همه سرورها و ... باید از NAT استفاده کنند .
برای ارتباط یک کامپیوتر با هر کامپیوتر دیگر یا ارتباط با وب سرور درون اینترنت ، باید هر کدام از آنها یک آدرس IP نیز داشته باشند. آدرس IP یک شماره بی همتا 32 بیتی است که برای شناسایی محل کامپیوتر دورن شبکه استفاده می شود تا اطلاعات به درستی ، بعد از شناسایی محل کامپیوتر به دست آن برسد.
زمانی که آدرس دهی IP در همان اوایل بیرون آمد، همه فکر می کردند که تمام نیازهای کاربران به IP نیز با این شیوه حل می شود ولی اگر به محاسبه بپردازید ، متوجه می شوید که از این طریق فقط می توان به 4,294,967,296 یا 2 به توان 32 آدرس بی همتا دست یافت . در واقع این تعداد آدرس برای این همه جمعیت که روز به روز در حال افزایش هستند نیز بسیار کم است.
به همراه انفجار جمعیت اینترنت و افزایش شبکه های خانگی و تجاری ، تعداد IP های قابل دسترس ، به طور واقع بینانه اصلا کافی نیست. که راه حل آشکار برای حل این مشکل ، دوباره طراحی کردن یک سیستم IP دهی است که این سیستم جدید را IP v6 می گویند.اما این سیستم تا چند سال اخیر امکان دارد استفاده نشود زیرا هنوز نیاز به تغییراتی درون زیرساخت های اینترنت می باشد.
NAT نیز به عنوان راهی دیگر برای نجات معضل بحران کمبود IP به کار می رود. به عبارتی این موضوع بیانگر این است که یک دستگاه مانند Router به عنوان نماینده بین یک شبکه عمومی مانند اینترنت که IP Public دارد و یک شبکه خصوصی یا همان شبکه محلی است و نیاز به IP Private دارد ، قرار می گیرد. این توضیحی که الان خدمتتان گفتیم ، در کل به این معنی است که فقط نیاز به یک IP داریم تا آن را با استفاده از NAT بین گروهی از کامپیوترهایمان که در شبکه محلی مان قرار دارند بدهیم.به عبارتی با این کار یک IP Public را به IP های Private تبدیل می کنیم.
پس کمبود IP ، تنها دلیل استفاده از NAT است. و همچنین در این مقاله شما می توانید متوجه شوید که چگونه NAT می تواند برایتان مفید واقع شود. اما در ابتدا اجازه بدهید که نگاهی نزدیکتر و دقیقتر به نحوه عملکرد آن بکنیم . . .
NAT چگونه کار می کند :
NAT مانند یک منشی است که درون یک شرکت بزرگ مشغول کار است. این بدان معنی است که منشی شما تمام تماس ها را به شما وصل نمی کند ، مگر اینکه خودتان به آن جواب دهید و از برقراری ارتباط راضی باشید. و کسانی که برای تماس با شما درخواستی را به منشی فرستاده اند نیز ، درخواستشان تا بیکار نشدن شما تعلیق می شود و به محض اینکه توانایی پاسخگویی به ارباب رجوع را پیدا کردید ، می توانید به منشی بگویید که ارباب رجوعی را که تعلیق کرده بودی را آزاد کن و بگذار با من تماس داشته باشد.
کاربران همیشه برای ارتباط با شرکت ، شماره های اصلی را می گیرند که به غیر از انجام این کار هم کار دیگری نمی توانند انجام دهند. یعنی زمانی که با یک شرکتی تماس می گیرید ، در واقع با منشی آن شرکت تماس گرفته اید . و منشی آنجا متناظر با تقاضای شما و انتظار برقراری تماستان با شخص مورد نظرتان ، تماس شما را به شخص مورد نظرتان هدایت می کند که البته همچنان که قبلا گفتیم ، شخص مورد نظر باید توانایی مکالمه به تماس گیرنده را داشته باشد.
این امر نیز برای شبکه های کامپیوتری نیز توسط Cisco گسترش یافت . به این گونه که Network Address Translation یا همان NAT توسط دستگاه هایی مانند Router ، Firewall یا کامپیوتر هایی که بین شبکه داخلی و شبکه جهانی قرار می گیرند نیز استفاده می شد . NAT حالت های مختلفی دارد و همچنین می تواند به روشهای مختلفی نیز کار کند که عبارتند از :
• Static NAT :
شیوه کاری آن به این گونه است که آدرس های IP ثبت نشده را به صورت یک به یک به آدرس های IP ثبت شده تبدیل می کند. یعنی به ازای هر آدرس می تواند یک آدرس مبدل تولید کند . و این حالت زمانی سودمند است که ما بخواهیم یک دستگاه را طوری تنظیم کنیم که از بیرون از شبکه قابل دسترس باشد. درون static NAT نیز ، آدرس 192.168.32.10 به آدرس 213.18.123.110 تبدیل خواهد شد .
• Dynamic NAT :
در این حالت نیز می تواند آدرس IP ثبت نشده را به آدرس ثبت شده تبدیل کند ، منتها در اینجا لیستی از IP های ثبت شده وجود دارد و هر کدام را که خواست می تواند انتخاب کند . یعنی همانگونه که در شکل آمده است ، درون dynamic NAT نیز آدرس 192.168.32.10 می تواند به اولین آدرس قابل دسترس در رنج 213.18.123.100 تا 213.18.123.150 تبدیل شود.
• Overloading :
یک نمونه از dynamic NAT است که در آن چندین آدرس IP ثبت نشده به یک IP ثبت شده تبدیل می شود که هر کدام از آدرس ها تفاوتشان فقط در پورت هایشان است. که این روش نیز با نام PAT که مخفف Port Address Translation است هم شناخته می شود.
پس نکته ای را هم که مطابق شکل دوباره برایتان بازگو میکنیم این است که آدرس هر کامپیوتر درون یک شبکه خصوصی به آدرس مشابه 213.18.123.100 تبدیل می شود و نقطه تمایز آنها نیز شماره پورتی است که به آنها اختصاص داده می شود.
• Overlapping :
زمانی که شما در حال استفاده از آدرس های IP درون شبکه تان هستید ، آنگاه باید از آدرس های IP ثبت شده یا همان IPهای Register شده نیز برای ارتباط با شبکه های دیگر استفاده کنید. و وظیفه ای که Router در اینجا ایفا می کند این است که جدولی از این IP ها نیز در خودش نگه می دارد که در موقع نیاز ، هر کدام از IPهای داخل شبکه نیز از IPهای ثبت شده استفاده کند تا بتواند با بیرون از شبکه نیز ارتباط برقرار کند. در ضمن این نکته هم باید بدانید که NAT است که دارد این کار را انجام می دهد و به این Router نیز NAT Router می گویند که وظیفه اصلی که ایفا می کند این است که IP های داخلی شبکه را به IP های واحد یا Unique بیرون از شبکه تبدیل می کند و همچنین IPهای ثبت شده بیرون از شبکه را هم به IPهای درون شبکه یا همان IPهای Private تبدیل می کند. یعنی اگر شبکه داخلی را یک شبکه خصوصی یا Private در نظر بگیریم و شبکه خارجی را یک شبکه عمومی یا Public در نظر بگیریم ، آنگاه NAT نیز IPهای Public را به Private و همچنین باالعکس IPهای Private را به Public تبدیل می کنند.برای این کار می توان یا از Static NAT و یا از تلفیق DNS با Dynamic NAT نیز استفاده کرد.
همانگونه که در شکل می بنید رنج IP 237.16.32.xx نیز برای ارتباط با بیرون از شبکه باید به IP ثبت شده تبدیل شود بنابراین این کار توسط Router و فرایند NAT انجام می شود . و همچنین زمانی که یک کامپیوتر در بیرون از شبکه قرار دارد و قصد ارسال اطلاعات به یکی از کامپیوتر های داخل شبکه را دارد نیز باید IP ثبت شده آن به یک IP که مخصوص داخل شبکه مان است و رنج آن 237.16.32.xx است تبدیل بشود.
نکته : شبکه داخلی یا همان (LAN (Local Area Networkنیز مانند یک Stub Domain عمل میکنند. Stub Domain یک LAN است که از آدرس های IP داخلی استفاده می کند. و نکته مهمی هم که هست ، اغلب ترافیک شبکه نیز به صورت محلی یا در خود شبکه داخلی است و به بیرون از شبکه کشیده نمی شود . و همچنین Stub Domain می تواند شامل هر دو نوع IP ثبت شده و ثبت نشده باشد . البته کامپیوتر هایی هم که از IP ثبت نشده استفاده می کنند نیز هیچ وقت عذاداری نمی کنند ، زیرا می توانند به هنگام نیاز و برای ارتباط با بیرون از شبکه نیز به IP های ثبت شده تبدیل شوند.!!!
انواع دسته بندی برای آدرس های IP :
دوستان عزیز NAT را می توان به شیوه های متفاوتی Config کرد. و همانگونه که در مثال زیر برایتان ذکر خواهیم کرد ، NAT router ما به گونه ای پیکربندی یا تنظیم شده است که آدرس های IP داخلی ثبت نشده را به آدرس های ثبت شده و معتبر جهانی تبدیل می کند. البته شاید این سوال برای کسانی که به تازگی با NAT آشنا شده اند پیش بیاید ، که آیا همیشه آدرس های ثبت نشده تمایل دارند به آدرس های ثبت شده تبدیل بشوند و این یک امر اجباری است ؟ که در جواب باید گفت که این تبدیل IP ها فقط زمانی رخ می دهد که دو کامپیوتر که در شبکه هم نیستند بخواهند با هم ارتباط برقرار کنند.یعنی زمانی که یک کامپیوتر از شبکه داخلی ما بخواهد به یک کامپیوتر که در شبکه عمومی است ارتباط برقرار کند از این تبدیل IP توسط NAT استفاده می کند.
• یک ISP ، طیف وسیعی از آدرس های IP را به شرکت شما اختصاص می دهد.که این آدرس ها ، هر کدامشان آدرس های ثبت شده یا واحد (Unique) در دنیا می باشند که اصطلاحا به آنها آدرس های inside global هم می گویند. که در عوض آدرس های ثبت نشده ، آدرس های Private هستند که خودشان به دو گروه تقسیم می شوند.یک گروه کوچک از آنها را نیز آدرس های outside local می نامند که توسط روترهای NAT استفاده می شوند. و گروه دوم یا به عبارتی بقیه آنها ، که بزرگتر از گروه قبلی هم هستند نیز به آدرس های inside local شناخته شده هستند و درون Stub Domain ها مورد استفاده قرار می گیرند. آدرس های outside local برای تبدیل آدرس های واحد یا همان ثبت شده ها استفاده می شوند که به آنها آدرس های outside global می گویند که این آدرس ها مخصوص دستگاه ها یا همان Deviceهایی هستند که در شبکه Public یا شبکه عمومی قرار دارند.
• اکثر کامپیوتر ها که درون Stub Domain قرار دارند ، برای ارتباطشان با دیگر کامپیوتر ها از آدرس های inside local استفاده می کنند.
• بسیاری از کامپیوترهای درون Stub Domain هستند که خیلی با شبکه های خارجی در ارتباط هستند و به همین علت به آنها آدرس های inside global اختصاص می دهند . یعنی این کامپیوتر دیگر نیازی به تبدیل آدرس ندارند.زیرا آدرس های آنها ثبت شده است و به راحتی می تواندد با کامپیوتر های بیرون از شبکه ارتباط برقرار کنند.
• زمانی که یک کامپیوتر که درون Stub Domain قرار دارد و دارای آدرس inside local نیز است و می خواهد با بیرون از شبکه ارتباط برقرار کند ، باید Packet درخواستش را به یکی از روترهای NAT بفرستد.
• زمانی که یک آدرس قصد عبور از روتر NAT و همجنین قصد تبدیل شدن را داشته باشد ، آنگاه روتر NAT نیز به Routin Table خودش نگاه می کند که ببیند آیا آدرس مقصدی را که IP درخواست کننده از او خواسته ، در Routin Tableاش وجود دارد یا نه . اگر وجود داشت ، آنگاه روتر NAT آدرس آن را تبدیل می کند و Packetاش را ارسال می کند و یک آدرس هم دورن جدول تبدیل شده ها یا Translation Table ایجاد می کند. اما اگر آدرس مقصد درون Routing Table وجود نداشت آنگاه Packet درخواستش برای ارتباط با کامپیوتر بیرون از شبکه نیز Droppe می شود.
• با استفاده از آدرس های inside global ، روتر نیز Packetهای ارسالی از طرف این آدرس را به مقصد مورد نظرش ارسال می کند.
• زمانی که یک کامپیوتر که در یک شبکه Public قرار دارد و قصد ارسال Packet به یک کامپیوتر که در یک شبکه Private است را دارد ، آنگاه آدرس مبدا این Packet همان آدرس outside global و آدرس مقصد Packet نیز آدرس inside global می باشد.
دوستان عزیز در اینجا می خواهیم نکته زیبایی را هم به شما به گوییم ، که اگر ما NAT Overloading را با پروتکل TCP/IP با هم و همزمان استفاده کنیم یا به عبارتی تلفیقشان کنیم ، می توانیم به مفهوم Multiplexingg دست بیابیم ، که کار را برای ما آسان می کند.یعنی اجاز می دهد که هر کامپیوتر چندین کانکشن همزمان را در خودش نگه داری کند و همچنین اجاز Remote زدن به کامپیوتر یا کامپیوتر ها را با استفاده از پورت های TCP یا UDP می دهد. و اگر بیشتر بخواهیم به این مساله موشکافانه تر نگاه کنیم ، باید بگوییم که هر IP Packet که ارسال می شود یک Header به آن اضافه می شود که اطلاعات آن را در زیر شرح می دهیم :
• Source Address :
آدرس IP کامپیوتر مبدا یا همان منشا است . مانند آدرس 201.3.83.132
• Source Port :
شماره پورت TCP یا UDP تعیین شده توسط کامپیوتر مبدا برای ارسال همان Packet . مانند پورت 1080
• Destination Address :
آدرس IP کامپیوتر مقصد. مانند 145.51.18.223
• Destination Port :
شماره پورت TCP یا UDP که کامپیوتر مبدا درخواست باز کردن آن پورت را به کامپیوتر مبدا می دهد. مانند پورت 3021
نگارنده : رضا صادقی جم
منبع : انجمن حرفه ای های فناوری اطلاعات ایران