خیلی وقت ها ابزارها و اپلیکیشن هایی داریم که مخصوصن توی شرایط نتورکی کشور مجبوریم از دو سرور استفاده کنیم، یکی داخل ایران و یکی هم خارج از ایران، و این وسط ارتباط این دو سرور هم برای ما مهم هستش.
خیلی وقت ها ارتباط یا قطع میشه و یا سروری که تو ایران داریم نمیتونه با سرور خارجیمون ارتباط بگیره، توی شرایط فعلی نتورک کشور خیلی پیش میاد که یه رنج آی پی از سمت زیرساخت کشور فیلتر یا بسته شده باشه که میتونم خیلی راحت بگم این چند وقت هم کم ندیدم، از فیلتر بودن یک پورت روی آی پی گرفته تا بسته بودن UDP برای یک رنج آی پی.
هدفم توی این مقاله اینه که ترافیک 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- هم برای پهنای باندی هست که میخوایم بفرستیم. بعد از زدن این خط سعی میکنه با آی پی داده شده روی پورت تعریف شده ارتباط رو بگیره، اگر پورت رو اشتباه بدین یا ارتباط برقرار نشه سریع خطا رو نشون میده.
در عکس دقت کنید جزییات خوبی نشون داده شده از اینکه این ارتباط از کدوم آی پی هستش، تعداد درخواست ها و اندازه پکت ها و ... .
برای UDP دقیقن به همین شکل هستش در این تفاوت که باید بهش بگیم ترافیکی میفرستی با UDP باشه.
برای مثال UDP میخوام از سرور اول به سرور دوم ترافیک رو ارسال کنم، برای این مورد باید مثل قبلی اول یه پورتی برای لیسن باز بزاریم که این همون 6789 رو برای سرور دومم باز میزارم:
بعد میریم توی سرور اول و به سمت سرور اولمون ترافیک UDP رو میفرستیم:
$ iperf3 -c 172.32.6.30 -p 6789 -b 1M -u
تنها تفاوت در این خط استفاده از u- به معنی UDP است. خروجیش رو میتونید ببنید:
این ابزار خیلی خوبی هستش برای تست نتورک و ارتباطات، سوییچ های زیاد و خیلی خوبی داره پیشنهاد میدم برای فان هم شده تست داشته باشید باهاش. به عنوان مثال میتونید براش زمان مشخص کنید با سوییچ t- یا فقط یک ورژن آی پی رو فورس با سوییچ 4- یا 6- و یا همین طور میتونید خروجی رو توی یه فایل json با سوییچ J- ذخیره کنید.