shabakesazan shabakesazan .

shabakesazan

آشنايي با 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. به اين ترتيب از اينترنت ميشه به وب سرور داخلي دسترسي داشت و از خدماتش استفاده كرد.



برچسب: ،
امتیاز:
 
بازدید:
+ نوشته شده: ۴ ارديبهشت ۱۳۹۶ساعت: ۱۲:۱۷:۴۳ توسط:shabakesazan موضوع:

{COMMENTS}
ارسال نظر
نام :
ایمیل :
سایت :
آواتار :
پیام :
خصوصی :
کد امنیتی :