زمانی که اینترنت در حال طراحی و پیاده سازی بود، برخی از شرکت ها وظیفه تخصیص IP به سایر شرکت ها را داشتند. اما با توسعه اینترنت کم کم به این نتیجه رسیدند که با چنین رشدی، در اواسط دهه ۱۹۹۰ تمام ادرس های IP استفاده خواهند شد و در اینجا بود که مفهوم NAT شکل گرفت و راه حل در آن بود. اما NAT چیست و چه کار میکند؟ با ما همراه باشید تا به این پرسش مهم پاسخ دهیم. اما اجازه دهید پیش از تعریف NAT مقدمه ای از روند شکل گیری Ip بگوییم
روند شکل گیری IP
اینترنت گسترده تر از آن چیزی شده که هرکسی میتوانست تصور کند. اگرچه اندازه دقیق آن مشخص نیست ولی به صورت تخمینی بیش از ۱۰۰میلیون میزبان و بیشتر از ۳۵۰ میلیون کاربر به صورت فعال در اینترنت وجود دارند که این تعداد بیش از کل جمعیت ایالات متحده می باشد. در واقع نرخ رشد اینترنت به صورتی است که در هر سال اندازه آن به طور موثر دو برابر می شود.
یک کامپیوتر برای ارتباط با کامپیوترهای دیگر و سرویس دهنده وب در اینترنت، نیازمند یک نشانی IP است. یک نشانی IP (Internet Protocol) یک شماره منحصر به فرد ۳۲بیتی است که مکان کامپیوتر شما در یک شبکه را مشخص می کند. به صورت خیلی ساده، IP همانند نشانی خیابان شما کار می کند، به عنوان روشی برای فهمیدن محل دقیق شما در جهت تحویل اطلاعات.
با انفجار اینترنت و افزایش شبکه های خانگی و تجاری، IPهای در دسترس به قدر کافی موجود نیستند. راه حل واضح این بود که مجددا فرمتی از نشانی ها طراحی شود تا امکان داشتن نشانی های بیشتر ایجاد شود. این فرمت تحت نام IPv6 ایجاد شد، اما از آنجا که به اصلاحاتی در کل زیرساخت اینترنت نیاز دارد چند سالی طول می کشد تا به اجرا برسد. حالا زمانی است که NAT ( RFC 1631 ) برای نجات به کمک ما می آید. در ادامه این مقاله از گروه تولید محتوای ایران هاست ( ارائه دهندهی خدمات هاست حرفه ای وردپرس ) مختصصان ما به این سوال پاسخ می دهند که نات چیست؟
NAT چیست؟
برای اینکه بدانید تعریف nat در شبکه چیست، باید ابتدا فهمید که مخفف چه عبارتی است: NAT به مخفف عبارت Network Address Translation باز میگردد و در آدرس دهی های خصوصی یا به اصطلاح Private مورد استفاده قرار میگیرد. در واقع نات به عنوان راه حلی کوتاه مدت برای مشکل آی پی تعبیه شد که در ادامه مفصل تر توضیح خواهیم داد.
اگر بخواهیم دقیقا بگوییم معنی NAT چیست باید گفت، این راه حل به سازمان و شرکت ها امکان ایجاد آدرس های خصوصی IPv4 درشبکه های LAN خود را داده که در عین حال بتوانند به درستی با اینترنت نیز ارتباط برقرار کنند.
Network Address Translation با استفاده مجدد از نشانی های IP به ما در بهبود امنیت کمک می کند. مسیریاب نات ترافیک ورودی و خروجی از شبکه private را ترجمه می کند.
nat در مودم چیست؟
مودم با استفاده از قابلیت nat، آدرسهای داخلی را به آدرس های جهانی که روی شبکه خارجی و اینترنت قابل استفاده هستند، تبدیل میکند.
نحوه کار nat
NAT به یک دستگاه همچون مسیریاب امکان می دهد تا به عنوان واسط بین اینترنت (یا شبکه Public) و یک شبکه محلی (یا شبکه Private) عمل کند. به این صورت که یک نشانی IP یکتا به عنوان نماینده گروهی از کامپیوترها در شبکه Public عمل می کند.
اما کمبود نشانی های IP تنها یکی از دلایل استفاده از NAT است. در این مقاله شما بیشتر در خصوص اینکه NAT چگونه برای شما سودمند خواهد بود، خواهید اموخت. اما ابتدا بیایید به NAT و اینکه دقیقا چه کاری می تواند انجام دهد نگاهی دقیق تر بیاندازیم.
نات چه کاری انجام می دهد و چه مزایایی دارد؟
NAT همچون پذیرش گر یک اداره بزرگ است. شما دستورالعمل ها را در اختیار پذیرشگر قرار داده اید تا تمامی تماس ها را به شما متصل نکند مگر اینکه شما تقاضا کنید. بعدها شما با یک مشتری تماس می گیرید و برای او پیغامی مبنی بر اینکه با شما تماس بگیرد می گذارید. شما به پذیرش گر می گویید که منتظر یک تماس از سمت آن مشتری هستید تا آن را به شما وصل کند.
مشتری با شماره اصلی اداره شما تماس می گیرد(این شماره تنها شماره ای است که مشتری می شناسد). وقتی مشتری به پذیرش گر می گوید که شما در انتظار تماس او هستید، پذیرش گر جدولی (که نام اشخاص را به شماره داخلی آنها مربوط می کند) را بررسی می کند. پذیرش گر می داند که شما خود تقاضای این تماس را کرده اید(طی پیغام تلفنی که برای مشتری گذارده اید) و مشتری را به داخلی شما متصل می کند.
NAT به صورت یک دستگاه Firewall، Router یا کامپیوتر که بین شبکه داخلی و شبکه Public قرار می گیرد عمل می کند.
انواع NAT
انواع NAT که در اشکال متعددی دارد که به روش های مختلفی عمل می کنند:
Static NAT
ارتباط (map) یک نشانی IP ثبت نشده به یک نشانی IP ثبت شده بر پایه ارتباط یک به یک.
این روش به خصوص زمانی مفید است که یک دستگاه نیازمند ارتباط های قابل دسترس از خارج از شبکه باشند.
در Static NAT نشانی IP کامپیوتر ۱۹۲.۱۶۸.۳۲.۱۰ همیشه به ۲۱۳.۱۸.۱۲۳.۱۱۰ ترجمه خواهد شد.
Dynamic NAT
یک نشانی IP ثبت نشده را به یک نشانی IP از یک گروه نشانی های IP ثبت شده، مرتبط (map) می کند. در Dynamic NAT نشانی IP کامپیوتر ۱۹۲.۱۶۸.۳۲.۱۰ به اولین نشانی در دسترس در محدوده ۲۱۳.۱۸.۱۲۳.۱۰۰ تا ۲۱۳.۱۸.۱۲۳.۱۵۰ ترجمه خواهد شد.
Overloading: شکلی از Dynamic NAT که چند نشانی IP ثبت نشده را به یک نشانی IP با پورت های متفاوت مرتبط(map) می کند. این روش به PAT(Port Address Translation)، NAT با نشانی واحد یا NAT تسهیم شده در مرتبه پورت(port-level multiplexed NAT) معروف است.
در روش Overloading هر کامپیوتر در شبکه Private به یک نشانی IP یکسان(۲۱۳.۱۸.۱۲۳.۱۰۰) با یک شماره پورت متفاوت ترجمه شده است.
Overlapping: زمانی که نشانی های IP به کار رفته در شبکه داخلی شما، نشانی های IP ثبت شده در شبکه دیگر باشند، مسیریاب می بایست یک جدول مراجعه از این نشانی ها ایجاد کرده تا بتواند آنها را جدا کند و با IPهای یکتای ثبت شده جایگزین کند.
قابل توجه است که مسیریاب NAT می بایست نشانی های داخلی را به نشانی های یکتا ترجمه کند در حین اینکه نشانی های ثبت شده خارجی را به نشانی هایی که در شبکه داخلی یکتا هستند ترجمه می کند. این روش می تواند هم در Static NAT و هم با استفاده از DNS و Dynamic NAT اجرا شود.
محدوده IP داخلی ۲۳۷.۱۶.۳۲.XX به عنوان IPهای ثبت شده شبکه دیگری هم ثبت شده است. بنابراین مسیریاب نشانی ها را جهت جلوگیری از conflict نهانی با شبکه دیگر ترجمه می کند. همچنین مسیریاب زمانی که اطلاعات به شبکه داخلی فرستاده شده اند، نشانی IP ثبت شده جهانی را به نشانی های IP محلی ثبت نشده ترجمه خواهد نمود.
شبکه داخلی معمولا یک LAN(Local Area Network) است که عموما یک stub domain است. یک stub domain یک LAN است که از نشانی های IP به صورت داخلی استفاده می کند. بسیاری از ترافیک شبکه در یک stub domain محلی است بنابراین اطلاعات از شبکه داخلی خارج نخواهند شد.
یک stub domain شامل IPهای ثبت شده و IPهای ثبت نشده هستند. البته هر کامپیوتری که از IPهای ثبت نشده استفاده می کند می بایست از NAT کمک بگیرد تا ارتباطش را با دیگر نقاط جهان برقرار کند.
پیکربندی NAT
NAT به روش های مختلفی پیکربندی می شود. در مثال زیر مسیریاب NAT به گونه ای پیکربندی شده تا نشانی های IP ثبت نشده(داخلی، محلی) را که در شبکه Private(داخلی) وجود دارند به IPهای ثبت شده ترجمه کند. این حالت هر زمان که یک دستگاه داخلی با یک IP ثبت نشده نیاز به ارتباط با یک شبکه عمومی(خارجی) دارد اتفاق می افتد.
* یک ISP محدوده ای از نشانی های IP را به شرکت شما اختصاص می دهد. این محدوده اختصاص داده شده از نشانی ها، ثبت شده و یکتا هستند و به نشانی های Inside Global هستند. نشانی های IP داخلی به دو گروه تقسیم می شوند. یک گروه کوچک(نشانی های outside local) که به وسیله مسیریاب NAT استفاده می شوند.
دیگری گروهی بسیار بزرگ تر که به عنوان نشانی های inside local معروف هستند، در stub domain ها استفاده خواهند شد. نشانی های outside local جهت ترجمه نشانی های IP منحصر به فرد استفاده می شوند که با عنوان نشانی های outside global دستگاه ها در شبکه public معروف هستند.
نشانی های IP نامگذاری های متفاوتی دارند خواه چه در شبکه private(stub domain) باشند یا در شبکه public( اینترنت چیست به زبان ساده )، چه ورودی باشند و چه خروجی.
- اکثر کامپیوترها در stub domain جهت ارتباط با دیگر کامپیوترها از نشانی های Inside Local استفاده می کنند.
- برخی از کامپیوترها در stub domain بیشتر با خارج از شبکه ارتباط برقرار می کنند. این کامپیوترها نشانی های Inside Global دارند که به این معنی است که آنها به ترجمه نیاز ندارند.
- زمانی که یک کامپیوتر در stub domain که نشانی محلی داخلی(Inside Local) دارد بخواهد با خارج از شبکه ارتباط برقرار کند، بسته به یکی از مسیریاب های NAT می رود.
- مسیریاب NAT جدول مسیریابی خود را برای یافتن رکوردی جهت نشانی مقصد چک می کند اگر وجود داشت، مسیریاب NAT نشانی بسته را ترجمه می کند و یک رکورد برای آن در جدول ترجمه نشانی ها ایجاد می کند. اگر نشانی مقصد در جدول مسیریابی نباشد، بسته نادیده گرفته می شود.
- در صورت استفاده از یک نشانی inside global ، مسیریاب بسته را به مقصدش ارسال می کند.
- در صورتی که کامپیوتری در شبکه public بسته ای را به شبکه private ارسال کند، نشانی مبدأ بر روی بسته، یک نشانی outside global خواهد بود. نشانی مقصد یک نشانی inside global است.
- مسیریاب NAT به جدول ترجمه نشانی ها نگاه می کند و نشانی مقصد را در آنجاست را می یاید و به کامپیوتری در stub domain متصل (map) می کند.
- مسیریاب NAT نشانی inside global بسته را به نشانی محلی داخلی ترجمه می کند و آن را به کامپیوتر مقصد ارسال می کند.
Overloading NAT از ویژگی TCP/IP protocol stack به نام تسهیم گری(multiplexing) استفاده می کند. این قابلیت به یک کامپیوتر امکان می دهد تا چندین ارتباط همزمان با یک کامپیوتر(یا کامپیوترهای) راه دور با استفاده از پورت های TCP یا UDP متفاوت برقرار کند. یک بسته IP یک Header دارد که شامل اطلاعات زیر است:
- نشانی مبدأ: نشانی IP کامپیوتر مبدأ، مثلا ۲۰۱.۳.۸۳.۱۳۲.
- پورت مبدأ: شماره پورت TCP یا UDP که کامپیوتر مبدأ به این بسته اختصاص داده است. برای مثال ۱۰۸۰.
- نشانی مقصد: نشانی IP کامپیوتر دریافت کننده بسته. برای مثال ۱۴۵.۵۱.۱۸.۲۲۳.
- پورت مقصد: شماره پورت TCP یا UDP که که کامپیوتر مبدأ از کامپیوتر مقصد درخواست می کند تا آن را باز کند. همچون ۳۰۲۱.
نشانی ها، دو ماشین ابتدا و انتهای مسیر را تعیین می کنند در حالی که شماره پورت ها از ایجاد یک ارتباط یکتا بین دو ماشین اطمینان حاصل می کنند. ترکیب این چهار عدد یک ارتباط مستقل TCP/IP ایجاد می کنند. هر شماره پورتی ۱۶ بیت را به خود اختصاص می دهد که به معنی وجود ۶۵۵۳۶ مقدار ممکن است. از آنجایی که هر سازنده به روش هایی با تفاوتی خیلی کم پورت ها را به هم مرتبط(map) می کنند، در واقع در حدود ۴۰۰۰ پورت در دسترس است.
معایب NAT
- زمانی که از NAT استفاده می کنیم این امکان را نداریم که بتوانیم IP دستگاه بعدی را ردیابی کنیم.
- بعضی از تکنولوژی ها و برنامه ها طبق انتظاری که داریم در NAT عمل نمی کند و امکان تداخل وجود دارد.
- از آنجایی که NAT یک تکنولوژی پردازشگر است و از حافظه استفاده می کند، نیاز به ترجمه ی تمامی آدرس های IPV4 برای تمام داده های ورودی و خروجی دارد.
- امکان دارد که در ارتباط با IPV4 تاخیر ایجاد شود.
عملکرد Dynamic NAT
در اینجا چگونگی عملکرد Dynamic NAT را بررسی می کنیم:
- شبکه داخلی(stub domain) یک شرکت با نشانی های IP تنظیم می شود که به طور خاص توسط IANA(Internet Assigned Numbers Authority) (شرکتی که مجوزهای جهانی نشانی های IP را صادر می کند) تخصیص داده نشده اند. از آنجا که این نشانی ها منحصر به فرد نیستند به عنوان نشانی های غیرقابل مسیریابی شدن(non-routable) در نظر گرفته می شوند.
- شرکت موردنظر یک مسیریاب که به NAT مجهز است را نصب می کند. مسیریاب محدوده ای از نشانی های IP که از طریق IANA به شرکت داده شده است را در دسترس دارد.
- کامپیوتری در stub domain اقدام به برقراری ازتباط با کامپیوتری خارج از شبکه داخلی می کند، مثلا با یک سرویس دهنده وب.
- مسیریاب بسته را از کامپیوتر واقع در stub domain تحویل می گیرد.
- مسیریاب نشانی IP غیرقابل مسیریابی شدن کامپیوتر را در یک جدول ترجمه نشانی ذخیره می کند. مسیریاب نشانی IP غیرقابل مسیریابی شدن کامپیوتر را با اولین نشانی در دسترس و خارج از محدوده نشانی های یکتا تعویض می کند. حالا جدول ترجمه نشانی یک رکورد بین یک نشانی عیرقابل مسیریابی و یک نشانی یکتا دارد.
- وقتی یک بسته ار سمت کامپیوتر مقصد برمی گردد، مسیریاب نشانی مقصد روی بسته را کنترل می کند سپس جدول ترجمه نشانی خود را بررسی می کند تا مالک بسته را در stub domain پیدا کند. مسیریاب نشانی مقصد را با نشانی ذخیره شده در جدول ترجمه تعویض می کند و بسته را به کامپیوتر موردنظر ارسال می کند. اگر مسیریاب در جدول ترجمه مورد مرتبطی پیدا نکند بسته را نادیده می گیرد.
- کامپیوتر بسته را از مسیریاب دریافت می کند. این رویه تا هنگامی که کامپیوتر در حال ارتباط با شبکه خارجی است تکرار می شود.
عملکرد Overloading NAT
- یک شبکه داخلی(stub domain) با نشانی های IP غیرقابل مسیریابی که به طور خاص توسط IANA اختصاص نیافته است، راه اندازی شده است.
- این شرکت یک مسیریاب که به NAT مجهز است را به کار گرفته است. این مسیریاب یک نشانی IP یکتا که شرکت از IANA تهیه کرده است را در اختیار دارد.
- کامپیوتری در stub domain اقدام به برقراری ارتباط با کامپیوتری خارج از شبکه داخلی می کند، مثلا با یک سرویس دهنده وب.
- مسیریاب بسته را از کامپیوتر واقع در stub domain تحویل می گیرد.
- مسیریاب نشانی IP عیرقابل مسیریابی و پورت کامپیوتر را در یک جدول ترجمه نشانی ذخیره می کند. مسیریاب نشانی IP عیرقابل مسیریابی کامپیوتر را با نشانی IP مسیریاب جایگزین می کند. مسیریاب پورت مبدأ کامپیوتر فرستنده بسته را با پورت خودش تعویض می کند. حالا در جدول ترجمه یک نشانی IP غیرقابل مسیریابی و پورت را که با نشانی IP مسیریاب مرتبط هستند را داریم.
- زمانی که یک بسته از طرف کامپیوتر مقصد دریافت می شود، مسیریاب پورت مقصد روی بسته را بررسی می کند سپس به جدول ترجمه مراجعه می کند تا مالک بسته را در stub domain پیدا کند. در ادامه مسیریاب نشانی IP مقصد و پورت مقصد را با مورد مرتبط که در جدول ترجمه جایگزین کرده و به آن کامپیوتر ارسال می کند.
- در نهایت کامپیوتر موردنظر بسته را از مسیریاب دریافت می کند. این رویه تا هنگامی که کامپیوتر در حال ارتباط با شبکه خارجی است تکرار می شود.
- مسیریاب NAT در جدول ترجمه خود نشانی و پورت کامپیوتر مبدأ را ذخیره کرده و از همین پورت در طول ارتباط استفاده می کند. هر دفعه که مسیریاب به یک رکورد از جدول ترجمه دسترسی پیدا می کند، مسیریاب یک تایمر را بازنشانی می کند، اگر تا قبل از به پایان رسیدن زمان تایمر، مجددا از آن رکورد استفاده نشود، آن رکورد از جدول حذف خواهد شد.
Stub Domains
به جدول زیر توجه کنید تا بدانید چگونه کامپیوترهای یک stub domain در شبکه خارجی ظاهر می شوند.
همانطور می بینید، مسیریاب NAT نشانی IP و شماره پورت هر کامپیوتر را در جدول ترجمه ذخیره می کند. سپس مسیریاب نشانی IP را با نشانی IP ثبت شده خودش و شماره پورت را با توجه مکان آن در جدول جایگزین می کند. بنابراین هر شبکه خارجی اظلاعات داخل بسته را با نشانی IP مسیریاب NAT و شماره پورت تعریف شده توسط مسیریاب دریافت می کند.
شما همچنان می توانید کامیپیوترهایی در stub domain داشته باشید که از نشانی های IP اختصاصی استفاده کنند. شما می توانید فهرستی از نشانی های IP ایجاد کنید که به مسیریاب بگویند کدام کامپیوترها در شبکه نیاز به NAT دارند.
تعداد ترجمه های همزمان که یک مسیریاب پشتیبانی می کند با میزان DRAM(Dynamic Random Access Memory) که دارد تعیین می شود. در صورتی که یک مورد در جدول ترجمه نشانی تنها ۱۶۰ بایت فضا اشغال کند، مسیریابی که ۴مگابایت DRAM دارد، از لحاظ تئوری می تواند تا ۲۶۲۱۴ ترجمه همزمان را پردازش کند که برای بسیاری از مصارف کافی است.
IANA محدوده مشخصی از نشانی های IP را جهت استفاده به عنوان نشانی های شبکه های داخلی و غیرقابل مسیریابی(non-routable) کنار گذاشته است. این نشانی ها ثبت نشده در نظر گرفته شده اند. (برای اطلاعات بیشتر RFC1918: Address Allocation for Private Internets را که این محدوده های نشانی را تعیین می کند مراجعه کنید.)
هیچ شرکت یا آژانسی نمی تواند مالکیت نشانی های ثبت نشده را بر عهده بگیرد یا آنها را در کامپیوترهای شبکه عمومی به کار بگیرد. مسیریاب ها طوری طراحی شده اند نشانی های ثبت نشده را نادیده بگیرند، این مسئله بدین معنی است که یک بسته از کامپیوتری با نشانی ثبت نشده به کامپیوتر مقصد با نشان ثبت شده ارسال می شود، اما پاسخ آن در اولین مسیریاب در طول مسیر بازگشت نادیده گرفته می شود.
برای هر سه کلاس نشانی های IP محدوده ای برای استفاده در شبکه ها در نظر گرفته شده است:
محدوده یک: کلاس A- 10.0.0.0 تا ۱۰.۲۵۵.۲۵۵.۲۵۵
محدوده دو: کلاس B- 172.16.0.0 تا ۱۷۲.۳۱.۲۵۵.۲۵۵
محدوده سه: کلاس C- 192.168.0.0 تا ۱۹۲.۱۶۸.۲۵۵.۲۵۵
اگرچه هر محدوده در کلاس متفاوتی قرار دارد با این حال نیاز نیست تا محدوده دقیقی را برای شبکه داخلی خود استفاده کنید. با این حال این عادت خوبی است چرا که احتمال مغایرت (conflict) نشانی های IP را بسیار کاهش می یابد.
Source NAT
Source NAT آدرس منبع را در عنوان IP یک بسته تغییر می دهد. همچنین ممکن است در هدرهای TCP / UDP پورت مقصد را تغییر دهد. استفاده معمولی از این روش برای هدایت بستههای ورودی به مقصد یک آدرس / پورت عمومی به یک آدرس / پورت IP خصوصی در داخل شبکه است.
امیدواریم با خواندن این مقاله با مفهوم تعریف nat در شبکه و مزایای nat آشنا شده باشید.