xdp-filter(8) A simple XDP-powered packet filter xdp-filter(8) نام (NAME) xdp-filter - فیلتر بسته ساده مبتنی بر XDP خلاصه دستور (SYNOPSIS) ابزار XDP-filter یک ابزار فیلتر کردن بسته‌ها با استفاده از XDP است. این ابزار عمداً ساده طراحی شده و بنابراین قابلیت‌های تطبیق مشابهی با مثلاً netfilter ندارد. در عوض، به لطف XDP، می‌تواند به نرخ‌های دورریزی (drop rate) بسیار بالایی دست یابد: ده‌ها میلیون بسته در ثانیه روی یک هسته پردازنده. اجرای xdp-filter (Running xdp-filter) نحو اجرای xdp-filter به صورت زیر است: xdp-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 هر دستور و گزینه‌های آن در ادامه توضیح داده شده است. همچنین می‌توانید از xdp-filter COMMAND --help برای مشاهده گزینه‌های هر دستور استفاده کنید. دستور LOAD (The LOAD command) برای استفاده از xdp-filter، ابتدا باید روی یک رابط شبکه بارگذاری شود. این کار با دستور load انجام می‌شود که نام رابط شبکه را به عنوان یک پارامتر می‌گیرد و به صورت اختیاری اجازه مشخص کردن ویژگی‌هایی را می‌دهد که باید گنجانده شوند. به طور پیش‌فرض تمام ویژگی‌ها بارگذاری می‌شوند، اما لغو انتخاب برخی ویژگی‌ها می‌تواند سرعت تطبیق بسته‌ها را بالا ببرد و کارایی را به میزان قابل توجهی افزایش دهد. نحو دستور load به صورت زیر است: xdp-filter load [options] که در آن نام رابط شبکه برای بارگذاری xdp-filter روی آن است و باید مشخص شود. گزینه‌های پشتیبانی‌شده عبارتند از: -m, --mode مشخص می‌کند که برنامه XDP در چه حالتی باید بارگذاری شود. مقادیر معتبر عبارتند از 'native' که حالت پیش‌فرض XDP درون درایور است، 'skb' که از به اصطلاح حالت skb (معروف به XDP عمومی یا generic XDP) استفاده می‌کند، یا 'hw' که باعث برون‌سپاری برنامه به سخت‌افزار می‌شود. -p, --policy این گزینه سیاستی را تنظیم می‌کند که xdp-filter روی بسته‌هایی که با هیچ‌یک از قوانین فیلتر تطبیق ندارند اعمال می‌کند. مقدار پیش‌فرض allow است که در آن به بسته‌های فاقد تطبیق با قوانین اجازه عبور داده می‌شود. گزینه دیگر deny است که در آن تمام بسته‌ها دور ریخته می‌شوند مگر مواردی که با گزینه‌های فیلتر مطابقت داشته باشند. نمی‌توان xdp-filter را به طور هم‌زمان در هر دو حالت خط‌مشی deny و allow روی سیستم بارگذاری کرد. توجه داشته باشید که بارگذاری xdp-filter در حالت deny تمام ترافیک رابط شبکه را تا زمان نصب قوانین مناسب allow دور خواهد ریخت؛ بنابراین برای جلوگیری از قطع دسترسی به سیستم از راه دور، دقت لازم است. -f, --features از این گزینه برای انتخاب ویژگی‌هایی که باید هنگام بارگذاری xdp-filter گنجانده شوند استفاده کنید. مقدار پیش‌فرض، بارگذاری تمام ویژگی‌های موجود است. برای انتخاب ویژگی‌های مجزا، یک یا چند مورد از گزینه‌های زیر را مشخص کنید: • tcp: پشتیبانی از فیلتر کردن بر اساس شماره پورت TCP • udp: پشتیبانی از فیلتر کردن بر اساس شماره پورت UDP • ipv6: پشتیبانی از فیلتر کردن بر اساس نشانی‌های IPv6 • ipv4: پشتیبانی از فیلتر کردن بر اساس نشانی‌های IPv4 • ethernet: پشتیبانی از فیلتر کردن بر اساس نشانی‌های MAC اترنت چندین ویژگی را با جدا کردن آن‌ها با کاما مشخص کنید؛ به عنوان مثال: tcp,udp,ipv6. -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. دستور UNLOAD (The UNLOAD command) دستور unload برنامه xdp-filter را از یک (یا تمام) رابط‌های شبکه تخلیه کرده و وضعیت برنامه را پاکسازی می‌کند. نحو دستور unload به صورت زیر است: xdp-filter unload [options] که در آن نام رابط شبکه برای تخلیه xdp-filter از آن است و باید مشخص شود مگر اینکه گزینه --all به کار رود. گزینه‌های پشتیبانی‌شده عبارتند از: -a, --all این گزینه را برای حذف xdp-filter از تمام رابط‌های شبکه‌ای که روی آن‌ها بارگذاری شده است مشخص کنید. در صورت تعیین این گزینه، نیازی به درج نیست. این گزینه همچنین می‌تواند برای پاکسازی تمام وضعیت‌های xdp-filter در صورتی که برنامه(های) XDP با روش‌های دیگری تخلیه شده باشند استفاده شود. -k, --keep-maps این گزینه را برای جلوگیری از پاک شدن وضعیت نگاشت‌های برنامه توسط xdp-filter مشخص کنید. به طور پیش‌فرض، تمام نگاشت‌های BPF که دیگر مورد نیاز هیچ برنامه بارگذاری‌شده‌ای نیستند حذف می‌شوند. با این حال، این کار محتویات نگاشت‌ها (قوانین فیلتر) را نیز حذف می‌کند؛ بنابراین می‌توان از این گزینه برای نگه‌داشتن نگاشت‌ها استفاده کرد تا قوانین تا زمان بارگذاری مجدد xdp-filter باقی بمانند. -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. دستور PORT (The PORT command) از دستور port برای افزودن یک پورت TCP یا UDP به فهرست تطبیق xdp-filter استفاده کنید. برای کارکرد این دستور، xdp-filter باید با ویژگی udp یا tcp (یا هر دو) حداقل روی یک رابط شبکه بارگذاری شده باشد. نحو دستور port به صورت زیر است: xdp-filter port [options] که در آن شماره پورت برای افزودن است (یا حذف در صورتی که --remove مشخص شده باشد). گزینه‌های پشتیبانی‌شده عبارتند از: -r, --remove حذف پورت به جای افزودن آن. -m, --mode انتخاب حالت فیلتر کردن. گزینه‌های معتبر src و dst هستند که هر دو می‌توانند به صورت src,dst مشخص شوند. اگر src مشخص شود، شماره پورت به عنوان تطبیق پورت مبدا اضافه خواهد شد؛ در حالی که اگر dst مشخص شود، شماره پورت به عنوان تطبیق پورت مقصد افزوده می‌شود. اگر هر دو مشخص شوند، در صورتی که پورت مبدا یا مقصد بسته برابر با شماره پورت مشخص‌شده باشد، تطبیق داده خواهد شد. -p, --proto یکی (یا هر دو) از پروتکل‌های udp و/یا tcp را به ترتیب برای تطبیق با پورت‌های UDP یا TCP مشخص کنید. -s, --status اگر این گزینه مشخص شود، پس از درج شماره پورت، فهرست فعلی پورت‌های تطبیق‌یافته چاپ خواهد شد. در غیر این صورت، چیزی چاپ نمی‌شود. -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. دستور IP (The IP command) از دستور ip برای افزودن یک نشانی IPv6 یا IPv4 به فهرست تطبیق xdp-filter استفاده کنید. نحو دستور ip به صورت زیر است: xdp-filter ip [options] که در آن نشانی IP برای افزودن است (یا حذف در صورتی که --remove مشخص شده باشد). نشانی‌های IPv4 یا IPv6 را می‌توان مشخص کرد، اما xdp-filter باید با ویژگی‌های متناظر (ipv4 و ipv6 به ترتیب) بارگذاری شده باشد. گزینه‌های پشتیبانی‌شده عبارتند از: -r, --remove حذف نشانی IP به جای افزودن آن. -m, --mode انتخاب حالت فیلتر کردن. گزینه‌های معتبر src و dst هستند که هر دو می‌توانند به صورت src,dst مشخص شوند. اگر src مشخص شود، نشانی IP به عنوان تطبیق IP مبدا اضافه خواهد شد؛ در حالی که اگر dst مشخص شود، نشانی IP به عنوان تطبیق IP مقصد افزوده می‌شود. اگر هر دو مشخص شوند، در صورتی که IP مبدا یا مقصد بسته برابر با نشانی IP مشخص‌شده باشد، تطبیق داده خواهد شد. -s, --status اگر این گزینه مشخص شود، پس از درج نشانی IP، فهرست فعلی IPهای تطبیق‌یافته چاپ خواهد شد. در غیر این صورت، چیزی چاپ نمی‌شود. -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. دستور ETHER (The ETHER command) از دستور ether برای افزودن یک نشانی MAC اترنت به فهرست تطبیق xdp-filter استفاده کنید. برای کارکرد این دستور، xdp-filter باید حداقل روی یک رابط شبکه با ویژگی ethernet بارگذاری شده باشد. نحو دستور ether به صورت زیر است: xdp-filter ether [options] که در آن نشانی MAC برای افزودن است (یا حذف در صورتی که --remove مشخص شده باشد). گزینه‌های پشتیبانی‌شده عبارتند از: -r, --remove حذف نشانی MAC به جای افزودن آن. -m, --mode انتخاب حالت فیلتر کردن. گزینه‌های معتبر src و dst هستند که هر دو می‌توانند به صورت src,dst مشخص شوند. اگر src مشخص شود، نشانی MAC به عنوان تطبیق MAC مبدا اضافه خواهد شد؛ در حالی که اگر dst مشخص شود، نشانی MAC به عنوان تطبیق MAC مقصد افزوده می‌شود. اگر هر دو مشخص شوند، در صورتی که MAC مبدا یا مقصد بسته برابر با نشانی MAC مشخص‌شده باشد، تطبیق داده خواهد شد. -s, --status اگر این گزینه مشخص شود، پس از درج نشانی MAC، فهرست فعلی MACهای تطبیق‌یافته چاپ خواهد شد. در غیر این صورت، چیزی چاپ نمی‌شود. -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. دستور STATUS (The STATUS command) دستور status وضعیت فعلی xdp-filter را چاپ می‌کند: روی کدام رابط‌های شبکه بارگذاری شده است، فهرست فعلی قوانین، و آمارهایی درباره تعداد کل بسته‌های پردازش‌شده و تعداد دفعات اعمال هر قانون. نحو دستور status به صورت زیر است: xdp-filter status [options] گزینه‌های پشتیبانی‌شده عبارتند از: -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. دستور POLL (The POLL command) دستور poll به صورت دوره‌ای نگاشت آماری xdp-filter را پایش کرده و تعداد کل بسته‌ها و بایت‌های پردازش‌شده توسط xdp-filter، و همچنین تعداد پردازش‌شده در آخرین بازه پایش را به صورت بسته (و بایت) در ثانیه چاپ می‌کند. این دستور می‌تواند برای بررسی عملکرد xdp-filter و مقایسه کارایی مجموعه‌های مختلف ویژگی‌های قابل انتخاب با پارامتر load استفاده شود. نحو دستور poll به صورت زیر است: xdp-filter poll [options] گزینه‌های پشتیبانی‌شده عبارتند از: -i, --interval بازه پایش، به میلی‌ثانیه. مقدار پیش‌فرض ۱۰۰۰ (۱ ثانیه) است. -v, --verbose فعال‌سازی گزارش‌گیری اشکال‌زدایی. درج دوباره این گزینه جزئیات بیشتری ارائه می‌دهد. -h, --help نمایش خلاصه‌ای از گزینه‌های موجود. مثال‌ها (EXAMPLES) برای فیلتر کردن تمام بسته‌های ورودی به پورت 80 روی eth0، دستورات زیر را وارد کنید: # xdp-filter load eth0 -f tcp,udp # xdp-filter port 80 برای فیلتر کردن تمام بسته‌ها به جز بسته‌های ارسالی از نشانی IP برابر با fc00:dead:cafe::1، دستورات زیر را وارد کنید (مراقب باشید، این کار می‌تواند دسترسی از راه دور شما را قطع کند!): # xdp-filter load eth0 -f ipv6 -p deny # xdp-filter ip fc00:dead:cafe::1 -m src برای مجاز دانستن بسته‌ها از هر یک از نشانی‌های IP برابر با fc00:dead:cafe::1 یا ورودی به پورت 22، دستورات زیر را وارد کنید (مراقب باشید، این کار می‌تواند دسترسی از راه دور شما را قطع کند!): # xdp-filter load eth0 -f ipv6,tcp -p deny # xdp-filter port 22 # xdp-filter ip fc00:dead:cafe::1 -m src اشکالات (BUGS) لطفاً هرگونه اشکال را در گیت‌هاب گزارش دهید: https://github.com/xdp- project/xdp-tools/issues نویسندگان (AUTHORS) برنامه xdp-filter توسط Toke Høiland-Jørgensen و Jesper Dangaard Brouer نوشته شده است. این صفحه راهنما توسط Toke Høiland-Jørgensen نوشته شده است. V1.6.3 September 5, 2022 xdp-filter(8)