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

Nat(Network Address Translation) با استفاده مجدد از نشانی های IP به ما در بهبود امنیت کمک می کند. مسیریاب NAT  ترافیک ورودی و خروجی از شبکه private را ترجمه می کند.

اینترنت گسترده تر از آن چیزی شده که هرکسی میتوانست تصور کند. اگرچه اندازه دقیق آن مشخص نیست ولی به صورت تخمینی بیش از 100میلیون میزبان و بیشتر از 350 میلیون کاربر به صورت فعال در اینترنت وجود دارند که این تعداد بیش از کل جمعیت ایالات متحده می باشد. در واقع نرخ رشد اینترنت به صورتی است که در هر سال اندازه آن به طور موثر دو برابر می شود.

یک کامپیوتر برای ارتباط با کامپیوترهای دیگر و سرویس دهنده وب در اینترنت، نیازمند یک نشانی IP است. یک نشانی IP(Internet Protocol) یک شماره منحصر به فرد 32بیتی است که مکان کامپیوتر شما در یک شبکه را مشخص می کند. به صورت خیلی ساده، IP همانند نشانی خیابان شما کار می کند، به عنوان روشی برای فهمیدن محل دقیق شما در جهت تحویل اطلاعات .

زمانی که نشانی های IP منتشر شد، همه فکر می کردند تعداد بسیاری نشانی برای پوشش هر نیازی وجود دارند. به صورت تئوری شما می توانید 232=4294967296 نشانی منحصر به فرد داشته باشید. تعداد واقعی آدرس های در دسترس کمتر از این تعداد است(چیزی بین 3.2 تا 3.3میلیارد) زیرا با توجه به تقسیم بندی به کلاسها، تعدادی برای Multicasting، تست یا آزمایش های  کنار گذاشته شده اند.

با انفجار اینترنت و افزایش شبکه های خانگی و تجاری، IPهای در دسترس به قدر کافی موجود نیستند. راه جل واضح این است که مجددا فرمتی از نشانی ها طراحی کنیم تا امکان داشتن نشانی های بیشتر ایجاد شود. این فرمت تحت نام IPv6 ایجاد شد، اما از آنجا که به اصلاحاتی در کل زیرساخت اینترنت نیاز دارد چند سالی طول می کشد تا به اجرا برسد.

حالا زمانی است کهNAT (RFC 1631) برای نجات به کمک ما می آید. NAT به یک دستگاه همچون مسیریاب امکان می دهد تا به عنوان واسط بین اینترنت(یا شبکه Public) و یک شبکه محلی(یا شبکه Private) عمل کند. به این صورت که یک نشانی IP یکتا به عنوان نماینده گروهی از کامپیوترها در شبکه Public عمل می کند.

اما کمبود نشانی های IP تنها یکی از دلایل استفاده از NAT است. در این مقاله شما بیشتر در خصوص اینکه NAT چگونه برای شما سودمند خواهد بود خواهید اموخت. اما ابتدا بیایید به NAT و اینکه دقیقا چه کاری می تواند انجام دهد نگاهی دقیق تر بیاندازیم.

 

NAT چه کاری انجام می دهد؟

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

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

Static NAT: ارتباط(map) یک نشانی IP ثبت نشده به یک نشانی IP ثبت شده بر پایه ارتباط یک به یک.
این روش به خصوص زمانی مفید است که یک دستگاه نیازمند ارتباط های قابل دسترس از خارج از شبکه باشند.

در Static NAT نشانی IP کامپیوتر 192.168.32.10 همیشه به 213.18.123.110 ترجمه خواهد شد.

 

Dynamic NAT: یک نشانی IP ثبت نشده را به یک نشانی IP از یک گروه نشانی های IP ثبت شده، مرتبط(map) می کند.

در Dynamic NAT نشانی IP کامپیوتر 192.168.32.10 به اولین نشانی در دسترس در محدوده 213.18.123.100 تا 213.18.123.150 ترجمه خواهد شد.

Overloading: شکلی از Dynamic NAT که چند نشانی IP ثبت نشده را به یک نشانی IP با پورت های متفاوت مرتبط(map) می کند. این روش به PAT(Port Address Translation)، NAT با نشانی واحد یا NAT تسهیم شده در مرتبه پورت(port-level multiplexed NAT) معروف است.

در روش Overloading هر کامپیوتر در شبکه Private به یک نشانی IP یکسان(213.18.123.100) با یک شماره پورت متفاوت ترجمه شده است.

Overlapping: زمانی که نشانی های IP به کار رفته در شبکه داخلی شما، نشانی های IP ثبت شده در شبکه دیگر باشند، مسیریاب می بایست یک جدول مراجعه از این نشانی ها ایجاد کرده تا بتواند آنها را جدا کند و با IPهای یکتای ثبت شده جایگزین کند. قابل توجه است که مسیریاب NAT می بایست نشانی های داخلی را به نشانی های یکتا ترجمه کند در حین اینکه نشانی های ثبت شده خارجی را به نشانی هایی که در شبکه داخلی یکتا هستند ترجمه می کند. این روش می تواند هم در Static NAT و هم با استفاده از DNS و Dynamic NAT اجرا شود.

محدوده IP داخلی 237.16.32.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 کامپیوتر مبدأ، مثلا 201.3.83.132.

* پورت مبدأ: شماره پورت TCP یا UDP که کامپیوتر مبدأ به این بسته اختصاص داده است. برای مثال 1080.

* نشانی مقصد: نشانی IP کامپیوتر دریافت کننده بسته. برای مثال 145.51.18.223.

* پورت مقصد: شماره پورت TCP یا UDP که که کامپیوتر مبدأ از کامپیوتر مقصد درخواست می کند تا آن را باز کند. همچون 3021.

نشانی ها، دو ماشین ابتدا و انتهای مسیر را تعیین می کنند در حالی که شماره پورت ها از ایجاد یک ارتباط یکتا بین دو ماشین اطمینان حاصل می کنند. ترکیب این چهار عدد یک ارتباط مستقل TCP/IP ایجاد می کنند. هر شماره پورتی 16 بیت را به خود اختصاص می دهد که به معنی وجود 65536 مقدار ممکن است. از آنجایی که هر سازنده به روش هایی با تفاوتی خیلی کم پورت ها را به هم مرتبط(map) می کنند، در واقع در حدود 4000  پورت در دسترس است.

 

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

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

* مسیریاب NAT در جدول ترجمه خود نشانی و پورت کامپیوتر مبدأ را ذخیره کرده و از همین پورت در طول ارتباط استفاده می کند. هر دفعه که مسیریاب به یک رکورد از جدول ترجمه دسترسی پیدا می کند، مسیریاب یک تایمر را بازنشانی می کند، اگر تا قبل از به پایان رسیدن زمان تایمر، مجددا از آن رکورد استفاده نشود، آن رکورد از جدول حذف خواهد شد.

Stub Domains

به جدول زیر توجه کنید تا بدانید چگونه کامپیوترهای یک stub domain در شبکه خارجی ظاهر می شوند.

کامپیوتر مبدأ

نشانیIP مبدأ

پورت کامپیوتر مبدأ

نشانیIP مسیریاب

شماره پورتی
که NAT اختصاص می دهد

A

192.168.32.10

400

215.37.32.203

1

B

192.168.32.13

50

215.37.32.203

2

C

192.168.32.15

3750

215.37.32.203

3

D

192.168.32.18

206

215.37.32.203

4

 همانطور می بینید، مسیریاب NAT نشانی IP و شماره پورت هر کامپیوتر را در جدول ترجمه ذخیره می کند. سپس مسیریاب نشانی IP را با نشانی IP ثبت شده خودش و شماره پورت را با توجه مکان آن در جدول جایگزین می کند. بنابراین هر شبکه خارجی اظلاعات داخل بسته را با نشانی IP مسیریاب NAT و شماره پورت تعریف شده توسط مسیریاب دریافت می کند.

شما همچنان می توانید کامیپیوترهایی در stub domain  داشته باشید که از نشانی های IP اختصاصی استفاده کنند. شما می توانید فهرستی از نشانی های IP ایجاد کنید که به  مسیریاب بگویند کدام کامپیوترها در شبکه نیاز به NAT دارند.

تعداد ترجمه های همزمان که یک مسیریاب پشتیبانی می کند با میزان DRAM(Dynamic Random Access Memory) که دارد تعیین می شود. در صورتی که یک مورد در جدول ترجمه نشانی تنها 160 بایت فضا اشغال کند، مسیریابی که 4مگابایت DRAM دارد، از لحاظ تئوری می تواند تا 26214 ترجمه همزمان را پردازش کند که برای بسیاری از مصارف کافی است.

IANA محدوده مشخصی از نشانی های IP را جهت استفاده به عنوان نشانی های شبکه های داخلی و غیرقابل مسیریابی(non-routable) کنار گذاشته است. این نشانی ها ثبت نشده در نظر گرفته شده اند.(برای اطلاعات بیشتر RFC1918: Address Allocation for Private Internets را که این محدوده های نشانی را تعیین می کند مراجعه کنید.) هیچ شرکت یا آژانسی نمی تواند مالکیت نشانی های ثبت نشده را بر عهده بگیرد یا آنها را در کامپیوترهای شبکه عمومی به کار بگیرد. مسیریاب ها طوری طراحی شده اند نشانی های ثبت نشده را نادیده بگیرند، این مسئله بدین معنی است که یک بسته از کامپیوتری با نشانی ثبت نشده به کامپیوتر مقصد با نشان ثبت شده ارسال می شود، اما پاسخ آن در اولین مسیریاب در طول مسیر بازگشت نادیده گرفته می شود.

 

 

برای هر سه کلاس نشانی های IP محدوده ای برای استفاده در شبکه ها در نظر گرفته شده است:

محدوده یک: کلاس A- 10.0.0.0 تا 10.255.255.255

محدوده دو: کلاس B- 172.16.0.0 تا 172.31.255.255

محدوده سه: کلاس C- 192.168.0.0 تا 192.168.255.255

اگرچه هر محدوده در کلاس متفاوتی قرار دارد با این حال نیاز نیست تا محدوده دقیقی را برای شبکه داخلی خود استفاده کنید. با این حال این عادت خوبی است چرا که احتمال مغایرت(conflict) نشانی های IP را بسیار کاهش می یابد.

لیست مطالب مرتبط

پروتکل ICMP چیست؟

CDN چیست؟

معرفی تکنولوژی NAS

 پروتکل icmp یا internet control message protocol جهت خطایابی در کامپیوتر ها ، روتر ها و host ها، بررسی وجود سیگنال و ...

یکی از تکنولوژی های محبوب وبمسترها CDN که مخفف کلمات Content delivery network و به معنای شبکه توزیع محتوا است که با آن می توانند....

یکی از پیشرفته ترین آنها تکنولوژی nas می باشد که به شبکه های خانگی و تجاری اجازه می دهد تا حجم بالایی از اطلاعات را  ذخیره و بازیابی نمایند.


 

 

 
هاست لینوکس خرید هاست لینوکس خرید سرور مجازی خرید هاست لینوکس ارزان