Ali
Ali
خواندن ۳ دقیقه·۲ سال پیش

تست ترافیک TCP/UDP بین دو سرور با iperf3

خیلی وقت ها ابزارها و اپلیکیشن هایی داریم که مخصوصن توی شرایط نتورکی کشور مجبوریم از دو سرور استفاده کنیم، یکی داخل ایران و یکی هم خارج از ایران، و این وسط ارتباط این دو سرور هم برای ما مهم هستش.

خیلی وقت ها ارتباط یا قطع میشه و یا سروری که تو ایران داریم نمیتونه با سرور خارجیمون ارتباط بگیره، توی شرایط فعلی نتورک کشور خیلی پیش میاد که یه رنج آی پی از سمت زیرساخت کشور فیلتر یا بسته شده باشه که میتونم خیلی راحت بگم این چند وقت هم کم ندیدم، از فیلتر بودن یک پورت روی آی پی گرفته تا بسته بودن UDP برای یک رنج آی پی.

iperf3
iperf3



هدفم توی این مقاله اینه که ترافیک TCP و UDP رو بین دو تا سرور ارسال و تست کنم، با ابزار iperf3.

شاید بگید چرا این ابزار، ابزارهای دیگه هم هست که معروفن و مقالات خیلی خوبی هم در موردشون هست. این ابزار هم کارش درسته و خوشم اومد ازش در کنار اینکه خیلی سبکه، کار راه بنداز هم هست.

پیش‌نیاز این کار دانلود کردن ابزار هستش و ما اول دانلود میکنم(تستمون رو روی ubuntu دارم انجام میدم):

$ sudo apt-get install iperf3
راستی برای نسخه ویندوز اگه ابزار رو خواستین میتونین از آدرس زیر استفاده کنید:
https://iperf.fr/iperf-download.php

میخوایم بشینیم تست کنیم، الان میخوایم ترافیک TCP رو به سرور اول از سرور دوم تست کنیم:

باید یک پورت انتخاب کنید و روی اون پورت این تست رو انجام بدین، برای این مورد من دستور زیر استفاده میکنم تا سرور روی پورتی که میخوام شروع به لیسن (listening) روی ترافیک ورودی کنه:

$ iperf3 -s -p 6789

که s- میشه که روی سرور اجرا میشه و p- هم برای این که پورت رو بهش بدیم و اون مقدار هم مقداری هست که داره الان روش لیسن میکنه.

در حال لیسن کردن پورت مدنظر
در حال لیسن کردن پورت مدنظر

بعد از این مورد میریم توی سرور دوم و با دستور زیر این سرور ترافیک TCP رو به سمت سرور یکمون میفرستیم:

$ iperf3 -c 172.32.5.20 -p 6789 -b 1M

که اینجا c- برای کلاینت هستش که وصل بشه به هاست، p- هم همون پورتی رو میدیم که توی سرور یک باز کردیم و b- هم برای پهنای باندی هست که میخوایم بفرستیم. بعد از زدن این خط سعی میکنه با آی پی داده شده روی پورت تعریف شده ارتباط رو بگیره، اگر پورت رو اشتباه بدین یا ارتباط برقرار نشه سریع خطا رو نشون میده.

ارسال ترافیک tcp از سرور دوم به سرور اول
ارسال ترافیک tcp از سرور دوم به سرور اول
دریافت ترافیک tcp در سرور اول از سرور دوم
دریافت ترافیک tcp در سرور اول از سرور دوم

در عکس دقت کنید جزییات خوبی نشون داده شده از اینکه این ارتباط از کدوم آی پی هستش، تعداد درخواست ها و اندازه پکت ها و ... .


برای UDP دقیقن به همین شکل هستش در این تفاوت که باید بهش بگیم ترافیکی میفرستی با UDP باشه.

برای مثال UDP میخوام از سرور اول به سرور دوم ترافیک رو ارسال کنم، برای این مورد باید مثل قبلی اول یه پورتی برای لیسن باز بزاریم که این همون 6789 رو برای سرور دومم باز میزارم:

لیسن کردن پورت در سرور دوم
لیسن کردن پورت در سرور دوم

بعد میریم توی سرور اول و به سمت سرور اولمون ترافیک UDP رو میفرستیم:

$ iperf3 -c 172.32.6.30 -p 6789 -b 1M -u

تنها تفاوت در این خط استفاده از u- به معنی UDP است. خروجیش رو میتونید ببنید:

ارسال ترافیک UDP از سرور اول به سرور دوم
ارسال ترافیک UDP از سرور اول به سرور دوم
دریافت ترافیک UDP در سرور دوم از سرور اول
دریافت ترافیک UDP در سرور دوم از سرور اول


این ابزار خیلی خوبی هستش برای تست نتورک و ارتباطات، سوییچ های زیاد و خیلی خوبی داره پیشنهاد میدم برای فان هم شده تست داشته باشید باهاش. به عنوان مثال میتونید براش زمان مشخص کنید با سوییچ t- یا فقط یک ورژن آی پی رو فورس با سوییچ 4- یا 6- و یا همین طور میتونید خروجی رو توی یه فایل json با سوییچ J- ذخیره کنید.


سرورnetworkترافیک
خلاصه‌ای از همه چی، یه DevOps ساده که سعی میکنه چیزای جدید رو یاد بگیره، و با لبخند ادامه میده.
شاید از این پست‌ها خوشتان بیاید