معرفی و کانفیگ NAT در سیسکو – روز 8
پیکربندی و تأیید inside source NAT با استفاده از روشهای static و pools
با توجه به کاهش تعداد آدرسهای IPv4، چندین راهحل موقتی توسعه یافتند. یکی از این راهحلهای کوتاهمدت، استفاده از آدرسهای خصوصی و فناوری Network Address Translation (NAT) است. NAT به میزبانهای داخل شبکه اجازه میدهد هنگام دسترسی به منابع اینترنتی، یک آدرس معتبر IPv4 را قرض بگیرند. هنگامی که ترافیک درخواستی بازمیگردد، آدرس IPv4 مجدداً مورد استفاده قرار گرفته و برای درخواست اینترنتی بعدی از یک میزبان داخلی در دسترس خواهد بود.
با استفاده از NAT، مدیران شبکه تنها به یک یا تعداد محدودی آدرس IPv4 برای روتر نیاز دارند تا آن را به میزبانهای شبکه اختصاص دهند، بهجای آنکه برای هر کلاینت جدید یک آدرس IPv4 منحصربهفرد اختصاص یابد. هرچند IPv6 در نهایت مشکل کمبود فضای آدرسهای IPv4 را حل میکند، اما NAT همچنان بهطور گسترده در پیادهسازیهای فعلی شبکه مورد استفاده قرار میگیرد. در این بخش، مفاهیم، پیکربندی و عیبیابی NAT را بررسی خواهیم کرد.
مفاهیم NAT
NAT که در RFC 3022 تعریف شده است، دارای کاربردهای متعددی است. هدف اصلی آن حفظ آدرسهای IPv4 از طریق اجازه دادن به شبکهها برای استفاده از آدرسهای خصوصی IPv4 است. NAT آدرسهای داخلی، غیرقابل مسیریابی و خصوصی را به آدرسهای عمومی و قابل مسیریابی ترجمه میکند. همچنین NAT مزیت پنهانسازی آدرسهای IPv4 داخلی از شبکههای خارجی را دارد.
یک دستگاه مجهز به NAT معمولاً در مرز یک stub network کار میکند. شکل زیر توپولوژی اصلی مورد استفاده در بررسی امروز را نشان میدهد. در این سناریو، روتر R2 بهعنوان border router عمل میکند و بهعنوان دستگاه مورد استفاده برای پیکربندیهای نمونه امروزی انتخاب شده است.
توپولوژی NAT
در اصطلاحات ، inside network مجموعهای از شبکهها است که تحت ترجمه آدرس قرار میگیرند (تمام شبکههای مشخصشده در ناحیه سایهدار در عکس). در مقابل، outside network شامل تمامی آدرسهای دیگر است. عکس پایین نحوه ارجاع به آدرسها هنگام پیکربندی NAT را نشان میدهد:
- Inside local address: معمولاً یک آدرس خصوصی است. در تصویر، آدرس 192.168.10.10 که به PC1 اختصاص داده شده است، یک inside local address محسوب میشود.
- Inside global address: یک آدرس عمومی معتبر که به میزبان داخلی هنگام خروج از روتر NAT اختصاص داده میشود. وقتی ترافیک از PC1 به سمت وبسرور در 209.165.201.1 هدایت میشود، روتر R2 باید آدرس inside local را به inside global ترجمه کند، که در این مثال 209.165.200.226 است.
- Outside global address: یک آدرس IPv4 قابل دسترس که به یک میزبان در اینترنت اختصاص داده شده است. برای مثال، وبسرور در آدرس 209.165.201.1 قابل دسترسی است.
- Outside local address: آدرس IPv4 محلی که به یک میزبان در outside network اختصاص داده شده است. در بیشتر موارد، این آدرس با outside global address آن دستگاه خارجی یکسان است. (آدرسهای outside local خارج از محدوده آزمون CCNA هستند.)
اصطلاحات NAT
با استناد به عکس بالا، مراحل زیر فرآیند NAT را زمانی که PC1 ترافیک را به اینترنت ارسال میکند، نشان میدهد:
- PC1 بستهای را به مقصد اینترنت ارسال میکند. این بسته به R1 که دروازه پیشفرض است، هدایت میشود.
- R1 بسته را طبق جدول مسیریابی خود به R2 ارسال میکند.
- R2 جدول مسیریابی خود را بررسی کرده و مسیر بعدی را به روتر ISP تعیین میکند. سپس بررسی میکند که آیا بسته ارسالشده با معیارهای ترجمه مطابقت دارد یا نه. R2 شامل ACL است که شبکه داخلی را بهعنوان میزبان معتبر برای ترجمه مشخص کرده است. بنابراین، R2 یک آدرس IPv4 داخلی را به یک آدرس IPv4 عمومی inside global ترجمه میکند. در این مثال، آدرس داخلی 192.168.10.10 به آدرس 209.165.200.226 تبدیل شده و این Map در جدول NAT ذخیره میشود.
- R2 بسته را با آدرس جدید IPv4 (آدرس inside global) اصلاح کرده و آن را به ISP router ارسال میکند.
- بسته در نهایت به مقصد خود میرسد. سپس سرور مقصد پاسخ را به inside global address 209.165.200.226 ارسال میکند.
- هنگامی که R2 پاسخ را از مقصد دریافت میکند، جدول NAT را برای تطبیق inside global address با inside local address بررسی میکند. سپس بسته را اصلاح کرده و آدرس داخلی 192.168.10.10 را بهعنوان مقصد در بسته قرار داده و آن را به R1 ارسال میکند.
- R1 بسته را دریافت کرده و به PC1 ارسال میکند.
NAT پویا و ایستا
دو نوع ترجمه NAT به شرح زیر هستند:
- Dynamic NAT: از یک pool شامل چندین آدرس عمومی استفاده کرده و آنها را بر اساس اولویت دریافت درخواست اختصاص میدهد یا یک آدرس عمومی از پیش پیکربندیشده روی یک interface را مجدداً مورد استفاده قرار میدهد. هنگامی که یک میزبان با آدرس IPv4 خصوصی درخواست دسترسی به اینترنت را ارسال میکند، Dynamic NAT یک آدرس IPv4 از pool انتخاب میکند، مشروط بر اینکه آدرس موردنظر در آن لحظه توسط میزبان دیگری استفاده نشده باشد. علاوه بر استفاده از pool ، داینامیک نت (Dynamic NAT) میتواند برای overload کردن یک آدرس عمومی موجود که روی یک interface تنظیم شده است، پیکربندی شود.
- Static NAT: از یک mapping یکبهیک بین آدرسهای محلی و آدرسهای جهانی استفاده میکند. این mappingها همواره ثابت میمانند. Static NAT بهویژه برای وبسرورها یا میزبانهایی که باید یک آدرس ثابت و قابلدسترسی از اینترنت داشته باشند، مفید است.
NAT Overload
NAT Overload (که با نام Port Address Translation (PAT) نیز شناخته میشود) چندین آدرس IPv4 خصوصی را به یک یا چند آدرس IPv4 عمومی نگاشت (map) میکند. برای انجام این کار، شماره پورت نیز هر آدرس خصوصی را ردیابی میکند. هنگامی که پاسخ از بیرون دریافت میشود، شماره پورت مبدأ مقصد (Destination Source Port) به NAT Router امکان میدهد که بسته را برای کلاینت صحیح ترجمه کند.
مثالی از NAT Overload
- PC1 و PC2 بستههایی را به مقصد اینترنت ارسال میکنند.
- هنگامی که بستهها به R2 میرسند، NAT Overload آدرس منبع را به inside global IPv4 address تغییر میدهد و یک ورودی در جدول NAT ایجاد میکند که شامل شماره پورت source اصلی است (مانند 1555 و 1331 در این مثال) تا مشخص کند کدام کلاینت بستههای خروجی را ارسال کرده است.
- R2 جدول NAT را بهروزرسانی کرده و شماره پورتهای تخصیصیافته را ذخیره میکند. سپس، بستهها را به اینترنت ارسال میکند.
- هنگامی که Web Server پاسخ را ارسال میکند، R2 از پورت مبدأ مقصد (Destination Source Port) برای ترجمه بسته به کلاینت صحیح استفاده میکند.
NAT Overload تلاش میکند تا پورت مبدأ اصلی (Original Source Port) را حفظ کند. با این حال، اگر این پورت از قبل استفاده شده باشد، NAT Overload اولین شماره پورت در دسترس را از محدوده مناسب تخصیص میدهد. این محدودهها شامل موارد زیر هستند: 0–511, 512–1023, یا 1024–65535 است.
مزایای NAT
استفاده از NAT مزایای زیر را ارائه میدهد:
- NAT باعث صرفهجویی در فضای آدرس IPv4 ثبتشده میشود، زیرا با استفاده از NAT Overload، میزبانهای داخلی میتوانند یک آدرس IPv4 عمومی مشترک را برای تمامی ارتباطات خارجی استفاده کنند.
- NAT انعطافپذیری اتصالات به شبکه عمومی را افزایش میدهد. Poolهای متعدد، Backup Poolها و Load-Balancing Poolها را میتوان برای اطمینان از اتصال پایدار به شبکه عمومی پیادهسازی کرد.
- NAT به سازمانها اجازه میدهد که طرح آدرسدهی فعلی خود را حفظ کنند، در حالی که یک طرح آدرسدهی عمومی جدید را پیادهسازی میکنند. این بدان معناست که یک سازمان میتواند ISP خود را تغییر دهد، بدون اینکه نیاز به تغییر آدرسهای کلاینتهای داخلی خود داشته باشد.
- NAT یک لایه امنیتی اضافی برای شبکه فراهم میکند، زیرا شبکههای خصوصی آدرسهای داخلی خود را در خارج از سازمان منتشر نمیکنند. با این حال، عبارت “NAT Firewall” گمراهکننده است، زیرا NAT جایگزین فایروال نمیشود.
محدودیتهای NAT
محدودیتهای استفاده از NAT شامل موارد زیر است:
- کاهش عملکرد (Performance is degraded):
NAT باعث افزایش تأخیر در سوئیچینگ بستهها میشود، زیرا ترجمه هر آدرس IPv4 در هدر بسته، زمانبر است. - کاهش قابلیتهای End-to-End:
بسیاری از پروتکلها و برنامههای اینترنتی به عملکرد End-to-End وابسته هستند، که مستلزم انتقال بستههای بدون تغییر از مبدا به مقصد است. NAT این عملکرد را کاهش میدهد. - از بین رفتن قابلیت ردیابی End-to-End IP:
بستههایی که از چندین هاپ NAT عبور میکنند، چندین بار تغییر آدرس مبدأ را تجربه میکنند، که عیبیابی شبکه را دشوارتر میکند. - پیچیدگی بیشتر در Tunneling:
استفاده از NAT میتواند پروتکلهای تونلسازی مانند IPsec را پیچیدهتر کند، زیرا NAT مقادیر داخل هدر بستهها را تغییر میدهد و باعث میشود که یکپارچگی چکهای امنیتی IPsec و سایر پروتکلهای تونلسازی مختل شود. - اختلال در برخی سرویسها:
سرویسهایی که به شروع اتصال TCP از سمت کلاینت خارجی نیاز دارند یا پروتکلهای بدون اتصال (Stateless Protocols) مانند UDP، ممکن است با مشکل در عملکرد مواجه شوند.
پیکربندی Static NAT
Static NAT یک Map یکبهیک بین یک inside address و یک outside address ایجاد میکند. Static NAT امکان برقراری اتصالات ورودی از دستگاههای خارجی به دستگاههای داخلی شبکه را فراهم میکند. برای مثال، ممکن است بخواهید یک inside global address را به یک inside local address خاص که به وبسرور داخلی شما اختصاص داده شده است، نگاشت (map) کنید.
مراحل و دستورات پیکربندی Static NAT:
Step 1: پیکربندی ترجمه استاتیک inside local address به inside global address:
Router(config)# ip nat inside source static local-ip global-ip
Step 2: مشخص کردن رابط (interface) داخلی:
Router(config)# interface type number
Router(config-if)# ip nat inside
Step 3: مشخص کردن رابط (interface) خارجی:
Router(config)# interface type number
Router(config-if)# ip nat outside
عکس زیر یک توپولوژی نمونه از Static NAT را نشان میدهد.
این پیکربندی آدرس IPv4 خصوصی 192.168.10.254 را به آدرس IPv4 عمومی 209.165.200.254 Map میکند. این امر به میزبانهای خارجی اجازه میدهد به وبسرور داخلی دسترسی داشته باشند.
پیکربندی Dynamic NAT
Dynamic NAT آدرسهای IPv4 خصوصی را به آدرسهای عمومی از یک NAT Pool مپ میکند.
مراحل و دستورات پیکربندی Dynamic NAT به شرح زیر است:
Step 1: تعریف یک pool از آدرسهای عمومی برای تخصیص:
Router(config)# ip nat pool name start-ip end-ip {netmask | prefix-length prefix-length}
Step 2: تعریف یک Access List استاندارد برای تعیین آدرسهایی که باید ترجمه شوند:
Router(config)# access-list access-list-number source source-wildcard
Step 3: اتصال pool به Access List:
Router(config)# ip nat inside source list access-list-number pool name
Step 4: مشخص کردن رابط داخلی:
Router(config)# interface type number
Router(config-if)# ip nat inside
Step 5: مشخص کردن رابط خارجی:
Router(config)# interface type number
Router(config-if)# ip nat outside
عکس زیر یک توپولوژی نمونه از Dynamic NAT را نشان میدهد.
این پیکربندی، میزبانهای داخل شبکه را قادر میسازد که از آدرسهای NAT Pool برای برقراری اتصالات خروجی به اینترنت استفاده کنند.
پیکربندی NAT Overload
در شبکههای خانگی و کسبوکارهای کوچک تا متوسط، معمولاً ISP تنها یک آدرس IPv4 عمومی به روتر اختصاص میدهد. بنابراین، برای امکان استفاده همزمان چندین کلاینت داخلی از این آدرس، باید از NAT Overload استفاده شود.
پیکربندی NAT Overload
پیکربندی NAT Overload مشابه Dynamic NAT است، با این تفاوت که به جای استفاده از یک pool از آدرسها، از کلمهکلیدی interface برای شناسایی آدرس IPv4 خارجی استفاده میشود. علاوه بر این، کلمهکلیدی overload برای فعالسازی PAT (Port Address Translation) به کار میرود تا شماره پورتهای مبدأ در طول فرآیند ترجمه ردیابی شوند.
در مثال زیر نحوه پیکربندی R2 برای Overload کردن آدرس ثبتشده IPv4 روی serial interface را نشان میدهد.
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)# ip nat inside source list 1 interface serial 0/1/0 overload
R2(config)# interface serial 0/0/0
R2(config-if)# ip nat inside
R2(config)# interface serial 0/1/0
R2(config-if)# ip nat outside
Verifying NAT
فرض کنید که توپولوژیهای NAT ایستا و پویا، مطابق با سناریو های قبلی روی R2 پیکربندی شدهاند. در این سناریو:
- آدرس سرور داخلی بهصورت استاتیک روی 209.165.200.254 تنظیم شده است.
- یک NAT Pool با نام NAT-POOL1 و کلمهکلیدی overload پیکربندی شده است.
- دو کلاینت داخلی به یک هاست خارجی متصل شدهاند.
برای مشاهده ترجمههای فعال NAT در جدول R2 NAT میتوان از دستور زیر استفاده کرد:
R2# show ip nat translations
Pro Inside Global Inside Local Outside Local Outside Global
209.165.200.254 192.168.10.254 --- ---
209.165.200.226:47392 192.168.10.10:47392 209.165.201.30:80 209.165.201.30:80
209.165.200.226:50243 192.168.11.10:50243 209.165.201.30:80 209.165.201.30:80
- ورودی استاتیک همیشه در جدول باقی میماند.
- دو ورودی داینامیک نشان میدهد که دو کلاینت داخلی از همان آدرس IP عمومی استفاده میکنند، اما شماره پورت آنها متفاوت است (47392 برای PC1 و 50243 برای PC2).
بررسی آمار NAT با دستور show ip nat statistics
دستور show ip nat statistics
اطلاعات زیر را نمایش میدهد:
- تعداد کل ترجمههای فعال
- پارامترهای پیکربندی NAT
- تعداد آدرسهای موجود در pool
- تعداد آدرسهای تخصیصیافته
بررسی عملیات NAT با show ip nat statistics
نکات مهم:
- Total translations: در مجموع 3 ترجمه فعال وجود دارد (1 استاتیک، 2 داینامیک، و 2 extended).
- Outside Interfaces: رابط خارجی مشخص شده Serial0/1/0 است.
- Inside Interfaces: سه رابط داخلی شامل FastEthernet0/0, Serial0/0/0, Serial0/0/1 تعریف شدهاند.
- Expired translations: تعداد 5 ترجمه منقضی شده وجود دارد.
- Dynamic mappings: اطلاعات مربوط به دسترسی به NAT Pool و تعداد آدرسهای تخصیصیافته نشان داده شده است.
پاکسازی ترجمههای NAT
گاهی اوقات لازم است که ورودیهای NAT زودتر از مقدار پیشفرض حذف شوند، بهویژه هنگام تست پیکربندی NAT.
برای پاک کردن ترجمههای NAT قبل از اتمام زمان انقضا، میتوان از دستور زیر استفاده کرد:
R2# clear ip nat translation *
عیبیابی NAT (Troubleshooting NAT)
هنگامی که مشکلات اتصال IP در یک محیط NAT رخ میدهد، تعیین علت مشکل اغلب دشوار است. اولین مرحله در حل این مشکل، بررسی این است که آیا NAT عامل بروز مشکل است یا خیر. مراحل زیر را دنبال کنید تا اطمینان حاصل کنید که NAT بهدرستی کار میکند:
Step 1:
بر اساس پیکربندی انجامشده، مشخص کنید که NAT باید چه عملکردی داشته باشد. این بررسی ممکن است یک مشکل در پیکربندی را آشکار کند.
Step 2:
با استفاده از دستور زیر، بررسی کنید که آیا ترجمههای صحیح در جدول ترجمه NAT موجود هستند:
show ip nat translations
Step 3:
از دستورات clear
و debug
برای تأیید عملکرد صحیح NAT استفاده کنید. بررسی کنید که آیا ورودیهای داینامیک پس از پاک شدن، دوباره ایجاد میشوند یا خیر.
Step 4:
جزئیات مربوط به پردازش بستهها را بررسی کنید و اطمینان حاصل کنید که روترها اطلاعات مسیریابی درستی برای ارسال بستهها دارند.
استفاده از debug ip nat
برای بررسی عملکرد NAT
با استفاده از دستور زیر، عملکرد NAT را بررسی کنید و اطلاعات مربوط به هر بستهای که روتر ترجمه میکند را نمایش دهید:
debug ip nat
در این مثال، میزبان داخلی 192.168.10.10 یک ترافیک خروجی را به میزبان خارجی 209.165.201.30 ارسال کرده است و آدرس آن به 209.165.200.226 ترجمه شده است.
نحوه تحلیل خروجی debug ip nat
در هنگام بررسی خروجی دستور debug
، به نمادها و مقادیر زیر توجه کنید:
*
(ستاره)- نشان میدهد که ترجمه NAT در مسیر fast-switched در حال انجام است.
- اولین بسته در هر مکالمه جدید از مسیر process-switched عبور میکند (کندتر است)، اما بستههای بعدی از مسیر fast-switched عبور میکنند.
s=
- این مقدار نشاندهنده آدرس مبدأ (Source IPv4 Address) است.
d=
- این مقدار نشاندهنده آدرس مقصد (Destination IPv4 Address) است.
a.b.c.d -> w.x.y.z
- نشان میدهد که آدرس مبدأ
a.b.c.d
بهw.x.y.z
ترجمه شده است.
- نشان میدهد که آدرس مبدأ
-
[xxxx]
- مقدار داخل براکتها (
[ ]
) شماره شناسایی بسته IP (IP Identification Number) است. - این مقدار برای عیبیابی مفید است، زیرا امکان همبستگی بستهها با دادههای دیگر از آنالیزورهای پروتکل را فراهم میکند.
- مقدار داخل براکتها (