.TH "xdp-filter" "8" "SEPTEMBER 5, 2022" "V1.6.3" "A simple XDP-powered packet filter" .SH "نام (NAME)" xdp-filter \- فیلتر بسته ساده مبتنی بر XDP .SH "خلاصه دستور (SYNOPSIS)" .PP ابزار XDP-filter یک ابزار فیلتر کردن بسته‌ها با استفاده از XDP است. این ابزار عمداً ساده طراحی شده و بنابراین قابلیت‌های تطبیق مشابهی با مثلاً netfilter ندارد. در عوض، به لطف XDP، می‌تواند به نرخ‌های دورریزی (drop rate) بسیار بالایی دست یابد: ده‌ها میلیون بسته در ثانیه روی یک هسته پردازنده. .SS "اجرای xdp-filter (Running xdp-filter)" .PP نحو اجرای xdp-filter به صورت زیر است: .RS .nf \fCxdp-filter COMMAND [options] Where COMMAND can be one of: load - load xdp-filter on an interface unload - unload xdp-filter from an interface port - add a port to the filter list ip - add an IP address to the filter list ether - add an Ethernet MAC address to the filter list status - show current xdp-filter status poll - poll statistics output help - show the list of available commands \fP .fi .RE .PP هر دستور و گزینه‌های آن در ادامه توضیح داده شده است. همچنین می‌توانید از \fIxdp\-filter COMMAND \-\-help\fP برای مشاهده گزینه‌های هر دستور استفاده کنید. .SH "دستور LOAD (The LOAD command)" .PP برای استفاده از \fIxdp\-filter\fP، ابتدا باید روی یک رابط شبکه بارگذاری شود. این کار با دستور \fIload\fP انجام می‌شود که نام رابط شبکه را به عنوان یک پارامتر می‌گیرد و به صورت اختیاری اجازه مشخص کردن ویژگی‌هایی را می‌دهد که باید گنجانده شوند. به طور پیش‌فرض تمام ویژگی‌ها بارگذاری می‌شوند، اما لغو انتخاب برخی ویژگی‌ها می‌تواند سرعت تطبیق بسته‌ها را بالا ببرد و کارایی را به میزان قابل توجهی افزایش دهد. .PP نحو دستور \fIload\fP به صورت زیر است: .PP \fIxdp\-filter load [options] \fP .PP که در آن \fI\fP نام رابط شبکه برای بارگذاری \fIxdp\-filter\fP روی آن است و باید مشخص شود. گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-m, --mode " .PP مشخص می‌کند که برنامه XDP در چه حالتی باید بارگذاری شود. مقادیر معتبر عبارتند از 'native' که حالت پیش‌فرض XDP درون درایور است، 'skb' که از به اصطلاح \fIحالت skb\fP (معروف به \fIXDP عمومی یا generic XDP\fP) استفاده می‌کند، یا 'hw' که باعث برون‌سپاری برنامه به سخت‌افزار می‌شود. .SS "-p, --policy " .PP این گزینه سیاستی را تنظیم می‌کند که \fIxdp\-filter\fP روی بسته‌هایی که با هیچ‌یک از قوانین فیلتر تطبیق ندارند اعمال می‌کند. مقدار پیش‌فرض \fIallow\fP است که در آن به بسته‌های فاقد تطبیق با قوانین اجازه عبور داده می‌شود. گزینه دیگر \fIdeny\fP است که در آن \fBتمام\fP بسته‌ها دور ریخته می‌شوند \fBمگر\fP مواردی که با گزینه‌های فیلتر مطابقت داشته باشند. .PP نمی‌توان \fIxdp\-filter\fP را به طور هم‌زمان در هر دو حالت خط‌مشی \fIdeny\fP و \fIallow\fP روی سیستم بارگذاری کرد. توجه داشته باشید که بارگذاری \fIxdp\-filter\fP در حالت \fIdeny\fP تمام ترافیک رابط شبکه را تا زمان نصب قوانین مناسب allow دور خواهد ریخت؛ بنابراین برای جلوگیری از قطع دسترسی به سیستم از راه دور، دقت لازم است. .SS "-f, --features " .PP از این گزینه برای انتخاب ویژگی‌هایی که باید هنگام بارگذاری \fIxdp\-filter\fP گنجانده شوند استفاده کنید. مقدار پیش‌فرض، بارگذاری تمام ویژگی‌های موجود است. برای انتخاب ویژگی‌های مجزا، یک یا چند مورد از گزینه‌های زیر را مشخص کنید: .IP \(bu 4 \fBtcp\fP: پشتیبانی از فیلتر کردن بر اساس شماره پورت TCP .IP \(bu 4 \fBudp\fP: پشتیبانی از فیلتر کردن بر اساس شماره پورت UDP .IP \(bu 4 \fBipv6\fP: پشتیبانی از فیلتر کردن بر اساس نشانی‌های IPv6 .IP \(bu 4 \fBipv4\fP: پشتیبانی از فیلتر کردن بر اساس نشانی‌های IPv4 .IP \(bu 4 \fBethernet\fP: پشتیبانی از فیلتر کردن بر اساس نشانی‌های MAC اترنت .PP چندین ویژگی را با جدا کردن آن‌ها با کاما مشخص کنید؛ به عنوان مثال: \fItcp,udp,ipv6\fP. .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "دستور UNLOAD (The UNLOAD command)" .PP دستور \fIunload\fP برنامه \fIxdp\-filter\fP را از یک (یا تمام) رابط‌های شبکه تخلیه کرده و وضعیت برنامه را پاکسازی می‌کند. .PP نحو دستور \fIunload\fP به صورت زیر است: .PP \fIxdp\-filter unload [options] \fP .PP که در آن \fI\fP نام رابط شبکه برای تخلیه \fIxdp\-filter\fP از آن است و باید مشخص شود مگر اینکه گزینه \fB\-\-all\fP به کار رود. گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-a, --all" .PP این گزینه را برای حذف \fIxdp\-filter\fP از تمام رابط‌های شبکه‌ای که روی آن‌ها بارگذاری شده است مشخص کنید. در صورت تعیین این گزینه، نیازی به درج \fI\fP نیست. .PP این گزینه همچنین می‌تواند برای پاکسازی تمام وضعیت‌های \fIxdp\-filter\fP در صورتی که برنامه(های) XDP با روش‌های دیگری تخلیه شده باشند استفاده شود. .SS "-k, --keep-maps" .PP این گزینه را برای جلوگیری از پاک شدن وضعیت نگاشت‌های برنامه توسط \fIxdp\-filter\fP مشخص کنید. به طور پیش‌فرض، تمام نگاشت‌های BPF که دیگر مورد نیاز هیچ برنامه بارگذاری‌شده‌ای نیستند حذف می‌شوند. با این حال، این کار محتویات نگاشت‌ها (قوانین فیلتر) را نیز حذف می‌کند؛ بنابراین می‌توان از این گزینه برای نگه‌داشتن نگاشت‌ها استفاده کرد تا قوانین تا زمان بارگذاری مجدد \fIxdp\-filter\fP باقی بمانند. .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "دستور PORT (The PORT command)" .PP از دستور \fIport\fP برای افزودن یک پورت TCP یا UDP به فهرست تطبیق \fIxdp\-filter\fP استفاده کنید. برای کارکرد این دستور، \fIxdp\-filter\fP باید با ویژگی \fBudp\fP یا \fBtcp\fP (یا هر دو) حداقل روی یک رابط شبکه بارگذاری شده باشد. .PP نحو دستور \fIport\fP به صورت زیر است: .PP \fIxdp\-filter port [options] \fP .PP که در آن \fI\fP شماره پورت برای افزودن است (یا حذف در صورتی که \fB\-\-remove\fP مشخص شده باشد). گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-r, --remove" .PP حذف پورت به جای افزودن آن. .SS "-m, --mode " .PP انتخاب حالت فیلتر کردن. گزینه‌های معتبر \fBsrc\fP و \fBdst\fP هستند که هر دو می‌توانند به صورت \fIsrc,dst\fP مشخص شوند. اگر \fBsrc\fP مشخص شود، شماره پورت به عنوان تطبیق \fIپورت مبدا\fP اضافه خواهد شد؛ در حالی که اگر \fBdst\fP مشخص شود، شماره پورت به عنوان تطبیق \fIپورت مقصد\fP افزوده می‌شود. اگر هر دو مشخص شوند، در صورتی که پورت مبدا \fBیا\fP مقصد بسته برابر با شماره پورت مشخص‌شده باشد، تطبیق داده خواهد شد. .SS "-p, --proto " .PP یکی (یا هر دو) از پروتکل‌های \fBudp\fP و/یا \fBtcp\fP را به ترتیب برای تطبیق با پورت‌های UDP یا TCP مشخص کنید. .SS "-s, --status" .PP اگر این گزینه مشخص شود، پس از درج شماره پورت، فهرست فعلی پورت‌های تطبیق‌یافته چاپ خواهد شد. در غیر این صورت، چیزی چاپ نمی‌شود. .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "دستور IP (The IP command)" .PP از دستور \fIip\fP برای افزودن یک نشانی IPv6 یا IPv4 به فهرست تطبیق \fIxdp\-filter\fP استفاده کنید. .PP نحو دستور \fIip\fP به صورت زیر است: .PP \fIxdp\-filter ip [options] \fP .PP که در آن \fI\fP نشانی IP برای افزودن است (یا حذف در صورتی که \fB\-\-remove\fP مشخص شده باشد). نشانی‌های IPv4 یا IPv6 را می‌توان مشخص کرد، اما \fIxdp\-filter\fP باید با ویژگی‌های متناظر (\fBipv4\fP و \fBipv6\fP به ترتیب) بارگذاری شده باشد. گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-r, --remove" .PP حذف نشانی IP به جای افزودن آن. .SS "-m, --mode " .PP انتخاب حالت فیلتر کردن. گزینه‌های معتبر \fBsrc\fP و \fBdst\fP هستند که هر دو می‌توانند به صورت \fIsrc,dst\fP مشخص شوند. اگر \fBsrc\fP مشخص شود، نشانی IP به عنوان تطبیق \fIIP مبدا\fP اضافه خواهد شد؛ در حالی که اگر \fBdst\fP مشخص شود، نشانی IP به عنوان تطبیق \fIIP مقصد\fP افزوده می‌شود. اگر هر دو مشخص شوند، در صورتی که IP مبدا \fBیا\fP مقصد بسته برابر با نشانی IP مشخص‌شده باشد، تطبیق داده خواهد شد. .SS "-s, --status" .PP اگر این گزینه مشخص شود، پس از درج نشانی IP، فهرست فعلی IPهای تطبیق‌یافته چاپ خواهد شد. در غیر این صورت، چیزی چاپ نمی‌شود. .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "دستور ETHER (The ETHER command)" .PP از دستور \fIether\fP برای افزودن یک نشانی MAC اترنت به فهرست تطبیق \fIxdp\-filter\fP استفاده کنید. برای کارکرد این دستور، \fIxdp\-filter\fP باید حداقل روی یک رابط شبکه با ویژگی \fBethernet\fP بارگذاری شده باشد. .PP نحو دستور \fIether\fP به صورت زیر است: .PP \fIxdp\-filter ether [options] \fP .PP که در آن \fI\fP نشانی MAC برای افزودن است (یا حذف در صورتی که \fB\-\-remove\fP مشخص شده باشد). گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-r, --remove" .PP حذف نشانی MAC به جای افزودن آن. .SS "-m, --mode " .PP انتخاب حالت فیلتر کردن. گزینه‌های معتبر \fBsrc\fP و \fBdst\fP هستند که هر دو می‌توانند به صورت \fIsrc,dst\fP مشخص شوند. اگر \fBsrc\fP مشخص شود، نشانی MAC به عنوان تطبیق \fIMAC مبدا\fP اضافه خواهد شد؛ در حالی که اگر \fBdst\fP مشخص شود، نشانی MAC به عنوان تطبیق \fIMAC مقصد\fP افزوده می‌شود. اگر هر دو مشخص شوند، در صورتی که MAC مبدا \fBیا\fP مقصد بسته برابر با نشانی MAC مشخص‌شده باشد، تطبیق داده خواهد شد. .SS "-s, --status" .PP اگر این گزینه مشخص شود، پس از درج نشانی MAC، فهرست فعلی MACهای تطبیق‌یافته چاپ خواهد شد. در غیر این صورت، چیزی چاپ نمی‌شود. .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "دستور STATUS (The STATUS command)" .PP دستور \fIstatus\fP وضعیت فعلی \fIxdp\-filter\fP را چاپ می‌کند: روی کدام رابط‌های شبکه بارگذاری شده است، فهرست فعلی قوانین، و آمارهایی درباره تعداد کل بسته‌های پردازش‌شده و تعداد دفعات اعمال هر قانون. .PP نحو دستور \fIstatus\fP به صورت زیر است: .PP \fIxdp\-filter status [options]\fP .PP گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "دستور POLL (The POLL command)" .PP دستور \fIpoll\fP به صورت دوره‌ای نگاشت آماری \fIxdp\-filter\fP را پایش کرده و تعداد کل بسته‌ها و بایت‌های پردازش‌شده توسط \fIxdp\-filter\fP، و همچنین تعداد پردازش‌شده در آخرین بازه پایش را به صورت بسته (و بایت) در ثانیه چاپ می‌کند. این دستور می‌تواند برای بررسی عملکرد \fIxdp\-filter\fP و مقایسه کارایی مجموعه‌های مختلف ویژگی‌های قابل انتخاب با پارامتر \fIload\fP استفاده شود. .PP نحو دستور \fIpoll\fP به صورت زیر است: .PP \fIxdp\-filter poll [options]\fP .PP گزینه‌های پشتیبانی‌شده عبارتند از: .SS "-i, --interval " .PP بازه پایش، به میلی‌ثانیه. مقدار پیش‌فرض ۱۰۰۰ (۱ ثانیه) است. .SS "-v, --verbose" .PP فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. .SS "-h, --help" .PP نمایش خلاصه‌ای از گزینه‌های موجود. .SH "مثال‌ها (EXAMPLES)" .PP برای فیلتر کردن تمام بسته‌های ورودی به پورت 80 روی eth0، دستورات زیر را وارد کنید: .RS .nf \fC# xdp-filter load eth0 -f tcp,udp # xdp-filter port 80 \fP .fi .RE .PP برای فیلتر کردن تمام بسته‌ها \fBبه جز\fP بسته‌های ارسالی از نشانی IP برابر با fc00:dead:cafe::1، دستورات زیر را وارد کنید (مراقب باشید، این کار می‌تواند دسترسی از راه دور شما را قطع کند!): .RS .nf \fC# xdp-filter load eth0 -f ipv6 -p deny # xdp-filter ip fc00:dead:cafe::1 -m src \fP .fi .RE .PP برای مجاز دانستن بسته‌ها از \fBهر یک\fP از نشانی‌های IP برابر با fc00:dead:cafe::1 \fBیا\fP ورودی به پورت 22، دستورات زیر را وارد کنید (مراقب باشید، این کار می‌تواند دسترسی از راه دور شما را قطع کند!): .RS .nf \fC# xdp-filter load eth0 -f ipv6,tcp -p deny # xdp-filter port 22 # xdp-filter ip fc00:dead:cafe::1 -m src \fP .fi .RE .SH "اشکالات (BUGS)" .PP لطفاً هرگونه اشکال را در گیت‌هاب گزارش دهید: \fIhttps://github.com/xdp-project/xdp-tools/issues\fP .SH "نویسندگان (AUTHORS)" .PP برنامه xdp-filter توسط Toke Høiland-Jørgensen و Jesper Dangaard Brouer نوشته شده است. این صفحه راهنما توسط Toke Høiland-Jørgensen نوشته شده است.