NAT در شبکه چیست؟ | به زبان ساده


نَت (Network Address Translation | NAT) نام سرویسی است که در روترها مورد استفاده قرار میگیرد. هدف از این سرویس تبدیل مجموعهای از آدرسهای IP به مجموعه آدرسهای IP دیگر است. اگر هماکنون شما در حال مشاهده و خواندن این نوشته از مجله فرادرس هستید، در واقع بدون آن که احتمالا بدانید در حال استفاده از سرویس NAT هستید. در این مطلب ابتدا بررسی میکنیم که کاربرد NAT در شبکه چیست و انواع آن کدام است. به طور کلی استفاده از سرویس NAT همچون بسیاری از سرویسهای دیگر مزایا و معایب خود را دارد که در انتهای این مطلب این موارد را نیز بررسی میکنیم.
کاربرد NAT در شبکه چیست؟
برای آن که در مورد کاربرد NAT در شبکه بیشتر بدانیم ابتدا لازم است که کمی در مورد سابقه آدرسدهی در شبکه صحبت کنیم. در سالهای ابتدایی توسعه اینترنت، چهارمین نسخه از پروتکل اینترنت یعنی IPv4 به عنوان یکی از انواع پروتکلهای ارتباطی برای هدف آدرسدهی در اینترنت مطرح شد. IPv4 آدرسی شامل 32 بیت رقم را تعریف میکند. هر کامپیوتر برای برقراری ارتباط با کامپیوترهای دیگر یا با سرورهای وب نیازمند داشتن یک آدرس IP است. آدرس IP کامپیوتر شما یک عدد یکتای 32 بیتی است که موقعیت کامپیوتر شما را در شبکه تعیین میکند. وجود این آدرس برای دریافت یا ارسال اطلاعات به کامپیوتر شما الزامی است. اما محدودیت 32 بیت باعث شده است که تنها قابلیت تعریف بیش از 4 میلیارد آدرس IP یکتا وجود داشته باشد. محدودیتی که در زمان تعریف این پروتکل اصلا به چشم نمیآمد. یعنی از نظر طراحان این پروتکل این میزان آدرس یکتا کافی بود. اما با گذشت سالها و گسترش روزافزون اینترنت و ابزارهای مختلف متصل به آن، کمکم معلوم شد که این تعداد آدرس به هیچ وجه کافی نخواهد بود. اینجاست که سرویس NAT به کار آمد.
رایجترین فرم ترجمه آدرسهای شبکه در مورد شبکه اختصاصی بزرگی با آدرسهایی در محدوده آدرسهای اختصاصی (Private addresses) یعنی محدوده 10.0.0.0 تا 10.255.255.255 ، 172.16.0.0 تا 172.31.255.255 ، یا 192.168.0.0 تا 192.168.255.255 است. این آدرسهای اختصاصی برای دسترسی به منابع داخلی شبکه به خوبی کار میکنند و روترهای درون شبکه میتوانند ترافیک را بدون هیچ مشکلی بین آدرسهای اختصاصی مسیریابی کنند. اما برای دسترسی به منابع بیرون از شبکه همچون اینترنت نیاز است که این کامپیوترها آدرس عمومی (Public address) داشته باشند تا با استفاده از آن بتوانند پاسخ درخواستهای خود به بیرون از شبکه را دریافت کنند.
NAT چگونه کار می کند؟
یک کامپیوتر درون شبکه اختصاصی درخواست خود را به مقصد کامپیوتری بر روی اینترنت میفرستد. روترهای درون شبکه تشخیص میدهند که این درخواست برای منبعی از درون شبکه اختصاصی نیست. بنابراین درخواست را به دیواره آتش یا همان فایروال (firewall) میفرستند. فایروال این درخواست را با استفاده از آدرس عمومی خود به اینترنت میفرستد و پاسخی را که از سمت مقصد مربوطه در اینترنت دریافت میکند به کامپیوتر مذکور در شبکه اختصاصی ارسال میکند. از زاویه دید کامپیوتری که در اینترنت است اطلاعات مورد درخواست به آدرس فایروال ارسال میشود. اما از زاویه دید کامپیوتر درون شبکه اختصاصی شرایط به گونهای است که گویا ارتباط با مقصد مربوطه در اینترنت به طور مستقیم و بی هیچ واسطهای برقرار شده است.

استفاده از سرویس NAT به این شکل، بیانگر آن است که تمامی کاربران درون شبکه اختصاصی که به اینترنت دسترسی دارند هنگام استفاده از اینترنت یک آدرس IP عمومی دارند. این بدان معناست که تنها یک آدرس عمومی برای صدها یا حتی هزاران کاربر مورد نیاز است. به این ترتیب مشکل کمبود تعداد آدرسهای قابل استفاده برطرف میشود.
اهداف اصلی استفاده از NAT در شبکه چیست؟
منظور اصلی استفاده از NAT، محدود کردن تعداد آدرسهای IP عمومی یک سازمان یا شرکت است که هم از بعد اقتصادی و هم بعد امنیتی برای آن شرکت دارای اهمیت است. شایان ذکر است که تمامی آن بیش از 4 میلیارد IP یکتای قابل ساخت که پیشتر به آن اشاره کردیم نمیتوانند برای ابزارهای ارتباطی مختلف در شبکهها مورد استفاده قرار گیرند. بخشی از آنها برای اهداف نظامی، پخش همگانی یا تست رزرو شدهاند و در نتیجه برای اهداف دیگر در شبکه قابل استفاده نیستند. سرویس NAT اولین بار از طرف شرکت سیسکو ارائه شد و سپس مورد استفاده گسترده در شبکهها قرار گرفت. پیشتر در مجله فرادرس در مورد نحوه پیادهسازی NAT در فایروال سیسکو ASA آموزش دادهایم.
فایروال در واقع واسطهای بین جهان بیرون و درون یک شبکه داخلی محسوب میشود. به این ترتیب یک لایه امنیتی اضافه در شبکه ایجاد میشود. سرویس NAT قوانینی اضافی را هم میتواند در بر بگیرد. مثلا آن که کدامیک از پورتهای یک کامپیوتر شبکه داخلی از طریق IP اختصاصیافته به آن به اینترنت دسترسی داشته باشند. این ویژگیهای NAT به مهندسان شبکه در مدیریت ترافیک و بهینهسازی مسیریابی در شبکه داخلی کمک میکند.
فایروالهای مدرن stateful هستند؛ یعنی علاوه بر ایجاد برقراری ارتباط بین بخشی از یک شبکه داخلی و اینترنت میتوانند جزئیات این اتصال از جمله پورتهای درگیر، ترتیب بستههای داده و آدرسهای IP درگیر در اتصال را رصد کرده و اطلاعات مربوطه را نگهداری کنند. آنها اطلاعات موجود در جلسات ارتباط بین شبکه داخلی و فایروال را به همراه اطلاعات موجود در جلسات بین فایروال و اینترنت نگهداری میکنند. با پایان هر جلسه، اطلاعات اتصال مربوطه پاک میشود.
علاوه بر کاربرد ارتباط بین کامپیوترهای یک شبکه داخلی با شبکهای خارجی همچون اینترنت، استفاده دیگری که از سرویس NAT میشود مربوط به «سرور وب» (Web server) است. گاهی در شبکههای بزرگ سرورهایی قرار دارند که به عنوان سرور وب عمل کرده و نیاز به اتصال دائمی به اینترنت دارند. برای این سرورها آدرس IP عمومی بر روی فایروال اختصاص داده میشود.
انواع NAT در شبکه کدامند؟
چندین نوع مختلف NAT وجود دارد. یا بهتر بگوییم که سرویس NAT به چند روش مختلف میتواند کار کند.

Static NAT چیست؟
نت استاتیک (Static Nat | SNAT) آدرسهای IP ثبت نشده در شبکههای IP اختصاصی را به صورت یک به یک به آدرسهای ثبت شده تبدیل کرده و از این طریق شبکه یا بخشی از آن را به اینترنت متصل میکند. به عبارت دیگر سرویس NAT آدرسهای اختصاصی در شبکه داخلی را قبل از ارسال به شبکهای دیگر به صورت آدرسهایی قانونی ترجمه میکند. به این ترتیب هکرها به آدرسهای شبکه داخلی دسترسی نخواهند داشت.
Dynamic NAT چیست؟
در حالی که در SNAT نگاشتی یک به یک بین آدرسهای محلی داخلی با آدرسهای global داشتیم، در اینجا نگاشت آدرسهای global به آدرسهای محلی داخلی به صورت اتوماتیک انجام شده و گروهی از آدرسهای IP عمومی جهت ترجمه مورد استفاده قرار میگیرند. به عبارت دیگر در اینجا لیستی از آدرسهای ثبت شده وجود دارد که آدرسهای IP ثبت نشده را به هر کدام از آنها میتوان تبدیل کرد.
PAT چیست؟
پَت (Port Address Translation | PAT) نمونهای از NAT است که به آن NAT overloading گفته میشود. در اینجا چندین آدرس IP ثبت نشده با وجود این که تفاوتشان تنها در پورتهایشان است به یک IP ثبت شده تبدیل میشوند؛ در حالی که تفاوت این آدرسها تنها در پورتهایشان است. در واقع PAT نسخهای از Dynamic NAT است که در آن تعداد آدرسهای محلی داخلی از تعداد آدرسهای global داخلی بیشتر است. NAT overloading پراستفادهترین نوع NAT است. در این نوع از NAT بیشترین میزان حفظ آدرسهای IP برای استفادههای دیگر حاصل میشود. استفاده از PAT خصوصا در حالتی که تعداد زیادی کاربر، تنها از طریق یک آدرس IP عمومی به اینترنت متصل باشند مقرونبهصرفه و مفید است.
مزایای استفاده از NAT در شبکه چیست؟
برخی از مزایای استفاده از NAT در ادامه میآیند.
- حفظ آدرسها: زمانی که کاربر از NAT overloading استفاده کند هدف حفظ تعداد بیشتری از آدرسهای IP برای استفادههای دیگر محقق میشود. در این روش، از آدرسها در سطح پورت در چند کاربرد مختلف استفاده میشود.
- انعطاف در اتصال: با بکارگیری ابزار پشتیبانی و load-balancing در کنار سرویس NAT، انعطاف و قابلیت اطمینان در شبکه افزایش مییابد.
- کاهش هزینهها: سازمانهایی که از سرویس NAT (خصوصا از نوع PAT) در کنار آدرسهای اختصاصی خود استفاده میکنند، نیازی به خرید آدرسهای IP جدید برای هر یک از کامپیوترهای خود در سازمان ندارند. بنابراین هزینههای آنها کاهش مییابد.
- امنیت شبکه: تمامی آدرسهای مبدأ و مقصد در سرویس NAT پنهان هستند. NAT یک لایه اضافی امنیتی به شبکه اضافه میکند.
- آدرسدهی اختصاصی: NAT سرویس آدرسدهی IPv4 اختصاصی خود را دارد. حتی اگر شما آدرسهای عمومی جدیدی را به کار بگیرید این آدرسدهی پابرجا بوده و به درستی کار میکند. چنانچه شما شرکت ارائهکننده سرویس اینترنت (Internet Service Provider | ISP) خود را هم عوض کنید باز نیازی به تغییر آدرسهای داخلی شبکه خود ندارید.
- سرعت مناسب: در مقایسه با «سرورهای پروکسی» (Proxy server)، NAT از هر دو سوی کامپیوترهای مبدأ و مقصد transparent بوده و بنابراین سریعتر عمل میکند. به عبارت دیگر هیچکدام از سیستمهای مبدأ و مقصد که در شبکه داخلی و اینترنت واقع شدهاند، هنگام برقراری ارتباط خود متوجه حضور NAT نیستند. اما مثلا در مورد proxy server، مبدأ و مقصد متوجه حضور آن بوده و برای برقراری ارتباط، ابتدا درخواست از مبدأ به proxy server ارسال شده و سپس از آنجا به سوی مقصد ارسال میشود. رویهای مشابه در پاسخدهی از سمت مقصد نیز وجود دارد.

معایب استفاده از NAT در شبکه چیست؟
با آن که استفاده از سرویس NAT از جهات مختلف سودمند خواهد بود، اما ممکن است که استفاده از آن مشکلاتی را هم در شبکه ایجاد کند. در بخش پایانی این نوشته از مجله فرادرس، برخی از معایب یا چالشهای استفاده از NAT در شبکه را بیان خواهیم کرد.
- مشکل در عملکرد شبکه: بکارگیری NAT ممکن است که باعث ایجاد تأخیر در ارتباطات IPv4 و از دست رفتن امکان ردیابی IP-ها شود.
- مشکل در استفاده از اپلیکیشنها: ممکن است که برخی از کامپیوترها از دسترس خارج شده و مشکلاتی در هماهنگی شبکه ایجاد شود.
- عدم امکان استفاده از بعضی از پروتکلها: بعضی از پروتکلها و اپلیکیشنهای شبکه هستند که در شبکهای با قابلیت NAT به صورت مطلوب کار نمیکنند.
- اشغال حافظه: NAT بستههای داده ارسالی را سنجیده و بخش آدرس آنها را به صورت IP-های محلی (local) یا global تبدیل میکند. برای این کار میزان زیادی از فضای حافظه و پردازنده مصرف میشود.
- چالش عیبیابی: استفاده از NAT میتواند عیبیابی در شبکه را سختتر کند.