اشکال زدائی شبکه های مبتنی بر TCP/IP
اشکال زدائی شبکه های مبتنی بر TCP/IP
استفاده از ipconfig
استفاده از ipconfig بدون سوئيچ ،اطلاعات پيکربندی TCP/IP در ارتباط با هر يک از آداپتورهای موجود بر روی سيستم را نمايش خواهد داد:
• آدرس IP
• Subnet Mask
• Default gateway
• اطلاعات سرويس دهنده DNS
• Domain
تايپدستور | خروجی |
C:\> ipconfig | Ethernet adapter MyLan1: |
دستور فوق ، اطلاعات مربوط به اتصالات از نوع PPP که از آنان در Dialup و VPN استفاده می شود را نيز نمايش خواهد داد .
استفاده از ipconfig به همراه سوئيچ all ، علاوه بر نمايش اطلاعات اشاره شده در بخش قبل ، اطلاعات ديگری را نيز نمايش خواهد داد :
• آدرس سخت افزاری کارت شبکه ( آدرس MAC )
• اطلاعات مربوط به DHCP
تايپدستور | خروجی |
C:\> ipconfig /all | Windows 2000 IP Configuration |
ساير سوئيچ های دستور ipconfig : با استفاده از دستور ipconfig و برخی سوئيچ های آن ( release ,renew ) ، می توان اطلاعات مربوط به پيکربندی TCP/IP ارائه شده توسط سرويس دهنده DHCP را که در اختيار يک سرويس گيرنده قرار داده شده است را آزاد و يا آنان را مجددا" از سرويس دهنده درخواست نمود . فرآيند فوق به منظور تشخيص عملکرد صحيح سرويس دهنده DHCP در شبکه بسيار مفيد و کارساز است . ( آيا سرويس دهنده DHCP وظايف خود را به خوبی انجام می دهد ؟ آيا يک سرويس گيرنده قادر به برقراری ارتباط با سرويس دهنده DHCP به منظور درخواست و دريافت اطلاعات پيکربندی TCP/IP می باشد ؟ ) . دستور ipconfig دارای سوئيچ های مفيد متعددی است که می توان با توجه به نوع خواسته خود از آنان استفاده نمود :
عملکرد | سوئيچ |
آدرس IPپيکربندی شده توسط DHCPرا آزاد می نمايد . در صورتی که سوئيچ فوق را به تنهائی و بدون مشخص نمودن adapterتايپ نمائيم،پيکربندی IPبرای تمامی آداپتورهای موجود بر روی کامپيوتر، آزاد می گردد. در صورتی که قصد آزاد سازی اطلاعات پيکربندی مربوط به يک آداپتور خاص را داشته باشيم ، می بايست به همراه سوئيچ فوق نام آداپتور نيز مشخص گردد . | / release [ adapter] |
يک آدرس IPرا بر اساس اطلاعات جديدی که از طريق DHCPدريافت می نمايد ، پيکربندی مجدد می نمايد . در صورتی که سوئيچ فوق را به تنهائی و بدون مشخص نمودن adapterتايپ نمائيم،پيکربندی IP تمامی آداپتورهای موجود بر روی کامپيوتر، مجددا" انجام خواهد شد. در صورتی که قصد ايجاد مجدد اطلاعات پيکربندی مربوط به يک آداپتور خاص را داشته باشيم ، می بايست به همراه سوئيچ فوق نام آداپتور نيز مشخص گردد. | /renew [adapter] |
حذف محتويات Dns Resolver Cache | / flushdn |
Refreshنمودن تمامی اطلاعات توليد شده توسط DHCPبرای آداپتور و ريجستر نمودن اسامی Dns | / registerdn |
نمايش محتويات DnsResolver Cache | / displaydns |
نمايش تمامی DHCPClass IDمجاز برای آداپتور | / showclassid [adapter] |
تغيير DHCP ClassID | /setclassid [adapter] [classidtoset ] |
توضيحات :
• مفهوم DNS Cache : زمانی که يک سيستم ، ترجمه ( تبديل نام host به آدرس ) را از طريق يک سرويس دهنده DNS دريافت می نمايد ، برای مدت زمان کوتاهی آن را در يک Cache ذخيره می نمايد . در صورتی که مجددا" از نام استفاده شود ، پشته TCP/IP محتويات Cache را به منظور يافتن رکورد درخواستی بررسی می نمايد . بدين ترتيب امکان پاسخگوئی سريعتر به درخواست ترجمه نسبت به حالتی که در خواست برای يک سرويس دهنده DNS ارسال می شود ، فراهم می گردد . با توجه به اين که اندازه Cache نمی تواند از يک ميزان منطقی و تعريف شده تجاوز نمايد ، هر رکورد موجود در Cache پس از مدت زمانی خاص حذف می گردد. در صورت اعمال هرگونه تغييرات در DNS ( مثلا" تغيير يک رکورد DNS ) ، می توان با استفاده از دستور ipconfig/flushdns تمامی رکوردهای موجود در cache را حذف نمود . بدين ترتيب در صورت درخواست يک نام host ، با سرويس دهنده DNS مشورت می گردد و نتايج مجددا" در Cache ذخيره خواهند شد . دستور ipconfig / displaydns ، محتويات cache را نمايش خواهد داد. از اطلاعاتی که نمايش داده می شود ، می توان به منظور تشخيص اين موضوع که آيا برای ترجمه نام به آدرس از Cache و يا سرويس دهنده DNS استفاده شده است ، کمک گرفت .
• موارد استفاده از دستور Ipconfig : از دستور فوق در مواردی که قصد تشخيص اين موضوع را داريم که آيا سرويس دهنده DNS و DHCP در شبکه به درستی وظايف خود را انجام می دهند ، استفاده می شود( علاوه بر مشاهده اطلاعات پيکربندی TCP/IP ) . مثلا" با استفاده از سوئيچ های release و renew ، می توان براحتی تشخيص داد که آيا در زمينه دريافت اطلاعات پيکربندی از يک سرويس دهنده DHCP مشکل خاصی وجود دارد .از سوئيچ های مرتبط با DNS می توان به منظور اعمال تغييرات پيکربندی ، بهنگام سازی cache محلی و يا ريجستر نمودن اطلاعات پيکربندی جديد با يک سرويس دهنده DNS ، استفاده نمود .
• امکانات جانبی به همراه دستور ipconfig : با استفاده از سوئيچ all / اطلاعات متنوعی در رابطه با پيکربندی TCP/IP نمايش داده خواهد شد . در صورتی که حجم اطلاعات بگونه ای است که می بايست صفحه را scroll نمود ، می توان از More| به همراه دستور ipconfig استفاده نمود . در صورت تمايل می توان خروجی دستور ipconfig را در مقابل ارسال بر روی دستگاه استاندارد خروجی ( صفحه نمايشگر ) ، در يک فايل ذخيره نمود تا امکان بررسی سريعتر نتايج و رفع مشکل فراهم گردد.
( ipconfg /all > test1.txt )
همانگونه که اشاره گرديد در سيتم هائی که از لينوکس و يا يونيکس استفاده می نمايند ، از دستور ifconfig استفاده می گردد. از دستور فوق برای نمايش اطلاعات پيکربندی IP و اعمال تغييرات لازم استفاده می شود .
دستور Ping
برنامه Ping در ابتدا توسط Mike Muuss و با عملکردی ساده ، پياده سازی گرديد. اين برنامه از پروتکل ICMP به منظور ارسال پيام های UDP به يک آدرس ( ECHO REQUEST ) استفاده می نمايد و پس از ارسال پيام ، در انتظار دريافت پاسخ ( ECHO REPLY ) می ماند . سيستم راه دور، يک بسته اطلاعاتی از نوع پاسخ ( REPLY ) را برای فرستنده پيام ارسال می نمايد و بر اساس آن Round-trip ( ارسال يک درخواست و دريافت پاسخ ) محاسبه می گردد .
ساختار بسته های اطلاعاتی ECHO REQUEST و ECHO REPLY در جدول زير نشان داده شده است . از فيلد اطلاعاتی "نوع پيام " به منظور مشخص نمودن نوع پيام ، استفاده می شود . در صورتی که مقدار اين فيلد هشت باشد ، بسته اطلاعاتی از نوع ECHO REQUEST و در صورتی که مقدار اين فيلد صفر باشد ، بسته اطلاعاتی از نوع ECHO REPLY خواهد بود .
ساختار بسته های اطلاعاتی ECHO REQUESTو ECHO REPLY | ||
نوع پيام ICMP | کد صفر | CheckSum |
Identifier | Sequence number | |
Optionaldata |
استفاده از Ping
پس از دريافت پيام ECHO REQUEST توسط کامپيوتر دريافت کننده ، وی يک پاسخ ( REPLY ) را برای فرستنده ارسال می نمايد که شامل Identifier و Sequence number مشابه بسته اطلاعاتی ارسالی است .
با توجه به پاسخ ارائه شده توسط دريافت کننده بسته های اطلاعاتی می توان به نتايج متفاوتی دست يافت :
• تمامی بسته های اطلاعاتی ارسالی ، مجددا" برگردانده می شوند . ( بين سيستم ارسال کننده و دريافت کننده مشکل ارتباطی وجود ندارد ) .
• برخی از بسته های اطلاعاتی ارسالی، توسط دريافت کننده برگردانده نمی شوند ( کاهش بسته های اطلاعاتی ارسالی ) و يا با اولويتی که ارسال می گردند با همان اولويت دريافت نمی شوند . اين مسئله می تواند نشاندهنده وجود اشکال در يک شبکه باشد . در اين رابطه احتمال ديگری نيز وجود دارد : سيستم از راه دور ( سيستمی که می بايست به پيام های ارسالی پاسخ دهد ) درگير پردازش های متعددی است و قادر به پاسخگوئی پيام های ECHO REQUEST در مدت زمان مشخص شده نمی باشد .
دستور Ping ، مدت زمان Round-trip بر حسب ميلی ثانيه را محاسبه و نمايش می دهد . برای محاسبه مدت زمان Round-trip ، برنامه ping زمان ارسال بسته اطلاعاتی را در فيلد Optional data قرار داده و پس از برگشت بسته اطلاعاتی، زمان ذخيره شده را با زمان جاری سيستم مقايسه نموده تا در نهايت مدت زمان رفت و برگشت يک بسته اطلاعاتی مشخص گردد . دستور Ping همچنين مقدار TTL ( اقتباس شده از Time To Live ) را در خروجی نمايش خواهد داد .TTL مدت زمان اعتبار يک بسته اطلاعاتی را مشخص نموده و هر host و يا روتر موجود در مسير بسته اطلاعاتی معمولا" به ميزان يک ثانيه آن را کاهش می دهد .
در برخی موارد ممکن است در زمان ارسال درخواست های متوالی ping ، مدت زمان Round-trip کاهش پيدا نمايد . اين موضوع می تواند دلايل متعددی داشته باشد :
• ماشين مقصد ( و يا روتر gateway ) در آن مقطع زمانی در جدول محلی ARP نمی باشد و مدت زمانی طول خواهد کشيد ( ميلی ثاينه ) تا arp آدرس سخت افزاری اولين بسته اطللاعاتی را بدست آورد .
• در صورتی که به همراه دستور ping در مقابل استفاده از آدرس IP از نام host استفاده شود ، ممکن است يافتن سرويس دهنده DNS که برنامه ping می بايست با آن ارتباط برقرار نمايد( ترجمه نام host به آدرس IP ) ، زمان خاص خود را داشته باشد .
در زمان استفاده از دستور Ping بهتر است که در ابتدا عمليات ping را در ارتباط با اينترفيس محلی و يا آدرس
( Loopback ( IP: 127.0.0.1 شروع نمود . آدرس loopback در پشته TCP/IP استفاده شده و می توان از آن به منظور حصول اطمينان از صحت کارکرد پشته محلی ، استفاده نمود . آدرس فوق ، يک آدرس IP رزو شده است که امکان استفاده از آن در اينترنت وجود ندارد . در صورتی که نمی توان آدرس IP سستم محلی را ping نمود ، ممکن است پيکربندی سيستم دارای مشکل باشد . در صورتی که نمی توان آدرس Loopback را ping نمود ، ممکن است پشته TCP/IP و يا آداپتور شبکه مشکل داشته باشند .
استفاده از Ping در ويندوز
گرامر دستور Pingدر ويندوز | |
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] | |
عملکرد | سوئيچ |
به صورت پيوسته عمليات Pingرا انجام می دهد. برای توقف برنامه pingمی توان از کليدهای CTRL+Cاستفاده نمود . | -t |
ترجمه آدرس به نام را انجام می دهد | -a |
تعداد بسته های اطلاعاتی ICMP ECHO REQUESTارسالی را مشخص می نمايد . | -n count |
اندازه بافر را ارسال می نمايد. | -1 size |
مقدار TTLرا مشخص می نمايد . | -i TTL |
مدت زمان انتظار پاسخ برحسب ميلی ثانيه | -w timeout |
نحوه استفاده از دستور Ping :
تايپدستور | خروجی |
C:\>ping www.google.com | Pinging www.google.akadns.net [64.233.187.99] with 32 bytes of data: |
توضيحات :
• زمان پاسخ حدودا" 430 ميلی ثانيه بوده است
• اندازه بسته های اطلاعاتی ارسالی ، سی و دو بايت است .
اشکال زدائی ارتباط بين گره های يک شبکه با استفاده از دستور Ping
برای اشکال زدائی ارتباط بين گره های يک شبکه ، می توان مراحل زير را دنبال نمود :
• آيا پيکربندی TCP/IP بر روی سيسم محلی ( ارسال کننده ) درست است ؟ برای پاسخ به سوال فوق می توان آدرس IP سيستم محلی را Ping و نتايج را مشاهده نمود . در صورت عدم ارائه پاسخ مناسب ،می تواند مشکل مربوط به پيکربندی تنظيمات TCP/IP بر روی سيستم محلی باشد .
• آيا امکان ping نمودن نام host وجود دارد ؟ برای پاسخ به سوال فوق به همراه دستور ping از نام host استفاده نمائيد . ping ، قبل از ارسال بسته اطلاعاتی برای host مورد نظر ، نام آن را به يک آدرس IP ترجمه می نمايد . اگر آدرسی که Ping ترجمه می نمايد ، آدرسی نيست که تصور آن را داريد ، می بايست پيکربندی سيستم خود را بررسی نمائيد . در چنين مواردی ممکن است شما کامپيوتر خود را بگونه ای پيکربندی نموده ايد که از يک آدرس IP خاص استفاده نمايد ولی در سرويس دهنده DNS ، به کامپيوتر شما يک آدرس IP ديگر مرتبط شده است . در اين رابطه می توان از دستور nslookup به منظور اشکال زدائی ترجمه استفاده نمود .
• آيا امکان ارتباط با سيستمی ديگر در شبکه وجود دارد ؟ برای پاسخگوئی به سوال فوق می بايست يک سيستم ديگر را که مطمئن هستيد در Subnet شما وجود دارد ، ping نمائيد . در صورتی که نتايج موفقيت آميز باشد ، شما می توانيد با اعضاء broadcast Domain ارتباط برقرار نمائيد .
• آيا امکان ارتباط با Default Gateway وجود دارد ؟ Default Gateway ، روتر و يا دستگاهی ديگر است که Subnet شما را به ساير شبکه ها متصل می نمايد. در صورت عدم امکان ping نمودن Default Gateway ، دو احتمال می تواند وجود داشته باشد : احتمال اول : ممکن است آدرس Subnet شما اشتباه باشد . در چنين مواردی می بايست پيکربندی سيستم بررسی گردد تا اين اطمينان حاصل شود که شما از يک آدرس درست برای روتر و يا host ديگر که مسئول فورواردينگ بسته های اطلاعاتی در Local Subnet است ، استفاده می نمائيد . احتمال دوم : ممکن است خود Default gateway دارای مشکل باشد . برای اطمينان از اين موضوع ، می توان از طريق يک سيستم ديگر موجود در شبکه ، Default Gateway را ping نمود . در صورتی که مشکل همچنان باقی است ، می بايست برای حل مشکل بر روی Default Gateway متمرکز گرديد .
• آيا امکان ارتباط با ساير سيستم های موجود در خارج از شبکه محلی وجود دارد ؟ برای پاسخ به سوال فوق ، می توان يک سيستم راه دور را ping نمود . در صورتی که عمليات توام با موفقيت باشد ، ارتباط شما از طريق Default gateway به درستی برقرار شده است و در صورت عدم موفقيت ، دلايل متعددی می تواند وجود داشته باشد : بروز اشکال در سيستم مقصد ، بروز اشکال در روتينگ به سيستم مقصد و يا تجهيزات موجود در خارج از شبکه محلی
و اما دو نکته که بد نيست به آنان نيز اشاره ای داشته باشيم :
• نکته اول : همانگونه که ملاحظه گرديد ، دستور ping دارای امکاناتی مفيد و قدرتمند به منظور اشکال زدائی ارتباط بين گره ها در شبکه های مبتنی بر TCP/IP است، ولی Ping of Death که احتمالا" نام آن را تاکنون شنيده ايد دارای وضعيتی اينچنين نمی باشد . Ping of Death يک نوع تهاجم در شبکه های کامپيوتری است که در آن يک مهاجم با استفاده از برنامه هائی خاص ، بسته های اطلاعاتی ICMP را توليد می نمايد که دارای اندازه ای بيش از حد مجاز می باشند . در صورتی که نرم افزار موجود بر روی سيستم مقصد به درستی Patch نشده باشد ، بسته های اطلاعاتی ارسالی توسط مهاجمان دريافت و بخش عمده ای از حافظه را اشغال نموده و می تواند سرريز حافظه را بدنبال داشته باشد . مديران شبکه می بايست يک محيط ايمن به منظور استفاده از ping را در شبکه فراهم نموده تا امکان تحقق چنين حملاتی در شبکه وجود نداشته باشد .
• نکته دوم : در صورتی که نتوان يک کامپيوتر راه دور را ping نمود ، نمی توان با قاطعيت اعلام نمود که سيستم مقصد به شبکه متصل نمی باشد و يا مشکل مربوط به کابل کشی شبکه است . در اين رابطه دلايل متعددی می تواند وجود داشته باشد : بروز اشکال در هر يک از دستگاه های موجود در مسير ارتباطی نظير هاب ، سوئيچ ، روتر و يا Default Gateway . به همين دليل ، می بايست همواره يک طرح کامل از شبکه به همراه جزئيات مربوطه وجود داشته باشد تا در صورت بروز مشکلاتی اينچنين به سرعت بتوان مسير مربوطه را برای اشکال زدائی بررسی نمود . در چنين مواردی ، می بايست هر دستگاه موجود در مسير ارتباطی بررسی گردد .
هر بسته اطلاعاتی در يک شبکه کامپيوتری دارای مسيری مشخص از زمان ارسال توسط فرستنده تا زمان دريافت توسط گيرنده ( گيرندگان ) می باشد . در صورتی که مقصد يک بسته اطلاعاتی برای سيستمی خارج از شبکه محلی باشد ، وی در مسير خود از بين دستگاه ها و يا روترهای متعددی عبور می نمايد تا به مقصد نهائی خود برسد . مثلا" زمانی که آدرس يک وب سايت را در مرورگر خود تايپ می نمائيد ، درخواست شما از بين روترها و کامپيوترهای متعددی عبور می نمايد تا در نهايت به سرويس دهنده مقصد برسد .
برای مشاهده مسير يک بسته اطلاعاتی، از دستور tracerout که در برخی از سيستم های عامل نظير ويندوز ( از ويندور 98 تا 2003 ) به آن tracert گفته می شود ، استفاده می گردد.در اکثر سيستم هائی که از يونيکس و لينوکس استفاده می نمايند ، می توان از دستور traceroute به منظور مشاهده مسير يک بسته اطلاعاتی استفاده نمود .
موارد استفاده از دستور tracert
• در صورتی که امکان حرکت بسته های اطلاعاتی از مبداء به مقصد وجود نداشته باشد و يا زمان پاسخ دستور ping زمانی نامعقول و طولانی باشد .
• آگاهی از محل توقف يک بسته اطلاعاتی در شبکه
نحوه عملکرد دستور tracert
بدين ترتيب برنامه tracert قادر به دريافت پيام TIME_EXCEEDED ICMP از هر يک از روترها و يا ساير دستگاه های موجود در مسير يک بسته اطلاعاتی می باشد .
شکل زير نحوه عملکرد دستور tracert را نشان می دهد .
همانگونه که در شکل فوق مشاهده می گردد ، کامپيوتر A يک مجموعه از پيام های ICMP ECHO REQUEST را توليد و آنان را برای کامپيوتر B ارسال می نمايد. زمانی که اولين بسته اطلاعاتی ارسال می شود ، مقدار TTL يک خواهد بود و در روتر شماره يک مقدار آن صفر شده و يک پيام TIME_EXCEEDED ICMP ، برای کامپيوتر A ارسال می گردد . کامپيوتر A مجددا" يک بسته اطلاعاتی ICMP ديگر را ارسال می نمايد . ولی اين مرتبه مقدار TTL آن دو در نظر گرفته می شود . در چنين حالتی روتر اول ، بسته اطلاعاتی را عبور داده و يک واحد از مقدار TTL کم می نمايد و آن را برای روتر دوم ارسال می نمايد . ( در اين مقطع مقدار TTL=1 شده است ) . روتر دوم مقدار TTL را بررسی نموده و از آن يک واحد کم خواهد کرد . با توجه به اين که مقدار TTL=0 صفر شده است ، مجددا" يک پيام TIME_EXCEEDED ICMP برای کامپيوتر A ارسال می گردد . زمانی که ICMP ECHO REQUEST به کامپيوتر B می رسد ، وی يک ICMP Echo Reply را برمی گرداند . بدين ترتيب ، کامپيوتر A قادر به تشخيص تعداد hop موجود در مسير خواهد بود.
استفاده از دستور tracert
گرامر دستور tracertدر ويندوز | |
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name | |
عملکرد | سوئيچ |
نام hostرا به آدرس IPترجمه نمی نمايد . | -d |
حداکثر تعداد hopبرای جستجوی مقصد را مشخص می نمايد . | -h maximum_hops |
مدت زمان انتظار برای دريافت پاسخ بر حسب ميلی ثانيه را مشخص می نمايد . | -w timeout |
نحوه استفاده از دستور tracert :
تايپدستور | خروجی |
C:\>tracert www.google.com | Tracing route to www.google.akadns.net [66.102.11.99] |
توضيحات :
• در برنامه اوليه tracert مقدار پورت در هدر UDP ، يک پورت UNREACHABLE در نظر گرفته می شد . بنابراين زمانی که بسته اطلاعاتی ICMP به مقصد نهائی خود می رسد ، يک پيام ICMP DESTINATION UNREACHABLE توسط کامپيوتر مقصد برگردانده می شود .
• در صورتی که آخرين گره مشاهده شده در خروجی دستور tracert مقصد نهائی باشد ، تمامی گره ها و يا روترهای موجود در مسير نمايش داده شده اند .
{{Fullname}} {{Creationdate}}
{{Body}}