قابلیت NAT Extendable در IOSهای شرکت سیسکو این قابلیت را به ما میدهد تا بتوانیم یک آی پی آدرس پرایوت یا داخلی را به بیش از یک آی پی پابلیک ترجمه کنیم.بگذارید راه اندازی قابلیت NAT Extendable را در قالب یک سناریو یاد بگیریم.به توپولوژی زیر نگاه کنید:
در این توپولوژی روتر S1 را بعنوان یک سرور در نظر گرفته ایم که روی آن یک وب سرور قرار دارد و میخواهیم که در اینترنت قابل دسترس باشد. برای این کار روتر R1 را که به دو ISP متصل شده را برای NAT پیکربندی میکنیم.
بیشتر بخوانید: آموزش تصویری آشنایی و پیکربندی انواع NAT
در این مثال فرض کنیم که آی پی 192.168.12.100 یک آی پی پابلیک مربوط به ISP1 است و آی پی 192.168.13.100 هم یک آی پی پابلیک مربوط به ISP2 میباشد و قرار است آی پی 192.168.1.1 را از اینترنت ببینیم.
پیکربندی یا Configuration:
ابتدا روتر S1 را کانفیگ میکنیم. به دلیل اینکه هیچ راه دیگری برای S1 بجز اتصال به R1 وجود ندارد، روتینگ را غیرفعال و فقط یک default-gateway برای دسترسی به روتر R1 برایش تنظیم میکنیم:
S1(config)#
no ip routing
S1(config)#
ip default-gateway 192.168.1.254
حالا NATهای Inside و Outside را برای اینترفیسهای R1 تعریف میکنیم.
R1(config)#
interface GigabitEthernet 0/1
R1(config-if)#
ip nat inside
R1(config)#
interface GigabitEthernet 0/2
R1(config-if)#
ip nat outside
R1(config)#
interface GigabitEthernet 0/3
R1(config-if)#
ip nat outside
حالا فکر کنید که میخواهیم آی پی سرور را از اینترنت مربوط به ISP1 که آی پی پابلیک 192.168.12.100 دارد ببینیم. این کار را به راحتی با دستور زیر میتوانیم انجام دهیم:
R1(config)#
ip nat inside source static 192.168.1.1 192.168.12.100
با این دستور یک NAT یک به یک 1:1 بین آی پی 192.168.1.1 و 192.168.12.100 ایجاد کردیم که تا به اینجا مسیر درستی بوده. اما اگر بخواهیم همین کار را با آی پی پابلیک 192.168.13.100 انجام بدهیم چطور؟ روتر این اجازه را به ما میدهد؟
بگذارید تست کنیم:
R1(config)#
ip nat inside source static 192.168.1.1 192.168.13.100
% 192.168.1.1 already mapped (192.168.1.1 -> 192.168.12.100)
با توجه به اینکه قبلا آی پی 192.168.1.1. به آی پی 192.168.12.100 ترجمه شده بود، روتر امکان ترجمه مجدد این آی پی پرایوت را به آی پی پابلیک دیگری به ما نمیدهد.
اما یک راه دیگر برای اینکه بتوانیم دو آی پی پابلیک را به یک آی پی پرایوت در یک روتر ترجمه کنیم وجود دارد.
ابتدا برویم و دستور NAT قبلی را برداریم:
R1(config)#
no ip nat inside source static 192.168.1.1 192.168.12.100
الان مجددا دستور قبلی را تکرار میکنیم با این فرق که از کلمه extendable در انتهای دستور استفاده میکنیم تا روتر متوجه بشود که نیازمند این هستیم تا دو NAT برای یک آی پی در نظر بگیریم:
R1(config)#
ip nat inside source static 192.168.1.1 192.168.12.100 extendable
R1(config)#
ip nat inside source static 192.168.1.1 192.168.13.100 extendable
دیدید؟ سیسکو دیگر ایرادی به دستور ما نگرفت.
بیشتر بخوانید: جامع ترین دوره آموزشی CCNP Enterprise به زبان فارسی
بررسی یا Verification:
ببینیم که آیا این تنظیمات به درستی کار میکنند یا خیر؟
R1#
show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 192.168.12.100 192.168.1.1 --- ---
--- 192.168.13.100 192.168.1.1 --- ---
میبینیم که آی پی 192.168.1.1 به هر دو آی پی 192.168.12.100 و 192.168.13.100 ترجمه شده. بریم ببینیم آیا روترهای ISP1 و ISP2 میتوانند به سرور ما دسترسی داشته باشند یا خیر.
ابتدا Debugging را روی روتر فعال میکنیم تا تمام اتفاقاتی که روی روتر R1 میافتد را بتوانیم مانیتور کنیم:
R1#
debug ip nat
IP NAT debugging is on
یک پینگ از ISP1 به آی پی 192.168.12.100 میگذاریم: (توجه کنید که آی پی 192.168.12.100 روی هیچ اینترفیسی ست نشده است)
ISP1#
ping 192.168.12.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/3/4 ms
ارتباط ما برقرار است. اگر به روتر R1 بر گردیم میبینیم که NAT به درستی در حال کار کردن است:
R1#
NAT*: s=192.168.12.2, d=192.168.12.100->192.168.1.1 [33]
NAT*: s=192.168.1.1->192.168.12.100, d=192.168.12.2 [33]
آی پی 192.168.1.1 به درستی به آی پی 192.168.12.100 ترجمه شده. حالا برویم و از ISP2 همین تست را تکرار کنیم:
ISP2#
ping 192.168.13.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms
و در روتر R1 میبینیم که الان این ترجمه از IP جدید در حال انجام است:
R1#
NAT*: s=192.168.13.3, d=192.168.13.100->192.168.1.1 [20]
NAT*: s=192.168.1.1->192.168.13.100, d=192.168.13.3 [20]
تا اینجای کار به درستی پیش رفته است و آی پی 192.168.1.1 از هر دو آی پی 192.168.12.100 و 192.168.13.100 قابل دسترس است.
اما اگر از روتر S1 ترافیکی ایجاد شود از کدام NAT استفاده میکند؟
S1#
ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/4/6 ms
ارتباط بین S1 و ISP1 که به درستی برقرار است. اما با چه NAT ای؟
R1#
show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 192.168.12.100:5 192.168.1.1:5 192.168.12.2:5 192.168.12.2:5
--- 192.168.12.100 192.168.1.1 --- ---
--- 192.168.13.100 192.168.1.1 --- ---
خب در جدول NAT روتر R1 میبینیم که آدرس 192.168.1.1 به 192.168.12.100 ترجمه شده. اما در مورد پینگ به آی پی 192.168.13.3 چطور؟ مجدد به روتر S1 بر میگردیم:
S1#
ping 192.168.13.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
پینگ این آی پی کار نکرد. چرا؟ جدول NAT روتر R1 را نگاه میکنیم:
R1#
show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 192.168.12.100:5 192.168.1.1:5 192.168.12.2:5 192.168.12.2:5
icmp 192.168.12.100:6 192.168.1.1:6 192.168.13.3:6 192.168.13.3:6
--- 192.168.12.100 192.168.1.1 --- ---
--- 192.168.13.100 192.168.1.1 --- ---
در جدول بالا میبینیم که این ترافیک هم به آی پی 192.168.12.100 ترجمه شد. اما چرا؟ آیا به خاطر این است که ابتدا به ISP1 پینگ ارسال کردیم؟ بگذارید جدول NAT را خالی کنیم و مجددا تست کنیم:
R1#
clear ip nat translation *
و مجددا این بار به روتر ISP2 پینگ ارسال میکنیم:
S1#
ping 192.168.13.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
پینگ این بار هم به مقصد نرسید. اما چرا؟ به نظرتون به خاطر ترتیب NATها در تنظیمات است؟
R1#
show running-config | include nat inside source
ip nat inside source static 192.168.1.1 192.168.12.100 extendable
ip nat inside source static 192.168.1.1 192.168.13.100 extendable
در خروجی بالا میبینیم که Inside NAT مربوط به آی پی 192.168.12.100 در ابتدای دستورات قرار گرفته و سیسکو هم همیشه از این دستور برای NATهایی که ترافیک مبدا آن از آی پی 192.168.1.1 است استفاده میکند.
پس باید این مورد که دستور اول NAT در تنظیمات بعنوان آدرس اصلی برای آدرسهایی که از داخل شبکه به بیرون ترافیک ارسال میکنند استفاده میشود را در راه اندازی Extendable NAT مورد توجه قرار بدهید.
Adversary Emulation در امنیت سایبری چیست؟ شبیه سازی دشمنبیشتر بخوانید: اولین و کاملترین دوره آموزش پیشرفته BGP به زبان فارسی