.\" .\" darkstat 3 .\" Copyright 2001-2014, Emil Mikulic. .\" .\" You may use, modify and redistribute this file under the terms of the .\" GNU General Public License version 2. (see COPYING.GPL) .\" .TH darkstat 8 "June 2011" "darkstat 3.0.722" .SH "نام (NAME)" darkstat \- پویشگر ترافیک شبکه .\" .SH "خلاصه دستور (SYNOPSIS)" .B darkstat [ .BI \-i " interface" ] [ .BI \-r " file" ] [ .BI \-\-snaplen " bytes" ] [ .BI \-\-pppoe ] [ .BI \-\-syslog ] [ .BI \-\-verbose ] [ .BI \-\-no\-daemon ] [ .BI \-\-no\-promisc ] [ .BI \-\-no\-dns ] [ .BI \-\-no\-macs ] [ .BI \-\-no\-lastseen ] [ .BI \-p " port" ] [ .BI \-b " bindaddr" ] [ .BI \-\-base " path" ] [ .BI \-f " filter" ] [ .BI \-l " network/netmask" ] [ .BI \-\-local\-only ] [ .BI \-\-chroot " dir" ] [ .BI \-\-user " username" ] [ .BI \-\-daylog " filename" ] [ .BI \-\-import " filename" ] [ .BI \-\-export " filename" ] [ .BI \-\-pidfile " filename" ] [ .BI \-\-hosts\-max " count" ] [ .BI \-\-hosts\-keep " count" ] [ .BI \-\-ports\-max " count" ] [ .BI \-\-ports\-keep " count" ] [ .BI \-\-highest\-port " port" ] [ .BI \-\-wait " secs" ] [ .BI \-\-hexdump ] .\" .SH "توضیحات (DESCRIPTION)" .I darkstat یک شنودکننده بسته (packet sniffer) است که به‌صورت فرایند پس‌زمینه اجرا می‌شود، انواع مختلفی از آمارهای مربوط به استفاده از شبکه را گردآوری می‌کند، و آن‌ها را از طریق پروتکل HTTP ارائه می‌دهد. تمامی تنظیمات از طریق خط فرمان منتقل می‌شوند. .\" .SH "گزینه‌ها (OPTIONS)" .\" .TP .BI \-i " interface" ترافیک را روی رابط شبکه مشخص‌شده ضبط می‌کند. این تنها آرگومان اجباری خط فرمان است. .\" .TP .BI \-r " file" به‌جای ضبط ترافیک زنده، آن را از یک فایل ضبط .BR pcap (3) می‌خواند. این گزینه فقط برای توسعه و بنچمارک مفید است. آرگومان‌های .BI \-r و .BI \-i ناسازگار با یکدیگر هستند (مانعة‌الجمع). .\" .TP .BI \-\-snaplen " bytes" تعداد بایت‌هایی که باید از ابتدای هر بسته ضبط شود. نیازی به تعیین این گزینه ندارید؛ \fIdarkstat\fR آن را به‌طور خودکار محاسبه خواهد کرد. .\" .TP .BI \-\-pppoe از این گزینه استفاده نکنید. به‌جای آن، روی رابط تونلی که نرم‌افزار PPPoE شما ارائه می‌دهد ترافیک را ضبط کنید، برای مثال \fBtun0\fR در \fIFreeBSD\fR، یا \fBpppoe0\fR در \fIOpenBSD\fR یا \fINetBSD\fR. اگر واقعاً مجبور هستید، می‌توانید روی یک رابط اترنت شنود کنید و این آرگومان را بفرستید تا \fIdarkstat\fR فریم‌های PPPoE را رمزگشایی کرده و بقیه موارد را نادیده بگیرد. اطمینان حاصل کنید که آدرس محلی خود را نیز با استفاده از آرگومان \fB\-l\fR مشخص کرده‌اید! .\" .TP .BI \-\-syslog خطاها، هشدارها و پیام‌های پرجزئیات به‌جای \fBstderr\fR به \fBsyslog\fR (با تسهیلات daemon و اولویت debug) فرستاده خواهند شد. در برخی سیستم‌ها، این پیام‌ها به‌طور پیش‌فرض در \fB/var/log/debug\fR قرار می‌گیرند. .\" .TP .BI \-\-verbose پیام‌های اشکال‌زدایی با جزئیات بیشتر تولید می‌کند. .\" .TP .BI \-\-no\-daemon از ترمینال کنترلی جدا نشو؛ در پیش‌زمینه باقی بمان. .\" .TP .BI \-\-no\-promisc از حالت بی‌قید (promiscuous mode) برای ضبط استفاده نکن. توجه داشته باشید که ممکن است یک رابط به دلایلی خارج از کنترل \fIdarkstat\fR از قبل در حالت بی‌قید باشد، یا بعداً وارد این حالت شود. اگر این موضوع مشکل‌ساز است، از \fB\-f\fR برای تعیین یک فیلتر مناسب .BR bpf (4) استفاده کنید. .\" .TP .BI \-\-no\-dns آدرس‌های IP را به نام میزبان ترجمه نکن. این کار می‌تواند میزان مصرف حافظه را در سیستم‌های کوچک به‌میزان قابل‌توجهی کاهش دهد، زیرا یک فرایند اضافی برای وضوح نام DNS ایجاد می‌شود. .\" .TP .BI \-\-no\-macs آدرس‌های MAC را در جدول میزبان‌ها نمایش نده. .\" .TP .BI \-\-no\-lastseen زمان آخرین مشاهده را در جدول میزبان‌ها نمایش نده. .\" .TP .BI \-p " port" واسط وب را به درگاه (پورت) مشخص‌شده متصل می‌کند. مقدار پیش‌فرض 667 است. .\" .TP .BI \-b " bindaddr" واسط وب را به آدرس مشخص‌شده متصل می‌کند. حالت پیش‌فرض گوش دادن روی همه رابط‌ها است. .\" .TP .BI \-\-base " path" .RS مسیر نشانی وب پایه (Base URL) را مشخص می‌کند. این گزینه در صورتی که \fIdarkstat\fR از طریق پراکسی معکوس در دسترس باشد می‌تواند مفید باشد. برای مثال، اگر از \fImod_proxy\fR آپاچی استفاده می‌کنید و می‌خواهید از پیکربندی پیچیده با \fImod_proxy_html\fR (و \fImod_header\fR برای حذف هدر \fIAccept-Encoding\fR) اجتناب کنید، کافی است مسیر پایه را روی مقداری مانند \fIstats\fR تنظیم کرده و از پیکربندی مشابه قطعه‌کد زیر استفاده کنید: .IP ProxyPass /stats/ http://localhost:667/stats/ ProxyPassReverse /stats/ http://localhost:667/stats/ .PP مقدار پیش‌فرض \fI/\fR (یعنی ریشه) است. .RE .\" .TP .BI \-f " filter" از عبارت فیلتر مشخص‌شده هنگام ضبط ترافیک استفاده می‌کند. قواعد نگارش فیلتر فراتر از محدوده این صفحه راهنما است؛ لطفاً به مستندات .BR tcpdump (1) مراجعه کنید. .\" .TP .BI \-l " network/netmask" یک «شبکه محلی» بر اساس آدرس‌های شبکه و ماسک شبکه (netmask) تعریف می‌کند. برخلاف رفتار پیش‌فرض که فقط ترافیک به/از میزبان محلی را نمودار می‌کند، تمام ترافیک ورودی یا خروجی این شبکه روی نمودار نشان داده خواهد شد. .RS قاعده این است که اگر \fBip_addr & netmask == network\fR باشد، آن آدرس محلی در نظر گرفته می‌شود. مثال استفاده را در زیر مشاهده کنید. .RE .\" .TP .BI \-\-local\-only باعث می‌شود واسط وب تنها میزبان‌های حاضر در «شبکه محلی» را نمایش دهد. این گزینه برای استفاده هم‌زمان با آرگومان \fB\-l\fR در نظر گرفته شده است. .\" .TP .BI \-\-chroot " dir" دستور \fIdarkstat\fR را وادار می‌کند تا به دایرکتوری مشخص‌شده \fBchroot()\fR کند. بدون این آرگومان، از یک دایرکتوری پیش‌فرض استفاده می‌شود که در زمان کامپایل برنامه مشخص شده است؛ معمولاً \fI/var/empty\fR یا \fI/var/lib/empty\fR. .RS به دلایل امنیتی، این دایرکتوری باید خالی باشد و کاربری که \fIdarkstat\fR تحت نام آن اجرا می‌شود نباید دسترسی نوشتن به آن داشته باشد. با این حال، اگر قصد استفاده از \fB\-\-daylog\fR یا \fB\-\-export\fR را دارید، \fIdarkstat\fR به دسترسی نوشتن روی دایرکتوری chroot نیاز خواهد داشت. اگر نگران پیامدهای امنیتی این موضوع هستید، از هیچ قابلیتی که نیازمند دسترسی نوشتن است استفاده نکنید. .RE .\" .TP .BI \-\-user " username" دستور \fIdarkstat\fR را وادار می‌کند تا امتیازات دسترسی را به \fBuid\fR و \fBgid\fR کاربر مشخص‌شده کاهش دهد. بدون این آرگومان، از یک مقدار پیش‌فرض استفاده می‌شود که در زمان کامپایل تنظیم شده است؛ معمولاً \fBnobody\fR. .RS به دلایل امنیتی، این کاربر نباید \fBroot\fR باشد. .RE .\" .TP .BI \-\-daylog " filename" .RS آمارهای روزانه ترافیک را در فایل نام‌برده، به‌صورت نسبی نسبت به دایرکتوری chroot، ثبت می‌کند. اگر می‌خواهید از \fB\-\-daylog\fR استفاده کنید، ابتدا باید دایرکتوری \fB\-\-chroot\fR را مشخص نمایید و این دایرکتوری باید توسط کاربر \fIdarkstat\fR قابل نوشتن باشد. دایرکتوری chroot قابل نوشتن پیامدهای امنیتی دارد؛ اگر نگران این موضوع هستید، از قابلیت \fB\-\-daylog\fR استفاده نکنید. اگر آرگومان daylog مشخص نشود، هیچ‌گونه ثبت وقایعی انجام نمی‌گیرد. فرمت روزنگار (daylog) به‌صورت زیر است: localtime|time_t|bytes_in|bytes_out|pkts_in|pkts_outs خطوطی که با # شروع می‌شوند کامنت‌هایی هستند که زمان شروع و توقف ثبت را نشان می‌دهند. .RE .\" .TP .BI \-\-import " filename" هنگام شروع، یک پایگاه‌داده \fIdarkstat\fR را از فایل نام‌برده به‌صورت نسبی نسبت به دایرکتوری chroot وارد (import) می‌کند. اگر می‌خواهید از \fB\-\-import\fR استفاده کنید، ابتدا باید دایرکتوری \fB\-\-chroot\fR را مشخص نمایید. اگر وارد کردن ناموفق باشد، \fIdarkstat\fR با یک پایگاه‌داده خالی شروع به کار می‌کند. .\" .TP .BI \-\-export " filename" هنگام خاموش شدن برنامه، یا هنگام دریافت سیگنال SIGUSR1 یا SIGUSR2، پایگاه‌داده درون حافظه را به فایل نام‌برده، به‌صورت نسبی نسبت به دایرکتوری chroot صادر (export) می‌کند. اگر می‌خواهید از \fB\-\-export\fR استفاده کنید، ابتدا باید دایرکتوری \fB\-\-chroot\fR را مشخص نمایید، و این دایرکتوری باید توسط کاربر \fIdarkstat\fR قابل نوشتن باشد. دایرکتوری chroot قابل نوشتن پیامدهای امنیتی دارد — اگر نگران این موضوع هستید، از قابلیت \fB\-\-export\fR استفاده نکنید. .\" .TP .BI \-\-pidfile " filename" .RS فایلی حاوی شناسه فرایند (Process ID) دستور \fIdarkstat\fR ایجاد می‌کند. این فایل هنگام خاموش شدن تمیز برنامه حذف خواهد شد. همانند تمام فایل‌های pid، اگر \fIdarkstat\fR به‌صورت غیرعادی متوقف شود، ممکن است یک فایل pid بی‌استفاده باقی بماند. برای مثال، \fIdarkstat\fR را به این شکل اجرا کنید: .IP darkstat \-i fxp0 \-\-chroot /var/run/darkstat \-\-pidfile darkstat.pid .PP و برای متوقف کردن آن از دستور زیر استفاده کنید: .IP kill `cat /var/run/darkstat/darkstat.pid` .PP به‌طور پیش‌فرض، .BR kill (1) سیگنال SIGTERM ارسال می‌کند که باعث می‌شود \fIdarkstat\fR به‌صورت تمیز متوقف شود. .RE .\" .TP .BI \-\-hosts\-max " count" حداکثر تعداد میزبان‌هایی که در جدول میزبان‌ها نگهداری خواهند شد. این مقدار برای محدود کردن حجم داده‌های آماری نگهداری‌شده در حافظه استفاده می‌شود. مقدار .BI \-\-hosts\-max باید بزرگ‌تر از .BI \-\-hosts\-keep باشد. .\" .TP .BI \-\-hosts\-keep " count" هنگامی که جدول میزبان‌ها به مقدار .BI \-\-hosts\-max می‌رسد و ترافیکی از یک میزبان جدید دیده می‌شود، جدول میزبان‌ها پاک‌سازی شده و تنها تعداد .BI \-\-hosts\-keep از برترین میزبان‌ها بر اساس مجموع ترافیک نگه‌داشته می‌شوند. .\" .TP .BI \-\-ports\-max " count" حداکثر تعداد درگاه‌هایی که برای هر میزبان ردیابی خواهد شد. این مقدار برای محدود کردن حجم داده‌های آماری نگهداری‌شده در حافظه استفاده می‌شود. مقدار .BI \-\-ports\-max باید بزرگ‌تر از .BI \-\-ports\-keep باشد. .\" .TP .BI \-\-ports\-keep " count" هنگامی که جدول پورت‌ها پر می‌شود، این تعداد پورت حفظ شده و بقیه دور ریخته می‌شوند. .\" .TP .BI \-\-highest\-port " port" پورت‌هایی که شماره آن‌ها بیشتر از این مقدار باشد در جداول پورت‌های هر میزبان نمایش داده نخواهند شد، هرچند ترافیک آن‌ها همچنان محاسبه می‌شود. از این گزینه می‌توان برای مخفی کردن درگاه‌های موقت (ephemeral ports) استفاده کرد. به‌طور پیش‌فرض، تمام پورت‌ها ردیابی می‌شوند. .\" .TP .BI \-\-wait " secs" از این گزینه استفاده نکنید. این یک راهکار موقت برای کمک به کاربران درگیر با \fINetworkManager\fR و سیستم‌های مشابه است. .RS شما باید \fIdarkstat\fR را پس از بالا آمدن رابط شبکه شنود اجرا کنید. اگر امکان این کار را ندارید، مشخص کردن گزینه \fB\-\-wait\fR باعث می‌شود \fIdarkstat\fR تا تعداد ثانیه‌های مشخص‌شده برای آماده شدن رابط به خواب برود. مقدار صفر به معنی انتظار نامحدود است. .RE .\" .TP .BI \-\-hexdump نمایش هگزادسیمال (hex dump) از ترافیک دریافتی را نشان می‌دهد. این گزینه فقط برای اشکال‌زدایی است و گزینه‌های \fB\-\-verbose\fR و \fB\-\-no\-daemon\fR را نیز فعال می‌کند. .\" .\" -------------------------------------------------------------------- .SH "مثال‌های استفاده (USAGE EXAMPLES)" برای گردآوری آمار روی رابط .IR fxp0 : .IP darkstat \-i fxp0 .PP .\" می‌خواهیم ترافیک را روی رابط متصل به اینترنت محاسبه کنیم، اما صفحات وب را فقط به شبکه محلی خصوصی خود که در آن دارای نشانی IP برابر با 192.168.0.1 هستیم ارائه دهیم: .IP darkstat \-i fxp0 \-b 192.168.0.1 .PP .\" می‌خواهیم صفحات وب را روی درگاه استاندارد HTTP ارائه دهیم: .IP darkstat \-i fxp0 \-p 80 .PP .\" ما در شبکه کابلی Optus هستیم و نمی‌خواهیم ترافیک دائمی ARP را که دریافت می‌کنیم محاسبه کنیم: .IP darkstat \-i fxp0 \-f "not arp" .PP .\" تنها می‌خواهیم ترافیک پروتکل SSH را محاسبه کنیم: .IP darkstat \-i fxp0 \-f "port 22" .PP .\" نمی‌خواهیم ترافیک بین آدرس‌های IP داخلی محاسبه شود: .IP darkstat \-i fxp0 \-f "not (src net 192.168.0 and dst net 192.168.0)" .PP .\" (برای مرجع کامل قواعد فیلتر، به صفحه راهنمای .BR tcpdump (1) مراجعه کنید) .PP .\" ما شبکه‌ای متشکل از یک سرور دروازه (192.168.1.1) و چند ایستگاه کاری (192.168.1.2، 192.168.1.3 و غیره) داریم و می‌خواهیم تمام ترافیک ورودی و خروجی شبکه محلی را نمودار کنیم، نه فقط سرور دروازه را (که \fIdarkstat\fR روی آن اجرا می‌شود): .IP darkstat \-i fxp0 \-l 192.168.1.0/255.255.255.0 .PP .\" در برخی سیستم‌ها، نمی‌توان روی یک رابط «رمزگشایی‌شده» ترافیک را ضبط کرد و تنها می‌توان روی \fInas0\fR شنود کرد که بسته‌های کپسوله‌شده PPPoE را بازمی‌گرداند. رمزگشایی PPPoE را انجام دهید و IP محلی را دستی جایگزین کنید چون امکان تشخیص خودکار آن وجود ندارد. به ماسک شبکه 32/ دقت کنید: .IP darkstat \-i nas0 \-\-pppoe \-l 192.168.1.1/255.255.255.255 .\" .SH "سیگنال‌ها (SIGNALS)" برای خاموش کردن تمیز .IR darkstat ، یک سیگنال SIGTERM یا SIGINT به فرایند والد .I darkstat ارسال کنید. .PP ارسال سیگنال SIGUSR1 باعث می‌شود \fIdarkstat\fR پایگاه‌داده درون حافظه خود را خالی کند. اگر فایل \fB\-\-export\fR تعیین شده باشد، ابتدا پایگاه‌داده را در فایل ذخیره می‌کند. ارسال SIGUSR2 پایگاه‌داده را بدون خالی کردن آن ذخیره خواهد کرد. .PP .\" .SH "پرسش‌های متداول (FREQUENTLY ASKED QUESTIONS)" .SS هر میله روی نمودار نشان‌دهنده چند بایت است؟ نشانگر ماوس خود را روی یک میله نگه‌دارید؛ کادر راهنمایی (tooltip) ظاهر می‌شود که دقیقاً تعداد بایت‌های ورودی و خروجی آن میله را نشان می‌دهد. .\" .SS چرا برچسب / درجه‌بندی / مقیاس روی نمودارها وجود ندارد؟ چون پیاده‌سازی آن‌ها دشوار است. و انجام این کار به‌صورت \fIدرست\fR و به‌نحوی که در تمام مرورگرها کار کند، تقریباً ناممکن به نظر می‌رسد. شاید روزی برای آن تلاش کنم. در این میان، وصله‌ها با کمال میل پذیرفته می‌شوند. .\" .SS چرا نمودارها خالی هستند؟ همه میله‌ها صفر هستند. نمودارها فقط ترافیک ورودی/خروجی میزبان محلی را نشان می‌دهند که با دریافت آدرس IP رابطی که روی آن شنود می‌کنید تعیین می‌شود. می‌توانید از آرگومان \fB\-l\fR برای جایگزینی آدرس محلی به منظور مقاصد محاسباتی استفاده کنید. همچنین می‌توانید با تعیین یک ماسک شبکه مناسب، از آن برای انجام محاسبات ترافیک یک زیرشبکه کامل استفاده نمایید. .\" .SH "همچنین ببینید (SEE ALSO)" .BR tcpdump (1) .\" .SH "تاریخچه (HISTORY)" دستور .I darkstat در سال 2001 نوشته شد، که عمدتاً نتیجه اعمال سقف ترافیک ماهانه ۳ گیگابایتی توسط یکی از ارائه‌دهندگان اینترنت کابلی استرالیا بود. .\" .SH "نویسندگان (AUTHORS)" امیل میکولیچ (Emil Mikulic) و دیگران. (فایل AUTHORS را ببینید) .\" .SH "وب‌سایت (WEBSITE)" https://unix4lyfe.org/darkstat