Persian Data Network

Home Cisco تنظيم NAT درروتر سيسكو

NAT در سيسكو

NAT يكي از ابزارهاي قدرتمند دنياي IT است كه دقيقا همان كاري را انجام مي دهد كه از اسم آن بر مي آيد,به وسيله NAT مي توانيم آدرس هاي يك شبكه را به يك شبكه ديگر ترجمه كنيم.NAT تقريبا در تمامي سيستم عامل ها و روتر ها قابل انجام است كه هر كدام شيوه و روش خود را دارند.براي همه متخصصين واضح است كه قوي ترين روتر هاي دنيا Cisco هستند و تقريبا 80 درصد از بستر اينترنت بر روي دستگاه هاي Cisco بنا شده اند. در اين آموزش به توضيح مراحل انجام NAT به صورت عملي بر روي سخت افزارهاي سيسكو مي پردازيم.

از كاربردهاي NAT مي توان به موارد زير اشاره كرد:







* ترجمه IP هاي Private به Public يا برعكس
* تغيير مركز سرويس دهنده اينترنت بدون نياز به تغيير IP ها داخلي
* حفاظت از يك شبكه حساس در مقابل برخي حملات خارجي
* تغيير پورت مقصد پكتها براي كاربران داخلي به صورت transparent








تعريف برخي اصطلاحات:

* Inside Local : به آدرس (هايي) اتلاق ميشود كه بر روي كلاينتهاي شبكه داخلي تنظيم شده اند.
* Inside Global : به آدرسي اتلاق ميشود كه به اينترفيس داخلي روتر كه به شبكه داخلي متصل است داده شده است.
* Outside Local : به آدرس هايي كه درون اينترنت يا شبكه Public ما قرار دارد گفته مي شود.
* Outside Global : به آدرس (هايي) كه بر روي اينترفيس خارجي روتر كه به شبكه Public متصل است گفته مي شود.


با يك مثال تصويري با اصطلاحات فوق بيشتر آشنا خواهيم شد.
staticnat.png


Static NAT

اين نوع NAT به صورت يك به يك عمل مي كند. بدين معني كه يك عدد inside-localرا به يك outside-global ترجمه مي كند. كاربرد اين نوع NAT وقتي است كه ميخواهيم يك private ip را به يك public ip تبديل كنيم.با مثالي عملي آن را بيشتر توضيح مي دهيم.



nat
در مثال فوق يك روتر سيسكو داريم كه 2 عدد اينترفيس دارد. يكي سريال كه به اينترنت متصل و دومي اترنت كه به شبكه داخلي ما وصل شده است.
ما ميخواهيم آدرس 10.1.1.1را به 11.11.11.254ترجمه كنيم.
بر روي روتر سيسكو چنين عمل مي كنيم:

وارد محيط config مي شويم

config terminal

با اين دستور يك NAT استاتيك مي سازيم

ip nat inside source static 10.1.1.1 11.11.11.254

وارد اينترفيس سريال مي شويم

interface serial0

اين اينترفيس را به عنوان خروجي NAT مشخص مي كنيم

ip nat outside

از اينترفيس خارج مي شويم

exit

وارد اينترفيس اترنت مي شويم

interface Ethernet0

اينترفيس را به عنوان ورودي NAT مشخص مي كنيم

ip nat inside

از اينترفيس و مد Config خارج مي شويم



هم اكنون با تنظيم كردن آدرس 10.1.1.1و گيت وي 10.10.10.10روي كلاينت مي توانيم به اينترنت دسترسي داشته باشيم.



Dynamic NAT

Dynamic NAT نيز همانند Static NAT است اما با اين تفاوت كه در NAT به صورت Dynamic مي توانيم يك يا چندين IP با به چندين IP ترجمه كنيم.

اما چرا چندين IP به چندين IP؟

فرض كنيد شما Admin يك ISP هستيد و به دليل كمبود IP نياز به NAT داريد. بر فرض مثال شما داراي 10 Valid IP و 100 Invalid IP كه بايد به آنها ترجمه كنيد. ممكن است تا كنون براي شما پيش آمده باشد كه كاربري تماس گرفته و اعلام نا رضايتي كند از اينكه مدتهاي طولاني براي دانلود يك فايل از سايت Rapidshare.com بايد انتظار بكشد. اين به دليل اين است كه سايت Rapidshare.com تمامي كاربرهاي شما را به چشم يك كاربر مي بيند. براي رفع اين مشكل مي توانيم 10 آدرس معتبر را به 100 آدرس غير معتبر ترجمه كنيم كه تا حدود زيادي مشكل را حل خواهد كرد.
در Dynamic NAT معمولا آدرس هاي معتبر را به وسيله IP nat pool مشخص و آدرس هاي غير معتبر را توسط يك access-list مشخص مي كنيم. دليل استفاده از access-list ايجاد امنيت بيشتر است.

حال با يك مثال به نحوه ايجاد يك Dynamic NAT واقف مي شويم:

يك روتر سيسكو داريم كه از يك سو توسط اينترفيس سريال به اينترنت متصل گرديده كه داراي رنج IP 217.219.109.128/25 و از سوي ديگر توسط اينترفيس اترنت به شبكه داخلي با رنج 172.16.0.0/24 متصل شده است.

آدرس اينترفيس سريال را 217.219.109.129 و آدرس اينترفيس اترنت را 172.16.0.1 قرار ميدهيم.


config terminal

ابتدا براي آدرسهاي Valid خود يك Pool تهيه مي كنيم

ip nat pool pool1 217.219.109.130 217.219.109.254 prefix-length 25

Prefix-length در مثال بالا همان subnet mask آدرس هاي ما مي باشد
حال access-list مربوط به آدرس هاي داخلي را مي نويسيم

access-list 8 permit 172.16.0.0 0.0.0.255

دستور اصلي NAT را مي نويسيم

ip nat inside source list 8 pool pool1

كه در دستور فوق عدد 8 بيانگر آدرسهاي داخلي و pool1 مشخص كننده آدرس هاي خارجي است

interface serial0

اينترفيس را به عنوان خروجي NAT مشخص مي كنيم

ip nat outside

از اينترفيس خارج مي شويم

exit

وارد اينترفيس اترنت مي شويم

interface ethernet0

اينترفيس را به عنوان ورودي NAT معرفي مي كنيم

ip nat inside





Dynamic NAT به صورت Overload


ممكن است ما به شرايطي بر بخوريم كه تنها 1 عدد آدرس Valid در اختيار داريم و اجبار به NAT كردن آدرس مذكور به چندين آدرس را داريم. در چنين شرايطي بايد از قابليت Overload استفاده كنيم.
در اين حالت روتر براي ورود و خروج هر آدرس Invalid يك پورت مجزا در نظر مي گيرد كه تمامي آنها را در جدولي كه درون خود تشكيل مي دهد به ثبت مي رساند. به اين ترتيب هر بسته كه از روتر به مقصد اينترنت خارج مي شود دقيقا در هنگام بازگشت به همان آدرس Invalid كه صادر كننده آن است باز مي گردد. هر يك خط در جدول مذكور يك كانكشن به حساب مي آيد. اگر دقت كنيد بر روي كاتالوگ بعضي سخت افزارها محدوديتي براي تعداد اين كانكشن ها قائل مي شوند.

در مثال زير نحوه تنظيم يك روتر به صورت Overload را توضيح مي دهيم :

دياگرام خود را مقداري تغيير مي دهيم. در اين مثال ما روتر خود را كه داراي 3 اينترفيس است به 3 شبكه متصل مي كنيم. پورت سريال كه به اينترنت متصل و داراي آدرس 80.191.120.8/26 است . اينترفيس ethernet0 به شبكه داخلي اول ما متصل و داراي آدرس 172.16.100.1/24 ميباشد و در آخر اينترفيس ethernet1 را داريم كه داراي آدرس 192.168.30.1/24 است.
مي خواهيم آدرس 80.191.120.8 را به دو subnet داخلي NAT كنيم:

وارد مد كانفيگ مي شويم

config terminal

يك pool براي آدرس Valid تهيه مي كنيم كه تنها 1 آدرس در آن وجود دارد

ip nat pool ovrld 80.191.120.8 80.191.120.8 netmask 255.255.255.192

با access-list زير آدرس هاي دو رنج داخلي خود را به access-list شماره 3 نسبت مي دهيم

access-list 3 permit 172.16.100.0 0.0.0.255
access-list 3 permit 192.168.30.0 0.0.0.255

دستور اصلي NAT را مي نويسيم كه كلمه Overload مي بايست در آخر آن اضافه شود

ip nat inside source list 3 pool ovrld overload

اينترفيس خروجي NAT را مشخص مي كنيم

interface serial0
ip nat outside
exit

اين اينترفيس را به عنوان ورودي NAT مشخص مي كنيم

interface ethernet0
ip nat inside
exit

اين اينترفيس را به عنوان ورودي NAT مشخص مي كنيم

interface ethernet1
ip nat inside
exit


هم اكنون آدرس 80.191.120.8 عمل NAT را براي هر دو سابنت ما انجام مي دهد.



Destination NAT



dstNAT يا outside source address translation بدين معني است كه ما عمل NAT را براي شبكه Public خود انجام دهيم. با يك مثال قضيه را روشن ميكنم:
فرض كنيد آدرس IP يكي از مشتركين شما  NAT شده است. يعني مشترك به صورت دستي آدرس را در كامپيوتر خود وارد كرده و default gateway را آدرس اينترفيس داخلي روتر شما قرار داره است. شما قبلا عمل NAT را براي وي انجام داده ايد و او را به اينترنت متصل نموده ايد. حال مشترك نياز دارد كه كاربري در اينترنت به كامپيوترش وصل شود يا اينكه قصد هاست كردن يك وبسايت بر روي كامپيوتر حود را دارد. با شرايط فعلي اين امر امكان پذير نيست زيرا كه آدرس معتبري ير روي آن تنظيم نشده و از اينترنت قابل رويت نيست.ما براي رفع مشكل اين يوزر مي بايست عمل dstNAT را انجام دهيم. يعني به روتر خود بگوئيم هر گاه پكتي با درخواست اتصال به آدرس X را داشت آن را به كامپيوتري در شبكه داخلي با آدرس Y بفرست. بدين ترتيب با داشتن آن آدرس valid ميتوانيم به هاست لوكال خود دسترسي پيدا كنيم. اين امر نيز به دو صورت static و dynamic قابل اجراست كه در مثالهاي زير توضيح داده شده است.




Static dstNAT

ابتدا همانند قبل يك static nat ميان 2 آدرس 10.1.1.1 و 11.11.11.254 ايجاد مي كنيم سپس اين خط را به تنظيمات خود اضافه ميكنيم

ip nat outside source static 11.11.11.254 10.1.1.1




Dynamic dstNAT


در اين مثال نيز ابتدا تمامي تنظيمات Dynamic NAT را كه قبلا گفته شده انجام مي دهيم سپس اين خط را به آخر آن اضافه مي كنيم

ip nat outside source list 8 pool pool1


بدين ترتيب عمل reverse را نيز براي NAT خود انجام مي دهيم.




Redirect in NAT


در بعضي مواقع نياز داريم كه يك پورت يا IP را به صورت transparent براي يوزرهاي خود عوض كنيم. به عنوان مثال ما در شبكه خود يك وب سرور داريم. اين سرور قبلا بر روي پورت 80 كار كرده است اما اكنون به دلايلي مجبور به تعويض پورت آن به 8080 شده ايم. ممكن است آگاه سازي يوزرهاي ما برايمان مشكل ساز باشد و بخواهيم بدون هيچ تغييري براي آنها اين پورت را عوض كنيم. در چنين مواقعي Redirect به كمك ما مي شتابد.
در مثال زير با چگونگي تنظيمات اين نوع NAT آشنا مي شويم:

در اين مثال ما يك روتر سيسكو داريم كه 2 اينترفيس سريال و اترنت دارد. كه آدرس سريال را 100.100.100.5 و آدرس اترنت را 10.20.30.1 قرار داده ايم.
آدرس وب سرور ما 10.20.30.55 مي باشد كه در شبكه داخلي ما قرار دارد.
براي Redirect كردن پورت 80 به 8080 بدين صورت عمل ميكنيم:

config terminal
ip nat inside source static tcp 10.20.30.55 8080 10.20.30.55 80

اينترفيس خروجي NAT را مشخص مي كنيم

interface serial0
ip nat outside
exit

اين اينترفيس را به عنوان ورودي NAT مشخص مي كنيم

interface ethernet0
ip nat inside
exit


حال يك سولوشن ديگر پياده مي كنيم.

در شبكه ما يك روتر وجود دارد كه داراي 3 اينترفيس است. اينترفيس سريال كه آدرس 200.200.200.43 و اينترفيس ethernet0 كه آدرس 172.16.10.1 و اينترفيس ethernet1 كه آدرس 192.168.0.1 را داراست.
ما در شبكه اي كه به اينترفيس ethernet1 متصل شده يك سرور داريم كه آدرس آن 192.168.0.6 است. به دلايلي مجبور به تعويض آدرس آن به 192.168.0.12 شده ايم. به دليل اينكه اين سرور مربوط به اتوماسيون اداري ما بوده بسيار كار دشواريست كه بر روي 176 كلاينت خود كه با اين سرور كار ميكنند و در شبكه اي كه به اينترفيس ethernet0 وصل است آدرس سرور را عوض كنيم.
براي همين به سراغ روتر قدرتمند خود مي آئيم و تمامي درخواستهايي را كه به مقصد 192.168.0.6 مي روند را به 192.168.0.12 هدايت ميكنيم.
در زير نحوه انجام اين كار توضيح داده شده است.

config terminal
ip nat inside source static 192.168.0.12 192.168.0.6

اينترفيس خروجي NAT را مشخص مي كنيم

interface serial0
ip nat outside
exit

اين اينترفيس را به عنوان ورودي NAT مشخص مي كنيم

interface ethernet0
ip nat inside
exit

اين اينترفيس را به عنوان ورودي NAT مشخص مي كنيم

interface ethernet1
ip nat inside
exit



Change Translation Timeouts


وقتي كه ما از Dynamic NAT استفاده مي كنيم يك IP به يك IP ديگر نسبت داده مي شود. فرضا اگر كلاينت ما 1 ساعت از اين IP استفاده كند تا يك مدت بعد اين IP خارجي براي وي به صورت رزرو مي ماند. اگر بعد از يك پريود زماني كلاينت ما از آن استفاده نكند به كلاينت ديگري اختصاص داده مي شود.
زمان اين تاخير را ميتوانيم مشخص كنيم كه در حالت Dynamic NAT بدون Overload اين زمان به صورت پيش فرض 24 ساعت است.

با دستور زير اين امر محقق مي شود:

config terminal
ip nat translation timeout 21600

عدد فوق بر اساس ثانيه بوده كه در مثال بالا ما اين زمان تاخير را بر روي 6 ساعت تنظيم كرده ايم.

همانطور كه گفتيم مثال بالا براي حالت Dynamic NAT بدون Overload هست. در حالت Overload چون براي هر يوزر يه آدرس خارجي نداريم مقدار اين زمان اصلا مشخص نيست.
در حالت Overload تنها ميتوانيم زمان براي پروتكلهاي خاص مشخص كنيم:

در مثال زير پروتكلها آورده شده اند:

config terminal
ip nat translation udp-timeout 120
ip nat translation dns-timeout 100
ip nat translation tcp-timeout 480
exit

مانيتور كردن NAT درون Router

show ip nat translations
show ip nat statistics




























*با تشكر از وب سايت cisco.parsfa.com بابت اين مقاله خوب و كامل