در استفاده از IPهای public و اختصاص آنها به سیستمها، مشکل بزرگی وجود دارد و آن تعداد محدود این آدرسهاست. به دلیل تعداد محدود این IPها نمیتوان به هر سیستم یا دستگاه یک IP public اختصاص داد. برای حل این مشکل در سازمانها IP public بروی دستگاه خروجی قرار داده میشود و سیستمهای داخل شبکه که از IP private استفاده میکنند هنگام ارسال درخواستهای اینترنتیشان آدرسشان توسط دستگاه Edge به IP public ترجمه میشود. در این مبحث به توضیحات و نحوه راهاندازی انواع NAT میپردازیم.
کاربردهای NAT
- ترجمه IP های private و public به همدیگر
- حفاظت از شبکههای داخلی در برابر برخی حملات اینرنتی
- ترجمه پورتها در صورت لزوم
- تغییر تامین کننده اینترنت در صورت لزوم بدون نیاز به تغییر در شبکه داخلی
انواع NAT
1- Static
2- Dynamic
3- PAT (port address translation)
Static NAT
در این نوع NAT فرآیند ترجمه IP private به IP public به صورت نظیر به نظیر یا یک به یک اتفاق میافتد. هنگام دسترسی به اینترنت این IP private همیشه با یک IP public تنظیم شده دیده خواهد شد.
Dynamic NAT
در نوع Dynamic عمل ترجمه IPها به یکدیگر نظیر به نظیر نیست. در این روش نیاز به بیش از یک IP public است. لیست IPهای اینترنتی در یک pool قرار داده میشود و سپس با استفاده از access-list اختصاص به IPهای داخلی صورت میگیرد.
در این روش، روتر یا دستگاهی که کار ترجمه را انجام میدهد جدولی از آدرس های ترجمه شده ایجاد میکند تا بتوانید درصورتیکه پاسخ درخواست کاربر داخلی از اینترنت برگشت، آن پاسخ را به چه آدرسی در داخل تحویل دهد.
PAT
این نوع از NAT که به NAT overload نیز معروف است، زمانی به کار میرود که همه IP های private به یک IP public ترجمه میشود. در این روش به ازای 65535 پورت می توان ترجمه را انجام دهد و اگر از این تعداد بیشتر شود باید از IP بعدی استفاده کند. در این روش علاوه بر source IP، source port هم ترجمه می شود.
نکته: روش PAT برای دسترسی کاربران سرویس گیرنده به اینترنت مناسب است. برای برنامه هایی که source port در آنها اهمیت دارد با توجه به عوض شدن پورت مناسب این برنامهها نیست.
نکته: در IP table (فایروال) در دستگاههای مانند میکروتیک که سیستم عامل لینوکسی دارد به PAT عبارت masquerade را نسبت می دهد.
راهاندازی NAT
دستورات NAT بروی پورت یا همان اینترفیس ثبت میشود. در interface داخلی از دستور ip nat inside و در interface خارجی از دستور ip nat outside استفاده میکنیم. این دو دستور برای تمام انواع NAT توضیح داده شده استفاده میشود.
پیاده سازی static NAT
برای پیاده سازی static NAT سناریو زیر را در نظر بگیرید.
بروی Router0 هیچ پروتکل routingای راهاندازی نکرده و فقط از static NAT برای ترجمه IP کاربر به آدرس 192.168.1.100 استفاده میکنیم.
پس از انجام تنظیمات مربوط به interface روتر دستورات static NAT را وارد میکنیم. دستور ip nat inside source static 192.168.1.100 1.1.1.2 مشخص میکند که ترجمه آدرس داخلی 192.168.1.100 به صورت static به source ترجمه 1.1.1.2 اتفاق بیافتد.
و نتیجه بروی سیستم کلاینت
پیادهسازی Dynamic NAT
سناریو راهاندازی شبیه سناریو قبل است، با این تفاوت که رنجی از IPهای در اختیار روتر است و میخواهیم برای چند سیستم NAT انجام دهیم.
قسمت اول تنظیمات که ثبت دستورات ip nat inside بروی اینترفیس داخلی و ip nat outside بروی اینترفیس خارجی (متصل به اینترنت) در همهی انواع NAT یکی است.
در قسمت دوم از تنظیمات، بایستی توسط access-list مشخص کنیم چه IPهایی حق عبور به سمت بیرون را دارند. در اینجا برای تمام IPهای رنج 192.168.1.0/24 اجازه را صادر میکنیم.
در قسمت سوم IPهای آغاز و پایان pool را توسط دستور ip nat pool POOLNAME … مشخص میکنیم
و در قسمت چهار مشخص میکنیم چه اکسس لیستی از چه pool ای استفاده کند.
اگر جدول NAT پر شود، روتر ردیفهای جدول را با در نظر گرفتن timeout پانزده دقیقه پاک میکند.
نتیجه در سیستم کاربران
برای دیدن جدول translation انجام شده از دستور show ip translation استفاده میشود.
PAT
روش اجرای این روش مانند روش dynamic است با این تفاوت که در انتهای دستور، overload را اضافه میکنیم.
Ip nat inside source access-list 1 pool TEST overload
و اگر در این حالت بروی روتر show ip translation بگیریم مشخص است که همه از یک IP به بیرون میروند.
در این روش اگر هر 65535 پورت موجود پر شود به سراغ IP بعدی می رود.
نکته: حالت دیگری در اجرای دستور NAT وجود دارد که به کمک این روش می توان از آدرس interface ایی که به بیرون متصل است استفاده کنیم.
Ip nat inside source access-list 1 interface fastethernet 0/1 overload