نوید یحیی پور
متخصص شبکه های سیسکو و امنیت زیرساخت

آشنایی با NAT و PAT به زبانی ساده!

NAT چیست؟ PAT چیست؟ به زبان بسیار ساده : در این انجمن و بسیاری از سایت های دیگه مطالب بسیاری در مورد NAT و کاربردهای آن به نوشته متخصصین حوزه شبکه های کامپیوتری وجود داره و بنده صرفاً با مشاهده طرح سوالات زیادی در انجمن در رابطه با بحث Port Forwarding (که معمولاً هر هفته یک سوال در این مورد در انجمن دیده می شود)، تصمیم گرفتم مقاله ای جامع در این رابطه به زبانی ساده بنویسم که با خوندنش مشکلات دوستان در این زمینه برطرف بشه.به شکل زیر توجه کنید:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

همونطور که میبینید شبکه داخلی ما (همون LAN) در نهایت به مودم (یا بهتر بگیم مودم-روتر) متصله که وظیفه ارتباط شبکه داخلی با دنیای اینترنت رو داره.همون طور که بسیاری از شما هم می دونید بعضی از آدرس ها در اینترنت قابل مسیریابی نبوده و در نتیجه غیر قابل استفاده می باشند آدرس هایی از قبیل:

10.x.x.x/8
172.16.x.x - 172.31.x.x/16
192.168.x.x/24

در شکل بالا هم، ما از آدرس شبکه 192.168.1.0 با تعداد بیت های مسک 24 که غیر قابل مسیریابی در اینترنت هست استفاده کردیم.در اینترفیس WAN روترمون هم آدرس 52.10.10.50 رو داریم که از طریق ISP به مودم اختصاص داده شده.فرض کنیم PC1 که آدرس آی پی 192.168.1.10 رو داره بخواد به وب سایتی با آدرس 4.4.4.1 در اینترنت درخواست صفحه وب رو بده، PC1 درخواست خودشو در قالب بسته IP به Default Gateway تنظیم شده در اینترفیس شبکش میفرسته (چون این آدرس در رنج شبکه خودش که 192.168.1.0/24 هست، وجود نداره) و این Default Gateway هم همین modem-router ما با آدرس داخلی 192.168.1.1 هست.

هر بسته IP دارای یک آدرس Source و Destination هست که به مبدا و مقصد شرایط ارتباط با همدیگه رو فراهم می کنه ، حالا مودم بسته رو به تجهیزات ISP میفرسته تا اونا هدایتش کنن به مقصد که همون 4.4.4.1 هست. اگه مودم به هر دلیلی آدرس مبدا بسته رو که 192.168.1.10 هست رو تغییر نده و بفرسته به روتر ISP ، روتر ISP با کمال احترام بسته رو Drop می کنه و از خودش عبور نمیده! چرا؟! چون میگه: آقا من نمیتونم بسته ای با IP Address در رنج Private رو در اینترنت مسیریابی کنم و بهش اجازه ورود بدم ! حالا راه حل چیه؟

1) یک راه حل اینه که ما از ISP، به تعداد کلاینت های موجود در داخل شبکمون Public IP خریداری کنیم! که اگه ما 100 تا کلاینت داشته باشیم با پاسخ "نه" از سوی ISP مواجه میشیم! چون در واقعیت این تعداد Public IP Address بدون استفاده رو ندارن که با ما بفروشن! چون تعداد IP های ورژن 4 بسیار محدود هست (حدود 4 میلیار برای کل کره زمین!) و در حال حاضر هم تعداد بسیار محدودی IP آزاد باقی مونده. اصلاً بگیم: آقا من تو ISP آشنا دارم می تونم 100 تا آی پی استاتیک پابلیک بگیرم! باشه می تونید بگیرید ولی به چه هزینه ای؟ قیمت هر آی پی استاتیک 10 هزار تومن هست که واسه 100 تا آی پی میشه 1 میلیون تومن در ماه!

2) راه حل دوم استفاده از تکنیکی به نام PAT که نوعی NAT محسوب میشه هست. سرویس NAT که مخفف Network Address Translation هست و همانطور که از اسمشم معلومه سرویسی برای ترجمه IP آدرس ها به همدیگه هستش. به عنوان مثال شما می تونید روی روتر تنظیماتی رو اعمال کنید که وقتی PC1 با آدرس داخلی 192.168.1.10 به سروری با آدرس 4.4.4.1 در اینترنت درخواست میفرسته، روتر آدرس مبدا بسته ارسالی رو به آی پی پابلیک قابل مسیریابی در اینترنت (که از ISP خریداری کردید) تغییر بده به عنوان مثال: 200.2.2.1. در این حالت تجهیزات ISP دیگه بسته مربوطه رو به دلیل عدم رعایت قانون استفاده از IP Address های مجاز، Drop نمیکنه.

سرویس NAT در اصل دو نوع هست، Dynamic NAT و Static NAT.

A) در Static NAT شما آدرسی معتبر و ثابت و قابل مسیریابی در اینترنت (Public IP Address) از ISP مربوطه میگیرید و روی روتر میگید: وقتی درخواستی به این آدرس اومد بفرستش به کامپیوتر فلان در شبکه داخلی. در همین مثال شکل بالا: از ISP یه Public IP Address با شماره 66.66.66.10 خریداری می کنیم و روی modem-router یک استاتیک NAT تنظیم می کنیم و میگیم: هر درخواستی به 66.66.66.10 اومد بفرستش روی Web Server با آدرس 192.168.1.20.

B) در Dynamic NAT شما به تعداد کلاینت های شبکه داخلیتون از ISP مربوطه آی پی آدرس Public خریداری می کنید و روی روتر یه pool ایجاد می کنید و IP هارو در داخلش قرار میدید و به روتر میگید: هر سیستمی بخواد به اینترنت دسترسی داشته باشه یه IP Address از داخل pool بردار و اختصاص بده به کلاینت مربوطه (همون عمل ترجمه IP Address) و وقتی کارش تموم شد آدرس رو رو دوباره برگردون به pool.

در همه مثال های بالا فقط عمل ترجمه آدرس انجام میشه، در برخی از موارد ما نیاز داریم با یک آدرس آی پی Public (همونی که ISP به مودم میده) کاری کنیم که همه کلاینت های شبکه داخلیمون به اینترنت دسترسی داشته باشن. در این حالت راه حل پیش رو استفاده از قابلیتی به نام PAT یا Overloading روی سرویس NAT هست. PAT مخفف Port Address Translation و Overloading هم یعنی اضافه بار. همونطور که از اسمشونم پیداست با این سرویس می تونیم ما با ترجمه آدرس پورت ها بار اضافه ای روی دوش این Public IP بیچارمون بذاریم! به طوری که، تمامی کلاینت های LAN ما بتونن با استفاده از یک Public IP Address که در این مثال 52.10.10.50 هست به تمامی سرور های موجود در اینترنت دسترسی داشته باشن.

در مواردی نیاز هست پا را فراتر گذاشته! و خودمون هم در داخل شبکمون یه سرور (به عنوان مثال Web Server) پیاده سازی کنیم و کاری کنیم با داشتن تنها یک آدرس پابلیک روی مودم اون سرویس رو از اینترنت هم قابل دسترس کنیم. راه حلی که در این مورد استفاده میشه Port Forwarding نامیده میشه. چون بدون استفاده از Port Forwarding جلوی تمامی درخواست های ورودی به مودم (درخواست هایی که از اینترنت به مودم یا شبکه داخلیمون میان) توسط سرویس PAT گرفته میشه.

برای اینکه ما به درخواست های ورودی (به عنوان مثال همین Web Service) پاسخ بدیم باید در مودم یا روترمون اینگونه عمل کنیم: روتر عزیز! هر درخواستی که به اینترفیس WAN ت با پروتکل TCP و شماره پورت 80 میاد اونو بفرستش (Forward کن به) وب سرور داخلی با آی پی آدرس 192.168.1.20. به این ترتیب از اینترنت میشه به وب سرور داخلی دسترسی داشت و از خدماتش استفاده کرد.امیدوارم تونسته باشم با زبانی ساده و دوستانه تمامی مطالب در مورد NAT و PAT رو به دانشجویان شبکه عزیز، توضیح بدم. موفق و ITPro ای باشید :)


نوید یحیی پور
نوید یحیی پور

متخصص شبکه های سیسکو و امنیت زیرساخت

مدرس دوره های CCIE Enterprise Infrastructure و CCIE Service Provider شرکت مشاوره و آموزشی Orhan Ergun LLC

نظرات