بخشی از مقاله
معماري كامپيوتر
مترجم آدرسهاي شبكهِ ios ِ سيسكو
مترجم آدرس شبكه در ساده ترين حالتش بر روي مسير يابي كه دو شبكه را به هم متصل ميكند عمل ميكند؛ يكي از اين شبكه ها (تعين شده بعنوان داخلي ) بصورت خصوصي يا غير متداول آدرس دهي ميشود كه بايد اين آدرس به يك آدرس قانوني و متداول تبديل شودقبل از اينكه بسته هاي اطلاعاتي به سمت شبكه ديگر(تعيين شده بعنوان شبكه بيروني ) فرستاده شود . ترجمه مرتبط با مسير يابي عمل ميكند ، بطوريكه اگر ترجمه مطلوب باشد مترجم آدرس شبكه براحتي ميتواند بر روي مسير ياب يك سرويس گيرنده اينترنت فعال شود .
استفاده از وسايل ترجمه در RFC 1631 ( request for comment ) ( درخواست براي توضيح ) آمده است - شيوه ترجمه آدرس در مسير ياب . هدف مترجم آدرس شبكه ايجاد يك عامليت براي شبكه خصوصي است كه عموماً آدرسهاي منحصر بفردي دارد و مترجم آدرس شبكه نيز در آن موجود نيست .RFC 1631 يك زير مجموعه از اصول مترجم آدرس شبكه هاي IOS سيسكو را ارائه ميكند .
مترجم IOS سيسكو ترجمه دوسويه را از طريق استفاده همزمان از منابع داخلي و خارجي ترجمه پشتيباني ميكند .
Terminology : واژگان فني
شكل 1 –
مفاهيم مترجم آدرس شبكه :
Inside ( دا خلي ) :
مجموعه اي از مطالب شبكه براي ترجمه .
Outside ( خارجي ) :
تمام آدرسهاي ديگر .معمولاً اينها آدرسهاي معتبر در اينترنت هستند .
شكل 2 –
( واژه هاي فني مترجم آدرسهاي شبكه )
( NAT terminology ) « آدرس دهي داخلي » :
محلي داخلي (inside local ) :
آدرس IP پيكر بندي شده نسبت داده شده به يك ميزبان در داخل شبكه .آدرس ممكن است بصورت سراسري منحصربفرد باشد ، كه خارج از محدوده آدرس تعريف شده در RFC 1918 اختصاص يافته ، يا بايد رسماً به يك سازمان ديگر اختصاص داده شود .
سراسري داخلي ( Inside global ) :
آدرس IP يك ميزبان داخلي همانگونه كه در يك شبكه خارجي ظاهر ميشود، “ آدرس ترجمه شده “ . آدرسها مي توانند از يك محدوده آدرس سراسري منحصر بفرد اختصاص داده شوند ، كه بطور نمونه بوسيله ISP فراهم ميشود ( اگر سازمان به اينترنت سراسري وصل شده باشد ) .
شكل 3 –
( واژه هاي فني مترجم آدرسهاي شبكه )
( NAT terminology ) « آدرس دهي خارجي » :
● محلي خارجي : آدرس IP ميزبان خارجي همانطور كه در داخل شبكه ظاهر ميشود . اين آدرسها اگر مطلوب باشند ميتوانند از محدوده تعريف شده در RFC 1918 اختصاص داده شوند .
● سراسري خارجي : آدرس IP پيكربندي شده نسبت داده شده به يك شبكه در شبكه خارجي
مدخل ترجمه ساده :
مدخل ترجمهاي كه يك آدرس IP را به ديگري نگاشت ميكند .
مدخل ترجمه گسترده :
مدخل ترجمهاي كه يك جفت آدرس IP و پورت را به ديگري نگاشت ميكند .
ويژگيهاي اصلي :
• مترحم آدرسهاي ثابت ( ايستا ) – Telnet 207.33.94.1
يك كاربر ميتواند يك نگاشت يك به يك بين آدرسهاي محلي
وسراسري برقرار كند .
كاربران همچنين ميتوانند ترجمه هاي آدرس استاتيك را به
سطوح پورت پيكربندي كنند . و ساير آدرسهاي IP را براي
ترجمههاي ديگر استفاده كنند .
• مترحم آدرسهاي پويا( محرك )
كاربر ميتواند نگاشت پويا بين آدرسهاي محلي و سراسري برقرار كند .
اين كار بوسيله توصيف آدرسهاي محلي كه ترجمه شده اند ومجموعه آدرسهاي
اختصاص داده شده محلي و سراسري انجام ميگيرد .
• ميزبان همتا ( نظير) :
توانايي پيكربندي مترجم آدرس شبكه براي اينكه قسمت ميزبان همسان ازآدرس
IP را انتساب دهد و فقط قسمت پيشوند شبكه از آدرس IP را ترجمه كند .اين
زماني مفيد است كه شما از قسمت ميزبان بعنوان مفهومي براي تشخيص دادن
استفاده مي كنيد و يا اينكه از تعدادي كاربر منحصربفرد استفاده ميكنيد
• مترحم آدرس پورت ( PAT ) :
شكل 4 –
مفاهيم اسا سي ترجمه آدرس پورت :
شكل 5 –
پورت منبع منحصربفرد به ازاي هر مدخل ترجمه :
چندين آدرس شبكه ميتواند به يك يا تعداد كمي آدرس خارجي تبديل شود كه اين كار با استفاده از يك ويژگي بنام ترجمه آدرس پورت ( PAT ) انجام ميگيرد ، كه ارجاع به سربار شده است و يك زير مجموعه از عامليت مترجم آدرس شبكه است .
مترجم آدرس پورت در آدرسهاي IP سراسري داخلي از شماره پورت منبع منحصر بفردي استفاده ميكند ، براي اينكه بين ترجمه ها تمايز قائل شود . چون هر شماره پورت بصورت 16 بيتي رمز گذاري ميشود ، كل شماره ميتواند از لحاظ فرض علمي به اندازه 65535 براي هر آدرس Ip باشد .مترجم آدرس پورت سعي مي كند پورتهاي منبع اصلي باقي نگه دارد ،
اگر اين پورتهاي منبع اختصاص داده شده باشند مترجم آدرس پورت سعي ميكند اولين شماره پورت در دسترسي را كه از گروههاي پورت مناسبِ 0-5111, 512-1023 or 1024-65535 شروع ميشود پيدا كند . اگر هنوز هيچ پورتي از گروههاي مناسب در دسترس نباشد و بيش از يك آدرس IP پيكربندي شده باشد ، مترجم آدرس پورت به آدرس IP بعدي حركت ميكند وسعي ميكند پورت منبع اصلي را دوباره اختصاص دهد . اين روند تا زماني ادامه پيدا ميكند كه آدرس IP و پورت در دسترسي تمام شود .
● ترجمه دوار آدرس مقصد :
يك شكل پوياي ترجمه مقصد مي تواند براي بعضي از رفت و آمد هاي خارج به داخي پيكربندي شود . هر بار كه يك نگاشت انجام ميگيرد ، يك تطبيق آدرس مقصد يكي از آنها به يكي در ليست دسترسي ، كه با يك آدرس از منبع دوار جايگزين خواهد شد . تخصيص انجام شده بر اساس نوبتي گردشي ، فقط زماني شكل ميگيرد كه يك ارتباط جديد از خارج به داخل باز شود . تمام عبور و مرور هاي كه بر اساس قوانين TCP نباشند بدون ترجمه عبور داده ميشوند .(مگر اينكه ترجمه هاي ديگر انجام گيرد ).
اين ويژگي طراحي شده است تا ترجمه پروتكل را قادر سازد عمل توزيع را بارگذاري كند . اين ويژگي نه طراحي شده و نه بعنوان يك جانشين تكنولوژي براي محصول مدير محلي سيسكو مطرح است . ترجمه چرخشي آدرس مقصد نبايد استفاده شود تا فراهم كند سرويس وب متوازن بارگذاري شود ، زيرا مانند DNS وانيلا چيزي در باره قابليت سرويس نميداند ، در نتيجه اگر يك سرويس وب خارج از خط باشد ، اين ويژگي ادامه پيدا خواهد كرد تا درخواستها را به سرويس دهنده اي كه كار نمي كند بفرستد .
دستورات پيكربندي
دستورات پيكربندي واسط
ip nat { inside | outside }
واسطها بايد مشخص شوند كه در داخل قرار دارند يا در خارج . فقط بسته هاي رسيده از واسط علامت گذاري شده موضوع ترجمه خواهد بود .
دستورات پيكربندي سراسري
تعريف يك منبع
ip nat pool <name> <start-ip> <end-ip> { netmask <netmask>
| prefix-length <prefix-length> } [ type { rotary } ]
يك منبع آدرس با استفاده از آدرس شروع و خاتمه وnetmas تعريف ميكند . اين آدرسها هر وقت لازم باشند اختصاص مييابند .
فعالسازي ترجمه آدرسهاي منبع داخلي
ip nat outside source { list <acl> pool <name> | static <global-ip> <local-ip> }
شكل اول (list..pool.. ) ترجمه پويا را فعال ميكند . بسته ها از آدرسهايي كه آنها را با ليست اوليه منطبق ميكند ، با استفاده از آدرسهاي اختصاص داده شده از منبع نامبرده ترجمه شده اند .
پيكربندي مدت زمان ترجمه
ip nat translation timeout <seconds>
ترجمه هاي پويا بعد از يك مدت كه استفاده نشوند تمام ميشوند . وقتي كه ترجمه پورت پيكربندي نشده ، مدخل ترجمه بعد از 24 ساعت تمام ميشود . اين زمان ميتواند با دستور بالا تنظيم شود و يا با تغييراتي با استفاده از دستورات زير :
ip nat translation udp-timeout <seconds>
ip nat translation dns-timeout <seconds>
ip nat translation tcp-timeout <seconds>
ip nat translation finrst-timeout <seconds>
دستورات اجرايي :
نشان دادن ترجمه هاي فعال :
show ip nat translations [ verbose ]
نشان دادن ترجمه هاي استاتيك ( ثابت ) :
show ip nat statistics
پاك كردن ترجمه هاي پويا :
clear ip nat translation *
تمام ترجمه هاي پويا را پاك ميكند .
clear ip nat translation <global-ip>
پاك كردن يك ترجمه اوليه .
clear ip nat translation <global-ip> <local-ip> <proto> <global-port> <local-port>
پاك كردن يك ترجمه پوياي مشخص .
اشكال زدايي :
debug ip nat [ <list> ] [ detailed ]
مثالهاي پيكربندي :
پيكربندي نمونه زيربين ميزبانهاي داخلي آدرس دهي شده از شبكه هاي 192.168.1.0 يا 192.168.2.0 به شبكه سراسري منحصر بفرد 171.69.233.208/28 ترجمه ميكند :
ip nat pool net-20 171.69.233.208 171.69.233.223 netmask <netmask> 255.255.255.240
ip nat inside source list 1 pool net-20
!
interface Ethernet0
ip address 171.69.232.182 255.255.255.240
ip nat outside
!
interface Ethernet1
ip address 192.168.1.94 255.255.255.0
ip nat inside
!
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.2.0 0.0.0.255
مثال پيكربندي بعدي بين ميزبانهاي آدرسدهي شده داخلي از شبكه 9.114.11.0 به شبكه منخصر بفرد سراسري 171.69.233.208/28 را ترجمه ميكند . بسته هايي از ميزبانهاي آدرسدهي شده از شبكه 9.114.11.0 ( شبكه واقعي 9.114.11.0 ) ترجمه شده اند تا بنظر برسند از شبكه 10.0.1.0/24 بوده اند .
ip nat pool net-20 171.69.233.208 171.69.233.223 netmask <netmask> 255.255.255.240
ip nat pool net-10 10.0.1.0 10.0.1.255 netmask <netmask> 255.255.255.0
ip nat inside source list 1 pool net-20
ip nat outside source list 1 pool net-10
!
interface Ethernet0
ip address 171.69.232.182 255.255.255.240
ip nat outside
!
interface Ethernet1
ip address 9.114.11.39 255.255.255.0
ip nat inside
!
access-list 1 permit 9.114.11.0 0.0.0.255
ويژگيهاي پيشرفته :
پيكر بندي منبع انعطاف پذير تر :
ساختار پيكربندي منبع توسعه يافته تا يك محدوده آدرس ناپيوسته را امكان پذير كند .
هماكنون ساختار زير مجاز است :
ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ]
اين دستور كاربر را در حالت IP پيكربندي منبع ِ ترجمه آدرس شبكه قرار ميدهد ، جايي كه يك توالي از محدوده آدرس ها ميتواند پيكر بندي شود .
اين تنها دستور اين حالت است :
address <start> <end>
مثال :
Router(config)#ip nat pool fred prefix-length 24
Router(config-ipnat-pool)#address 171.69.233.225 171.69.233.226
Router(config-ipnat-pool)#address 171.69.233.228 171.69.233.238
اين پيكربندي ، يك منبع شامل آدرسهاي 171.69.233.225-226 و 171.69.233.228-238 ميسازد . ( آدرس 171.69.233.227 حذف شده است ).
● ترجمه به آدرس واسط :
بعنوان يك تسهيلات براي درخواست كاربران براي ترجمه تمام آدرسهاي داخلي به آدرسهاي نسبت داده شده به يك واسط در مسير ياب ، كد ترجمه آدرس پورت اجازه ميدهد كه كسي براحتي يك واسط را نامگذاري كند ، زمانيكه قوائد ترجمه پويا را پيكر بندي ميكند :
ip nat inside source list <number> interface <interface> overload
اگر آدرسي در واسط نيست ، يا واسط در حال كار نباشد ، هيچ ترجمهاي رخ نميدهد .
مثال :
ip nat inside source list 1 interface Serial0 overload
ترجمه استاتيك ( ثابت ) با پورتها :
زمان ترجمه آدرسها به يك آدرس واسط ، ارتباطات خارجي براي خدمات در داخل شبكه ( مانند Mail ) ، نيازمند پيكربنديهاي اضافي براي ارسال يك ارتباط به يك ميزبان صحيح ميباشد .
دستور زير اين امكان را به كاربر ميدهد كه سرويسهاي معيني ( خاصي ) را به ميزبانهاي معيني نگاشت كند .
ip nat inside source static { tcp | udp } <localaddr> <localport> <globaladdr> <globalport>
مثال :
ip nat inside source static tcp 192.168.10.1 25 171.69.232.209 25
در اين مثال . ارتباطات برقرار شده خارجي به پورت SMTP (25 ) ، به ميزبان داخلي 192.168.10.1 فرستاده ميشود .
پشتيباني براي نگاشت مسير يك پيام بين فرستنده و گيرنده در شبكه :
حال دستور ترجمه ديناميك (پويا ) يك نگاشت مسير را تعيين ميكند كه بجاي يك ليست دسترسي پردازش شود . يك نگاشت مسير به كاربر اجازه ميدهد تا هر تركيب از ليستهاي دسترسي ، مسير بعدي IP و واسط خاجي را تطبيق دهد تا مشخص شود كدام منبع استفاده ميشود :
ip nat inside source route-map <name> pool <name>
مثال :
ip nat pool provider1-space 171.69.232.1 171.69.232.254 prefix-length 24
ip nat pool provider2-space 131.108.43.1 131.108.43.254 prefix-length 24
ip nat inside source route-map provider1-map pool provider1-space
ip nat inside source route-map provider2-map pool provider2-space
!
interface Serial0/0
ip nat outside
!
interface Serial0/1
ip nat outside
!
interface Fddi1/0
ip nat inside
!
route-map provider1-map permit 10
match ip address 1
match interface Serial0/0
!
route-map provider2-map permit 10
match ip address 1
match interface Serial0/1
●ترجمه هاي استاتيك توسعه پذير :
كلمه هاي دستوري توسعه يافته به كاربر اجازه ميدهد تا ترجمههاي استاتيك مبهم ، ترجمههاي با آدرس محلي يا سراسري يكسان هستند .
ip nat inside source static <localaddr> <globaladdr> extendable
بعضي از درخواستها ميخواخند از بيش از يك فراهم كننده سرويس و ترجمه به هر فضاي آدرس فراهم كنندهاي استفاده كنند .
شما ميتوانيد به خوبي يك تطبيق دهنده ليست آدرس ، از نگاشتهاي مسير براي پايه قرار دادن يك مجموعه آدرس سراسري انتخاب شده بر روي واسط خارجي استفاده كنيد .
ذيلاً يك مثال آورده شده است :
ip nat pool provider1-space ...
ip nat pool provider2-space ...
ip nat inside source route-map provider1-map pool provider1-space
ip nat inside source route-map provider2-map pool provider2-space
!
route-map provider1-map permit 10
match ip address 1
match interface Serial0/0
!
route-map provider2-map permit 10
match ip address 1
match interface Serial0/1
.
.
.
آنها يك بار كه كار ميكنند ، همچنين ممكن است بخواهند نگاشتهاي استاتيك را براي يك ميزان مجزا كه از هر فضاي آدرس فراهم كننده استفاده ميكنند ، تعريف كنند .نرم افزار اجازه نميدهد كه دو ترجمه استاتيك ، آدرس محلي يكساني داشته باشند ، هر چند دليلش آن باشد كه از داخل مبهم است .اگر ترجمه بعنوان توسعه يافته مشخص شده باشد ، مسير ياب با ايجاد ترجمه كامل ( همه آدرسها و پورتها ) ، ابهام را رفع ميكند. اگر يك جريان جديد از خارج به داخل ، يك مدخل استاتيك مناسب بعنوان يك قاب ( الگو) براي يك ترجمه كامل عمل خواهد كرد . براي يك جريان جديد از داخل به خارج ، قوانين نگاشت مسير پويا ، براي ايجاد ترجمه كامل استفاده خواهد شد .
● نامگذاري مستعار آدرسهاي منبع :
تعدادي از درخواستها ميخواهند نرم افزار ترجمه آدرس شبكه را پيكر بندي كنند تا آدرسهاي محلي آنها را به آدرسهاي سراسري ِ اختصاص داده شده از آدرس ايتفاده شده از يك زير شبكه متصل شده ، ترجمه كند .اين نيازمند آن است كه مسير ياب به درخواستهاي ARP ( پروتكل تعيين آدرس ) براي آن آدرسها پاسخ دهد ، بطوريكه آن بسته ها عازم آدرسهاي سراسري شوند كه بوسيله مسير ياب شناخته و ترجمه شده اند .( مسير يابي از تحويل اين بسته ها مراقبت ميكند ، وقتي كه آدرسهاي سراسري از يك شبكه مجازي كه به چيزي متصل نيست اختصاص يافته شده باشند ). نرم افزار يك نام مستعار براي آن آدرس ايجاد ميكند بطوريكه مسيرياب به ARP ( پروتكل تعيين آدرس ) براي آن آدرسها جواب خواهد داد . اين نامگذاري مستعار خودكار همچنين براي آدرسهاي سراسري داخلي يا محلي خارجي در موخل هاي استاتيك رخ دهد . آن ميتواند براي مدخلهاي استاتيك غير فعال شود و ميتواند توسط دستورات غير مستعار از كار بيفتد :
ip nat inside source static <local-ip-address> <global-ip-address> no-alias
● حفظ شماره ميزبان :
براي سهولت مديريت شبكه ، بعضي از سايتها ميل دارند پيشوندها را ترجمه كنند نه آدرسها را . آنها ميخواهند كه آدرس ترجمه شده ، شماره ميزبان ِ همساني را بعنوان آدرس اصلي داشته باشد .اين ويژگي ميتواند با پيكربندي ترجمه بطور معمول فعال شود .اما پيكر بندي منبع آدرس از نوع تطبيق ميزبان باشد :
ip nat pool fred <start> <end> prefix-length <len> type match-host
● بهبود مدت زمان خروجي ترجمه :
در زير زمان خروجي جديد براي مدخلهاي ترجمه توسعه يافته پياده سازي شده است :
ip nat translation ?
icmp-timeout Specify timeout for NAT ICMP flows
syn-timeout Specify timeout for NAT TCP flows after a SYN and no further data
● محدوديت مدخل ترجمه :
با استفاده از دستور زير ، مترجم آدرس شبكه ios ِ سيسكو مي تواند پيكربندي شود تا تعدادي از مدخلهاي ترجمه را در ساختن محدود كند . پيشفرض اين است كه هيچ محدوديتي نيست :
ip nat translation max-entries <n>
Cisco IOS Network Address Translation
________________________________________
Overview
In its simplest configuration, the Network Address Translator (NAT) operates on a router connecting two networks together; one of these networks (designated as inside) is addressed with either private or obsolete addresses that need to be converted into legal addresses before packets are forwarded onto the other network (designated as outside). The translation operates in conjunction with routing, so that NAT can simply be enabled on a customer-side Internet access router when translation is desired.
Use of a NAT device provides RFC 1631-style network address translation on the router platform. The goal of NAT is to provide functionality as if the private network had globally unique addresses and the NAT device was not present. RFC 1631 represents a subset of Cisco IOS NAT functionality.
Cisco IOS NAT supports "bi-directional translation" through the simultaneous use of "inside source" and "outside source" translations.
Terminology
Figure 1
NAT Concepts
Inside
Set of networks subject to translation
Outside
All other addresses. Usually these are valid addresses located on the Internet.
Figure 2
NAT Terminology « Inside Addressing»
• Inside local: configured IP address assigned to a host on the inside network. Address may be globally unique, allocated out of the private address space defined in RFC 1918, or might be officially allocated to another organization
• Inside global: the IP address of an inside host as it appears to the outside network, "Translated IP Address". Addresses can be allocated from a globally unique address space, typically provided by the ISP (if the enterprise is connected to the global Internet)
Figure 3
NAT Terminology "Outside Addressing"
• Outside local: the IP address of an outside host as it appears to the inside network. These addresses can be allocated from the RFC 1918 space if desired
• Outside global: the configured IP address assigned to a host in the outside network
Simple Translation Entry
Translation entry that maps one IP address to another
Extended Translation Entry
Translation entry that maps one IP address and port pair to another
Main Features
• Static Address Translation—Telnet 207.33.94.1
The user can establish a one-to-one mapping between local and global addresses
Users can also configure Static address translations to the port level, and use the remainder of the IP address for other translations. Typically where you are performing Port Address Translation (PAT)
• Dynamic Address Translation
The user can establish dynamic mapping between the local and global addresses. This is done by describing the local addresses to be translated and the pool of addresses from which to allocate global addresses, and associating the two.
• Match Host
The ability to configure NAT to assign the same Host portion of an IP Address and only translate the Network prefix portion of the IP Address. Useful where you are using the host portion as a means to identify or number users uniquely
• Port Address Translation (PAT)
Figure 4
Basic Concepts of PAT
Figure 5
Unique Source Port per Translation Entry
Several internal addresses can be NATed to only one or a few external addresses by using a feature called Port Address Translation (PAT) which is also referred to as "overload", a subset of NAT functionality.
PAT uses unique source port numbers on the Inside Global IP address to distinguish between translations. Because the port number is encoded in 16 bits, the total number could theoretically be as high as 65,536 per IP address. PAT will attempt to preserve the original source port, if this source port is already allocated PAT will attempt to find the first available port number starting from the beginning of the appropriate port group 0-5111, 512-1023 or 1024-65535. If there is still no port available from the appropriate group and more than one IP address is configured, PAT will move to the next IP address and try to allocate the original source port again. This continues until it runs out of available ports and IP addresses.
• Destination Address Rotary Translation
A dynamic form of destination translation can be configured for some outside-to-inside traffic. Once a mapping is set up, a destination address matching one of those on an access list will be replaced with an address from a rotary pool. Allocation is done in a round-robin basis, performed only when a new connection is opened from the outside to the inside. All non-TCP traffic is passed untranslated (unless other translations are in effect).
This feature was designed to provide protocol translation load distribution. It is not designed nor intended to be used as a substitute technology for Cisco's LocalDirector product. Destination address rotary translation should not be used to provide web service load balancing because, like vanilla DNS, it knows nothing about service availability. As a result, if a web server were to become offline, the destination address rotary translation feature would continue to send requests to the downed server.
For additional information, please visit:
http://www.cisco.com/warp/public/732/Tech/ipservices/docs/algs.pdf