آموزشی

NAT چگونه کار می کند ؟

مرحله ۱ – NAT چه کاری انجام می دهد؟

 

NAT همچون پذیرش گر یک اداره بزرگ است.

شما دستورالعمل ها را در اختیار پذیرش گر قرار داده اید تا تمامی تماس ها را به شما متصل نکند مگر اینکه شما تقاضا کنید. بعدها شما با یک مشتری تماس می گیرید و برای او پیغامی مبنی بر اینکه با شما تماس بگیرد می گذارید. شما به پذیرش گر می گویید که منتظر یک تماس از سمت آن مشتری هستید تا آن را به شما وصل کند.

مشتری با شماره اصلی اداره شما تماس می گیرد(این شماره تنها شماره ای است که مشتری می شناسد). وقتی مشتری به پذیرش گر می گوید که شما در انتظار تماس او هستید، پذیرش گر جدولی(که نام  اشخاص را به شماره داخلی آنها مربوط می کند) را بررسی می کند. پذیرش گر می داند که شما خود تقاضای این تماس را کرده اید(طی پیغام تلفنی که برای مشتری گذارده اید) و مشتری را به داخلی شما متصل می کند.

NAT به صورت یک دستگاه(Firewall، Router یا کامپیوتر( که بین شبکه داخلی و شبکه Public قرار می گیرد عمل می کند.

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 کمک بگیرد تا ارتباطش را با دیگر نقاط جهان برقرار کند.

این نوشته را هم از دست ندهید :   BitLocker چیست و چگونه به کار می آید ؟

مرحله ۲ – پیکربندی 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 که که کامپیوتر مبدأ از کامپیوتر مقصد درخواست می کند تا آن را باز کند. همچون ۳۰۲۱٫

این نوشته را هم از دست ندهید :   آموزش تصویری نصب و منو های Adobe Photoshap cc 2018 (فتوشاپ) ۱

نشانی ها، دو ماشین ابتدا و انتهای مسیر را تعیین می کنند در حالی که شماره پورت ها از ایجاد یک ارتباط یکتا بین دو ماشین اطمینان حاصل می کنند.

ترکیب این چهار عدد یک ارتباط مستقل TCP/IP ایجاد می کنند. هر شماره پورتی ۱۶ بیت را به خود اختصاص می دهد که به معنی وجود ۶۵۵۳۶ مقدار ممکن است. از آنجایی که هر سازنده به روش هایی با تفاوتی خیلی کم پورت ها را به هم مرتبط(map) می کنند، در واقع در حدود ۴۰۰۰  پورت در دسترس است.

مرحله ۳ – Dynamic NAT و Overloading

در اینجا چگونگی عملکرد 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 مقصد و پورت مقصد را با مورد مرتبط که در جدول ترجمه جایگزین کرده و به آن کامپیوتر ارسال می کند.

این نوشته را هم از دست ندهید :   اسکنر اثر انگشت ( Fingerprint scanner ) چگونه کار می کند ؟

* در نهایت کامپیوتر موردنظر بسته را از مسیریاب دریافت می کند. این رویه تا هنگامی که کامپیوتر در حال ارتباط با شبکه خارجی است تکرار می شود.

* مسیریاب 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 را بسیار کاهش می یابد.