دریافت و بازبینی بسته های شبکه در ویندوز سرور — راهنمای کاربردی

در زمان عیبیابی مشکلات اتصالهای شبکه یا اپلیکیشنها، یکی از بهترین کارها این است که آن چه را روی شبکه در حال انتقال است، مورد رصد قرار دهیم. مایکروسافت به این منظور ابزار Microsoft Network Monitor را پیشنهاد میکند که در ادامه با ابزار Microsoft Message Analyzer جایگزین شده است. متأسفانه مایکروسافت در ادامه دیگر پروژه Microsoft Message Analyzer را ادامه نداد و لینکهای دانلود آن را نیز حذف کرد. در حال حاضر تنها ابزار قدیمیتر Microsoft Network Monitor موجود است. در این مقاله با روش دریافت و بازبینی بسته های شبکه در ویندوز سرور آشنا خواهیم شد.
امکان استفاده از ابزارهای شخص ثالث از قبیل WireShark نیز برای نظارت بر دادههای انتقال یافته روی شبکه وجود دارد. با این که برخی ابزارهای شخص ثالث ممکن است تجربه بهتری ارائه دهند، اما Microsoft Network Monitor همچنان جایگاه خود را دارد. در این مقاله قصد داریم با شیوه دریافت و بازبینی بستهها با استفاده از جدیدترین نسخه از ابزار Microsoft Network Monitor به عنوان یکی از محبوبترین ابزارها در این زمینه آشنا شویم.
با این که امکان استفاده از WireShark نیز وجود دارد، اما دریافتیم که رابط کاربری و قابلیت استفاده از ابزار Microsoft Network Monitor به صورت آماده بسیار آسانتر است. اغلب بخشهای کار یکسان است و با استفاده از WireShark نیز قابل اجرا است، اما ممکن است نیاز به پیکربندی بسیار بیشتری وجود داشته باشد.
دریافت بستهها با استفاده از Microsoft Network Monitor
ابتدا باید ابزار Microsoft Network Monitor را نصب کنید.
برای دانلود کردن آن به این صفحه (+) بروید و سپس آن را نصب کنید. زمانی که نصب شد، برنامه را باز کنید و روی Capture کلیک کنید.
سپس با کلیک روی دکمه Start شروع به نظارت بر بستهها بکنید. به این ترتیب بستههای جابجا شده دریافت میشوند و در سمت چپ برنامه نمایش مییابند.
اگر با پیام خطایی مواجه شدید که اعلام میکند هیچ آداپتری اتصال نیافته است، باید Microsoft Network Monitor را به عنوان Administrator اجرا کنید. به علاوه اگر به تازگی آن را نصب کردهاید، باید یک بار سیستم را خاموش و روشن کنید.
یکی از بزرگترین مزیتهای استفاده از Microsoft Network Monitor این است که مبادلههای شبکه را به سادگی در سمت چپ صفحه گروهبندی میکند. به این ترتیب دیدن پردازشهای خاص و یافتن و بررسی آنها آسانتر میشود.
با زدن یکی از علامتهای بعلاوه و باز کردن آن، مجموعه خاصی از مبادلهها دیده میشوند که network monitor دریافت کرده و زیر یک پردازش گروهبندی کرده است.
فیلتر کردن ترافیک
در هنگام استفاده از network monitor متوجه خواهید شد که با توجه به حجم دادههای ورودی، باید موارد نویز را فیلتر کنید. یک نمونه استفاده از فیلتر، DnsAllNameQuery است که زیر بخش DNS فیلترهای استاندارد قرار دارد. با افزودن این خط به بخش فیلتر نمایش و کلیک کردن روی دکمه Apply میتوانید تنها آن بستههایی را ببینید که به کوئریهای DNS مربوط هستند:
ساخت فیلترها
ایجاد فیلتر یا ویرایش کردن فیلترهای داخلی کاری بسیار آسان است. درون فیلد Display Filter چند روش برای ساخت فیلتر وجود دارد.
با وارد کردن نام پروتکل و سپس یک علامت نقطه (.) یک فهرست تکمیل خودکار از مقادیر ممکن برای مقایسه کردن دیده میشود. با استفاده از عملگر مقایسه استاندارد (==)، میتوانیم بررسی کنیم که آیا مقادیر خاصی برابر هستند یا نه. حتی میتوانیم با استفاده از عملگرهای منطقی مانند and و or برخی گزارههای چند عبارتی نیز بسازیم. نمونه آن به صورت زیر است:
DNS.QuestionCount AND DNS.ARecord.TimeToLive == 14
چند متد نیز مانند ()contains و ()UINT8 وجود دارند. در ادامه روش استفاده از contains را برای فیلتر کردن رکوردهای DNS که شامل [google.com] و مقدار TimeToLive برابر با 14 است:
DNS.QuestionCount AND DNS.ARecord.TimeToLive == 14 AND DNS.QRecord.QuestionName.contains("google.com")
چند روش برای ترکیب کردن فیلترها وجود دارد که آنها را مفید و استفاده از آنها را آسان میسازد. این یک روش عالی برای بازگرداندن صرفاً آن دادههایی است که به آنها علاقه داریم. فایده این روش به طور خاص در آن است که حجم دادههای دریافتی در اغلب موارد بسیار بالا است. در بخش بعدی برخی مثالهای مفید را بررسی میکنیم.
فیلترهای نمونه
برخی مثالهای عملی علاوه بر فیلترهای داخلی نیز وجود دارند که کمک زیادی به درک شیوه دریافت دادههای مورد نیاز میکنند.
فیلتر کردن بر حسب شماره پورت
با این که میتوان از پروتکل HTTP برای فیلتر کردن استفاده نمود، اما استفاده از متد زیر به ما امکان میدهد که پورتهای خاصی مانند 8080 یا 8443 را فیلتر کنیم که به طور خاص برای عیبیابی مفید هستند:
// Filter by TCP Port Number tcp.port == 80 OR Payloadheader.LowerProtocol.port == 80 tcp.port == 443 OR Payloadheader.LowerProtocol.port == 443
فریمهای TCP که به صورت تکهتکه هستند، دوباره در کنار هم قرار میگیرند و در یک فریم جدید وارد میشوند که شامل یک هدر خاص به نام Payloadheader است. با نگاه کردن به هر دو میتوانیم مطمئن شویم که همه دادههایی که به دنبالش هستیم را دریافت کردهایم.
یافتن فریمهای مربوط به SSL
در زمان عیبیابی ممکن است بخواهید اتصالهای SSL که تلاش به مبادله میکنند را پیدا کنید. با این که شاید نتوانید ترافیک داخلی را رمزگشایی کنید، اما این کار به یافتن سرورهایی که اتصال تلاش میکند به آنها وصل شود کمک میکند:
// Filter by SSL Handshake TLS.TlsRecLayer.TlsRecordLayer.SSLHandshake.HandShake.HandShakeType == 0x1
یافتن انتقال مجدد TCP و SYN
برای عیبیابی مشکلات آپلود و دانلود فایل باید به بررسی تعداد انتقالهای مجدد (Retransmission) بپردازیم و تأثیر آن را بر عملکرد بررسی کنیم:
Property.TCPRetransmit == 1 || Property.TCPSynRetransmit == 1
بدین ترتیب باید مطمئن شویم که امکان محاوره فعال شده است، چون این فیلتر به آن کارکرد وابسته است.
خواندن فریمها و دادههای HEX
به طور پیشفرض لیآوت پنجره دو بخش تحتانی دارد که به جزییات فریم و جزییات HEX اختصاص دارند. درون بخش جزییات فریم، هر بسته به بخشهای سازندهاش تجزیه شده است. در سمت دیگر در بخش جزییات HEX دادها به صورت بایتهای خام و دیکود شده دیده میشوند. زمانی که بخشی از جزییات فریم انتخاب شود، همان بخش در کد HEX هایلایت میشود.
سخن پایانی
اجرای ردگیری شبکه در جدیدترین نسخههای ویندوز کار بسیار آسانی است. با این که مایکروسافت ابزارهای داخلی خود را که به این منظور ارائه کرده بود متوقف یا منسوخ ساخته است، اما همچنان میتوان از آنها استفاده کرد. ابزارهای زیاد دیگری نیز از قبیل WireShark وجود دارند، اما نرمافزار Microsoft Network Monitor همچنان کار درک اطلاعات بستههای دریافت شده را به صورت بسیار آسان انجام میدهد.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای ابزارهای مهندسی کامپیوتر
- مجموعه آموزشهای اینترنت و Internet Download Manager
- آموزش ویندوز سرور ۲۰۱۶ برای مدیریت شبکه های کامپیوتری
- ویندوز سرور چیست و چه فرقی با ویندوز دارد؟
- مدل های شبکه کامپیوتری — راهنمای جامع
==