.\" Man page written by Jozsef Kadlecsik .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; if not, write to the Free Software .\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. .TH "IPSET" "8" "Jun 25, 2015" "Jozsef Kadlecsik" "" .SH "نام (NAME)" ipset \- ابزار مدیریت مجموعه‌های IP (IP sets) .SH "خلاصه دستور (SYNOPSIS)" \fBipset\fR [ \fIOPTIONS\fR ] \fICOMMAND\fR [ \fICOMMAND\-OPTIONS\fR ] .PP COMMANDS := { \fBcreate\fR | \fBadd\fR | \fBdel\fR | \fBtest\fR | \fBdestroy\fR | \fBlist\fR | \fBsave\fR | \fBrestore\fR | \fBflush\fR | \fBrename\fR | \fBswap\fR | \fBhelp\fR | \fBversion\fR | \fB\-\fR } .PP \fIOPTIONS\fR := { \fB\-exist\fR | \fB\-output\fR { \fBplain\fR | \fBsave\fR | \fBxml\fR } | \fBjson\fR } | \fB\-quiet\fR | \fB\-resolve\fR | \fB\-sorted\fR | \fB\-name\fR | \fB\-terse\fR | \fB\-file\fR \fIfilename\fR } .PP \fBipset\fR \fBcreate\fR \fISETNAME\fR \fITYPENAME\fR [ \fICREATE\-OPTIONS\fR ] .PP \fBipset\fR \fBadd\fR \fISETNAME\fR \fIADD\-ENTRY\fR [ \fIADD\-OPTIONS\fR ] .PP \fBipset\fR \fBdel\fR \fISETNAME\fR \fIDEL\-ENTRY\fR [ \fIDEL\-OPTIONS\fR ] .PP \fBipset\fR \fBtest\fR \fISETNAME\fR \fITEST\-ENTRY\fR [ \fITEST\-OPTIONS\fR ] .PP \fBipset\fR \fBdestroy\fR [ \fISETNAME\fR ] .PP \fBipset\fR \fBlist\fR [ \fISETNAME\fR ] .PP \fBipset\fR \fBsave\fR [ \fISETNAME\fR ] .PP \fBipset\fR \fBrestore\fR .PP \fBipset\fR \fBflush\fR [ \fISETNAME\fR ] .PP \fBipset\fR \fBrename\fR \fISETNAME\-FROM\fR \fISETNAME\-TO\fR .PP \fBipset\fR \fBswap\fR \fISETNAME\-FROM\fR \fISETNAME\-TO\fR .PP \fBipset\fR \fBhelp\fR [ \fITYPENAME\fR ] .PP \fBipset\fR \fBversion\fR .PP \fBipset\fR \fB\-\fR .SH "توضیحات (DESCRIPTION)" دستور \fBipset\fR برای راه‌اندازی، نگهداری و بررسی مجموعه‌های IP (موسوم به IP sets) در هسته لینوکس به کار می‌رود. بسته به نوع مجموعه، یک مجموعه IP می‌تواند آدرس‌های IP(v4/v6)، شماره پورت‌های (TCP/UDP)، جفت‌های آدرس IP و MAC، جفت‌های آدرس IP و شماره پورت و موارد دیگر را در خود ذخیره کند. تعاریف انواع مجموعه را در ادامه مشاهده کنید. .PP تطابق‌ها و اهداف در \fBIptables\fR که به مجموعه‌ها ارجاع می‌دهند، ارجاعاتی (references) ایجاد می‌کنند که از مجموعه‌های مشخص‌شده در هسته محافظت می‌نمایند. تا زمانی که حتی یک ارجاع به یک مجموعه اشاره داشته باشد، آن مجموعه را نمی‌توان حذف کرد (destroy). .SH "گزینه‌ها (OPTIONS)" گزینه‌هایی که توسط \fBipset\fR شناسایی می‌شوند را می‌توان به چند گروه مختلف تقسیم کرد. .SS "دستورات (COMMANDS)" این گزینه‌ها عملیات مورد نظر برای اجرا را مشخص می‌کنند. در خط فرمان تنها یکی از آن‌ها را می‌توان مشخص کرد، مگر اینکه در زیر خلاف آن ذکر شده باشد. برای نسخه کامل نام دستورات، تنها کافی است به اندازه‌ای از حروف استفاده کنید که \fBipset\fR بتواند آن را از سایر دستورات متمایز کند. تجزیه‌کننده \fBipset\fR هنگام جستجو برای کوتاه‌ترین تطابق در نام‌های بلند دستورات، از ترتیبی که در اینجا آمده پیروی می‌کند. .TP \fBn\fP, \fBcreate\fP \fISETNAME\fP \fITYPENAME\fP [ \fICREATE\-OPTIONS\fP ] ایجاد یک مجموعه مشخص‌شده با setname و نوع تعیین‌شده (typename). ممکن است نوع مجموعه به گزینه‌های اختصاصی خود نیاز داشته باشد. اگر گزینه \fB\-exist\fR مشخص شود، \fBipset\fR از خطایی که در صورت وجود داشتن مجموعه‌ای با همان نام و پارامترهای ساخت یکسان رخ می‌دهد، صرف‌نظر می‌کند. .TP \fBadd\fP \fISETNAME\fP \fIADD\-ENTRY\fP [ \fIADD\-OPTIONS\fP ] افزودن یک مدخل معین به مجموعه. اگر گزینه \fB\-exist\fR مشخص شده باشد، \fBipset\fR در صورتی که مدخل از قبل به مجموعه افزوده شده باشد، از خطا چشم‌پوشی می‌کند. .TP \fBdel\fP \fISETNAME\fP \fIDEL\-ENTRY\fP [ \fIDEL\-OPTIONS\fP ] حذف یک مدخل از مجموعه. اگر گزینه \fB\-exist\fR مشخص شده باشد و مدخل در مجموعه وجود نداشته باشد (شاید قبلاً منقضی شده باشد)، از اجرای دستور چشم‌پوشی می‌شود. .TP \fBtest\fP \fISETNAME\fP \fITEST\-ENTRY\fP [ \fITEST\-OPTIONS\fP ] بررسی وجود یک مدخل در مجموعه. در صورتی که مدخل آزموده‌شده در مجموعه وجود داشته باشد وضعیت خروج صفر، و اگر در مجموعه یافت نشود مقداری غیرصفر خواهد بود. .TP \fBx\fP, \fBdestroy\fP [ \fISETNAME\fP ] نابودسازی (حذف) مجموعه مشخص‌شده، یا تمام مجموعه‌ها در صورتی که نامی ارائه نشده باشد. .PP اگر مجموعه دارای ارجاع (reference) باشد، هیچ عملیاتی انجام نمی‌شود و هیچ مجموعه‌ای حذف نخواهد شد. .TP \fBlist\fP [ \fISETNAME\fP ] [ \fIOPTIONS\fP ] فهرست کردن داده‌های هدر و مدخل‌های مجموعه مشخص‌شده، یا برای تمام مجموعه‌ها در صورتی که نامی ارائه نشده باشد. گزینه \fB\-resolve\fP را می‌توان برای اجبار به وضوح‌یابی نام‌ها (که ممکن است کند باشد) به کار برد. هنگامی که گزینه \fB\-sorted\fP داده شود، مدخل‌ها به صورت مرتب‌شده فهرست یا ذخیره می‌شوند (که ممکن است کند باشد). گزینه \fB\-output\fR می‌تواند برای کنترل قالب نمایش خروجی استفاده شود: \fBplain\fR، \fBsave\fR، \fBxml\fR یا \fBjson\fR. (حالت پیش‌فرض \fBplain\fR است). اگر گزینه \fB\-name\fR مشخص شود، فقط نام مجموعه‌های موجود فهرست می‌شود. اگر گزینه \fB\-terse\fR مشخص شود، فقط نام مجموعه‌ها و هدرهای آن‌ها فهرست می‌شود. خروجی در خروجی استاندارد چاپ می‌شود، و گزینه \fB\-file\fR را می‌توان برای مشخص کردن نام یک فایل به جای خروجی استاندارد به کار برد. .TP \fBsave\fP [ \fISETNAME\fP ] ذخیره مجموعه معین یا تمام مجموعه‌ها (در صورت مشخص نشدن نام) در خروجی استاندارد در قالبی که دستور \fBrestore\fP بتواند آن را بخواند. گزینه \fB\-file\fR می‌تواند برای مشخص کردن نام فایل به جای خروجی استاندارد استفاده شود. .TP \fBrestore\fP بازیابی یک نشست ذخیره‌شده که توسط دستور \fBsave\fP تولید شده است. نشست ذخیره‌شده می‌تواند از ورودی استاندارد تغذیه شود یا از گزینه \fB\-file\fR برای مشخص کردن نام فایل به جای ورودی استاندارد استفاده شود. .PP لطفاً توجه داشته باشید که مجموعه‌ها و عناصر موجود توسط \fBrestore\fP پاک نمی‌شوند مگر اینکه در فایل بازیابی صریحاً چنین قید شده باشد. تمام دستورات در حالت بازیابی مجاز هستند به جز \fBlist\fP، \fBhelp\fP، \fBversion\fP، حالت تعاملی و خود دستور \fBrestore\fP. .TP \fBflush\fP [ \fISETNAME\fP ] تخلیه تمام مدخل‌ها از مجموعه مشخص‌شده، یا تخلیه تمام مجموعه‌ها در صورت مشخص نشدن نام. .TP \fBe\fP, \fBrename\fP \fISETNAME\-FROM\fP \fISETNAME\-TO\fP تغییر نام یک مجموعه. مجموعه‌ای که با \fISETNAME\-TO\fR مشخص می‌شود نباید از قبل وجود داشته باشد. .TP \fBw\fP, \fBswap\fP \fISETNAME\-FROM\fP \fISETNAME\-TO\fP تعویض محتوای دو مجموعه با یکدیگر، یا به عبارت دیگر جابجایی نام دو مجموعه. مجموعه‌های ارجاع‌شده باید از قبل وجود داشته باشند و تنها مجموعه‌هایی با انواع سازگار را می‌توان با یکدیگر تعویض کرد. .TP \fBhelp\fP [ \fITYPENAME\fP ] چاپ راهنما، و در صورت مشخص شدن \fITYPENAME\fR چاپ راهنمای اختصاصی نوع مجموعه. .TP \fBversion\fP چاپ نسخه برنامه. .TP \fB\-\fP اگر یک خط تیره به عنوان دستور مشخص شود، \fBipset\fR وارد یک حالت تعاملی ساده می‌شود و دستورات را از ورودی استاندارد می‌خواند. حالت تعاملی را می‌توان با وارد کردن شبه‌دستور \fBquit\fR به پایان رساند. .P .SS "سایر گزینه‌ها (OTHER OPTIONS)" گزینه‌های تکمیلی زیر را می‌توان مشخص کرد. نام‌های بلند گزینه‌ها را نمی‌توان به صورت مخفف به کار برد. .TP \fB\-!\fP, \fB\-exist\fP صرف‌نظر کردن از خطاها در حالتی که مجموعه‌ای دقیقاً یکسان قرار است ایجاد شود، مدخلی که از قبل اضافه شده مجدداً افزوده می‌شود، یا مدخلی که وجود ندارد حذف می‌گردد. .TP \fB\-o\fP, \fB\-output\fP { \fBplain\fR | \fBsave\fR | \fBxml\fR | \fBjson\fR } انتخاب قالب خروجی برای دستور \fBlist\fR. .TP \fB\-q\fP, \fB\-quiet\fP خاموش‌سازی هرگونه خروجی در خروجی استاندارد و خطای استاندارد. با این حال اگر \fBipset\fR نتواند به کار خود ادامه دهد، همچنان با کد خطا خارج می‌شود. .TP \fB\-r\fP, \fB\-resolve\fP هنگام فهرست کردن مجموعه‌ها، وضوح‌یابی نام‌ها را اجباری می‌کند. برنامه تلاش خواهد کرد تا مدخل‌های IP را به صورت نام میزبان حل کند که نیازمند جستجوهای \fBکند\fR DNS است. .TP \fB\-s\fP, \fB\-sorted\fP خروجی مرتب‌شده. هنگام فهرست کردن یا ذخیره مجموعه‌ها، مدخل‌ها به صورت مرتب‌شده نمایش داده می‌شوند. .TP \fB\-n\fP, \fB\-name\fP تنها فهرست کردن نام‌های مجموعه‌های موجود؛ یعنی جلوگیری از نمایش هدرها و اعضای مجموعه. .TP \fB\-t\fP, \fB\-terse\fP فهرست کردن نام مجموعه‌ها و هدرها؛ یعنی جلوگیری از نمایش اعضای مجموعه. .TP \fB\-f\fP, \fB\-file\fP \fIfilename\fR مشخص کردن نام یک فایل برای نوشتن در آن به جای خروجی استاندارد (در دستورهای \fBlist\fR یا \fBsave\fR) یا خواندن از آن به جای ورودی استاندارد (در دستور \fBrestore\fR). .SH "مقدمه (INTRODUCTION)" یک نوع مجموعه متشکل از روش ذخیره‌سازی که داده‌ها توسط آن ذخیره می‌شوند و نوع (یا انواع) داده‌هایی است که در مجموعه نگهداری می‌شوند. بنابراین پارامتر \fITYPENAME\fR در دستور \fBcreate\fR از نحو زیر پیروی می‌کند: .PP \fITYPENAME\fR := \fImethod\fR\fB:\fR\fIdatatype\fR[\fB,\fR\fIdatatype\fR[\fB,\fR\fIdatatype\fR]] .PP که در آن فهرست فعلی روش‌ها شامل \fBbitmap\fR، \fBhash\fR و \fBlist\fR بوده و انواع داده مجاز عبارتند از: \fBip\fR، \fBnet\fR، \fBmac\fR، \fBport\fR و \fBiface\fR. بُعد یک مجموعه برابر با تعداد انواع داده در نام نوع آن است. .PP هنگام افزودن، حذف یا بررسی مدخل‌ها در یک مجموعه، باید از همان نحو داده‌های جداشده با کاما برای پارامتر entry دستورات استفاده شود؛ یعنی: .IP ipset add foo ipaddr,portnum,ipaddr .PP اگر به جای آدرس‌های IP یا شماره سرویس‌ها از نام میزبان یا نام سرویسی استفاده شود که دارای خط تیره در نام خود است، آن نام میزبان یا نام سرویس باید در داخل براکت قرار گیرد. مثال: .IP ipset add foo [test\-hostname],[ftp\-data] .PP در مورد نام میزبان‌ها، تفکیک‌کننده DNS به صورت داخلی توسط \fBipset\fR فراخوانی می‌شود، اما اگر چندین آدرس IP برگرداند، تنها نخستین مورد استفاده خواهد شد. .PP انواع \fBbitmap\fR و \fBlist\fR از ذخیره‌سازی با اندازه ثابت استفاده می‌کنند. انواع \fBhash\fR برای ذخیره عناصر از یک جدول درهم‌سازی (هش) استفاده می‌نمایند. به منظور جلوگیری از تداخل (clash) در جدول درهم‌سازی، تعداد محدودی زنجیره‌بندی (chaining) انجام می‌شود و در صورت پر شدن آن، هنگام افزودن مدخل‌ها توسط دستور \fBipset\fR اندازه جدول درهم‌سازی دو برابر می‌شود. هنگامی که مدخل‌ها توسط هدف (target) \fBSET\fR در \fBiptables/ip6tables\fR اضافه شوند، اندازه جدول درهم‌سازی ثابت می‌ماند و حتی اگر مدخل جدید نتواند به مجموعه افزوده شود، اندازه آن دو برابر نخواهد شد. .SH "گزینه‌های عمومی ساخت و افزودن (GENERIC CREATE AND ADD OPTIONS)" .SS timeout تمام انواع مجموعه از پارامتر اختیاری \fBtimeout\fR هنگام ایجاد یک مجموعه و افزودن مدخل‌ها پشتیبانی می‌کنند. مقدار پارامتر \fBtimeout\fR برای دستور \fBcreate\fR بیانگر مقدار پیش‌فرض زمان انقضا (به ثانیه) برای مدخل‌های جدید است. اگر مجموعه‌ای با پشتیبانی از timeout ایجاد شود، همان گزینه \fBtimeout\fR را می‌توان برای مشخص کردن مقادیر غیرپیش‌فرض زمان انقضا در هنگام افزودن مدخل‌ها به کار برد. مقدار زمان انقضای صفر به این معناست که مدخل به صورت دائمی به مجموعه افزوده می‌شود. مقدار timeout عناصر از قبل اضافه‌شده را می‌توان با افزودن مجدد آن عنصر با استفاده از گزینه \fB\-exist\fR تغییر داد. بزرگ‌ترین مقدار ممکن برای timeout عدد 2147483 (به ثانیه) است. مثال: .IP ipset create test hash:ip timeout 300 .IP ipset add test 192.168.0.1 timeout 60 .IP ipset \-exist add test 192.168.0.1 timeout 600 .PP هنگام فهرست کردن مجموعه، تعداد مدخل‌های چاپ‌شده در هدر ممکن است از تعداد مدخل‌های فهرست‌شده برای مجموعه‌های دارای افزونه‌های timeout بزرگ‌تر باشد: تعداد مدخل‌های مجموعه هنگام اضافه یا حذف شدن عناصر به مجموعه، و همچنین به صورت دوره‌ای زمانی که زباله‌روب (garbage collector) مدخل‌های منقضی‌شده را حذف می‌کند، به‌روزرسانی می‌شود. .PP .SS "counters, packets, bytes" تمام انواع مجموعه از گزینه اختیاری \fBcounters\fR هنگام ایجاد یک مجموعه پشتیبانی می‌کنند. اگر این گزینه مشخص شود، مجموعه با پشتیبانی از شمارنده‌های بسته (packet) و بایت (byte) به ازای هر عنصر ایجاد می‌شود. شمارنده‌های بسته و بایت هنگام افزودن (یا افزودن مجدد) عناصر به مجموعه صفر می‌شوند، مگر اینکه مقادیر شمارنده بسته و بایت صراحتاً با گزینه‌های \fBpackets\fR و \fBbytes\fR مشخص شده باشند. مثالی از افزودن یک عنصر به مجموعه با مقادیر شمارنده غیرصفر: .IP ipset create foo hash:ip counters .IP ipset add foo 192.168.1.1 packets 42 bytes 1024 .PP .SS comment تمام انواع مجموعه از افزونه اختیاری \fBcomment\fR (یادداشت) پشتیبانی می‌کنند. فعال کردن این افزونه روی یک ipset به شما امکان می‌دهد تا یک مدخل ipset را با یک رشته دلخواه یادداشت‌گذاری و مستند کنید. این رشته هم توسط هسته و هم توسط خود ipset کاملاً نادیده گرفته می‌شود و صرفاً ابزاری برای ارائه روشی مناسب جهت مستندسازی دلیل وجود یک مدخل است. یادداشت‌ها نباید حاوی هیچ علامت نقل‌قولی باشند و کاراکتر معمول گریز (\\) نیز معنایی ندارد. برای مثال، دستور پوسته زیر غیرمجاز است: .IP ipset add foo 1.1.1.1 comment "this comment is \\"bad\\"" .PP در دستور بالا، پوسته شما طبیعتاً علامت‌های نقل‌قول را اسکیپ می‌کند و ipset علامت‌های کوتیشن را در آرگومان comment مشاهده خواهد کرد که منجر به خطای تجزیه می‌شود. اگر در حال نوشتن سیستم اختصاصی خود هستید، در صورتی که نمی‌خواهید کارایی "ipset save" و "ipset restore" مختل شود، باید از ایجاد یادداشت‌های حاوی علامت نقل‌قول خودداری نمایید؛ با این حال، هسته مانع از انجام این کار توسط شما نخواهد شد. دستورات زیر کاملاً قابل قبول هستند: .IP ipset create foo hash:ip comment .IP ipset add foo 192.168.1.1/24 comment "allow access to SMB share on \\\\\\\\fileserv\\\\" .IP مورد بالا به این صورت ظاهر می‌شود: "allow access to SMB share on \\\\fileserv\\" .PP .SS "skbinfo, skbmark, skbprio, skbqueue" تمام انواع مجموعه از افزونه اختیاری \fBskbinfo\fR پشتیبانی می‌کنند. این افزونه به شما امکان می‌دهد تا فراداده‌ها (علامت فایروال یا firewall mark، کلاس tc و صف سخت‌افزاری) را به همراه هر مدخل ذخیره کرده و با استفاده از هدف نت‌فیلتر SET همراه با گزینه \-\-map\-set آن را به بسته‌ها نگاشت کنید. قالب گزینه \fBskbmark\fR: به صورت \fBMARK\fR یا \fBMARK/MASK\fR است، که در آن \fBMARK\fR و \fBMASK\fR اعداد هگزادسیمال ۳۲ بیتی با پیشوند 0x هستند. اگر تنها \fBmark\fR مشخص شود، ماسک 0xffffffff به کار گرفته می‌شود. گزینه \fBskbprio\fR دارای قالب کلاس tc است: \fBMAJOR:MINOR\fR، که در آن اعداد \fBmajor\fR و \fBminor\fR هگزادسیمال بدون پیشوند 0x هستند. گزینه \fBskbqueue\fR صرفاً یک عدد ده‌دهی است. .IP ipset create foo hash:ip skbinfo .IP ipset add foo 192.168.0.1 skbmark 0x1111/0xff00ffff skbprio 1:10 skbqueue 10 .PP .SS hashsize این پارامتر برای دستور \fBcreate\fR در تمام مجموعه‌های نوع \fBhash\fR معتبر است. اندازه اولیه جدول درهم‌سازی را برای مجموعه تعریف می‌کند که مقدار پیش‌فرض آن 1024 است. اندازه جدول باید توانی از دو باشد؛ هسته به طور خودکار اندازه‌هایی را که توان دو نیستند به نخستین مقدار معتبر بعدی گرد می‌کند. مثال: .IP ipset create test hash:ip hashsize 1536 .PP .SS maxelem این پارامتر برای دستور \fBcreate\fR در تمام مجموعه‌های نوع \fBhash\fR معتبر است. حداکثر تعداد عناصری را که می‌توان در مجموعه ذخیره کرد تعیین می‌کند که پیش‌فرض آن 65536 است. مثال: .IP ipset create test hash:ip maxelem 2048 .PP .SS bucketsize این پارامتر برای دستور \fBcreate\fR در تمام مجموعه‌های نوع \fBhash\fR معتبر است. حداکثر تعداد عناصری را که می‌توان در یک سطل (bucket) جدول درهم‌سازی ذخیره کرد مشخص می‌کند. مقادیر مجاز هر عدد زوج بین 2 تا 14 است و مقدار پیش‌فرض 14 می‌باشد. تنظیم این مقدار بر روی مقادیر کوچک‌تر، ipset را وادار به ایجاد جداول درهم‌سازی بزرگ‌تر می‌کند که حافظه بیشتری مصرف می‌نمایند اما سرعت تطابق در مجموعه را افزایش می‌دهند. مثال: .IP ipset create test hash:ip bucketsize 2 .PP .SS family { inet | inet6 } این پارامتر برای دستور \fBcreate\fR در تمام مجموعه‌های نوع \fBhash\fR به جز hash:mac معتبر است. خانواده پروتکل آدرس‌های IP ذخیره‌شونده در مجموعه را تعیین می‌کند. مقدار پیش‌فرض \fBinet\fR (یعنی IPv4) است. برای خانواده \fBinet\fR می‌توان با مشخص کردن یک محدوده یا یک شبکه از آدرس‌های IPv4 در بخش آدرس IP مدخل، چندین مدخل را به طور همزمان اضافه یا حذف کرد: .PP \fIipaddr\fR := { \fIip\fR | \fIfromaddr\fR\-\fItoaddr\fR | \fIip\fR/\fIcidr\fR } .PP \fInetaddr\fR := { \fIfromaddr\fR\-\fItoaddr\fR | \fIip\fR/\fIcidr\fR } .PP مثال: .IP ipset create test hash:ip family inet6 .PP .SS nomatch انواع مجموعه‌های \fBhash\fR که می‌توانند داده‌های نوع \fBnet\fR را ذخیره کنند (یعنی hash:*net*) از گزینه اختیاری \fBnomatch\fR در هنگام افزودن مدخل‌ها پشتیبانی می‌نمایند. هنگام تطبیق عناصر در مجموعه، مدخل‌هایی که با \fBnomatch\fR علامت‌گذاری شده‌اند به گونه‌ای نادیده گرفته می‌شوند که گویی به مجموعه اضافه نشده‌اند؛ این ویژگی امکان ساخت مجموعه‌های دارای استثنا را فراهم می‌سازد. مثال مربوط به نوع درهم‌سازی \fBhash:net\fR را در زیر ببینید. .PP هنگامی که عناصر توسط \fBipset\fR بررسی (test) می‌شوند، فلگ‌های \fBnomatch\fR لحاظ می‌گردند. اگر کسی بخواهد وجود عنصری با نشان \fBnomatch\fR را در یک مجموعه بیازماید، باید آن فلگ را نیز مشخص کند. .SS forceadd تمام انواع مجموعه‌های درهم‌سازی از پارامتر اختیاری \fBforceadd\fR هنگام ایجاد مجموعه پشتیبانی می‌کنند. هنگامی که مجموعه‌های ساخته‌شده با این گزینه پر شوند، افزودن بعدی به مجموعه ممکن است موفقیت‌آمیز باشد و یک مدخل تصادفی را از مجموعه بیرون براند. .IP ipset create foo hash:ip forceadd .PP .SS wildcard این فلگ هنگام افزودن عناصر به مجموعه \fBhash:net,iface\fR معتبر است. اگر این فلگ تنظیم شود، هنگام مقایسه با این عنصر از تطابق پیشوندی استفاده می‌شود. برای مثال، عنصری که شامل نام رابط "eth" است، با هر نامی که این پیشوند را داشته باشد مطابقت خواهد داشت. .PP .SH "انواع مجموعه (SET TYPES)" .SS bitmap:ip نوع مجموعه \fBbitmap:ip\fR از یک محدوده حافظه برای ذخیره آدرس‌های میزبان IPv4 (پیش‌فرض) یا آدرس‌های شبکه IPv4 استفاده می‌کند. مجموعه‌ای از نوع \fBbitmap:ip\fR می‌تواند تا 65536 مدخل را در خود ذخیره کند. .PP \fICREATE\-OPTIONS\fR := \fBrange\fP \fIfromip\fP\-\fItoip\fR|\fIip\fR/\fIcidr\fR [ \fBnetmask\fP \fIcidr\fP ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := { \fIip\fR | \fIfromip\fR\-\fItoip\fR | \fIip\fR/\fIcidr\fR } .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := { \fIip\fR | \fIfromip\fR\-\fItoip\fR | \fIip\fR/\fIcidr\fR } .PP \fITEST\-ENTRY\fR := \fIip\fR .PP گزینه‌های الزامی دستور \fBcreate\fR: .TP \fBrange\fP \fIfromip\fP\-\fItoip\fR|\fIip\fR/\fIcidr\fR ایجاد مجموعه بر اساس محدوده فراگیر آدرس مشخص‌شده که در قالب یک بازه آدرس IPv4 یا یک شبکه بیان می‌شود. اندازه محدوده (بر حسب مدخل‌ها) نمی‌تواند از سقف حداکثر 65536 عنصر فراتر رود. .PP گزینه‌های اختیاری دستور \fBcreate\fR: .TP \fBnetmask\fP \fIcidr\fP هنگامی که پارامتر اختیاری \fBnetmask\fP مشخص شود، آدرس‌های شبکه به جای آدرس‌های میزبان IP در مجموعه ذخیره خواهند شد. مقدار پیشوند \fIcidr\fR باید بین 1 تا 32 باشد. اگر آدرس شبکه، که از اعمال ماسک روی آدرس با نت‌ماسک مشخص‌شده حاصل می‌شود، در مجموعه وجود داشته باشد، آن آدرس IP در مجموعه خواهد بود. .PP نوع \fBbitmap:ip\fR از افزودن یا حذف چندین مدخل در یک دستور پشتیبانی می‌کند. .PP مثال‌ها: .IP ipset create foo bitmap:ip range 192.168.0.0/16 .IP ipset add foo 192.168.1/24 .IP ipset test foo 192.168.1.1 .SS bitmap:ip,mac نوع مجموعه \fBbitmap:ip,mac\fR از یک محدوده حافظه برای ذخیره جفت‌های آدرس IPv4 و MAC استفاده می‌کند. مجموعه‌ای از نوع \fBbitmap:ip,mac\fR می‌تواند تا 65536 مدخل را ذخیره نماید. .PP \fICREATE\-OPTIONS\fR := \fBrange\fP \fIfromip\fP\-\fItoip\fR|\fIip\fR/\fIcidr\fR [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIip\fR[,\fImacaddr\fR] .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIip\fR[,\fImacaddr\fR] .PP \fITEST\-ENTRY\fR := \fIip\fR[,\fImacaddr\fR] .PP گزینه‌های الزامی برای استفاده هنگام ایجاد مجموعه‌ای از نوع \fBbitmap:ip,mac\fR: .TP \fBrange\fP \fIfromip\fP\-\fItoip\fR|\fIip\fR/\fIcidr\fR ایجاد مجموعه از محدوده آدرس فراگیر مشخص‌شده که در قالب یک محدوده یا شبکه IPv4 بیان می‌شود. اندازه محدوده نمی‌تواند از سقف حداکثر 65536 مدخل فراتر رود. .PP نوع \fBbitmap:ip,mac\fR از این نظر استثنایی است که بخش MAC را می‌توان هنگام افزودن، حذف یا آزمودن مدخل‌ها در مجموعه نادیده گرفت. اگر مدخلی را بدون مشخص کردن آدرس MAC اضافه کنیم، نخستین باری که مدخل توسط هسته تطبیق داده شود، هسته به طور خودکار آدرس MAC ناموجود را با آدرس MAC موجود در بسته پر خواهد کرد. اگر مدخل به دلیل پارامتر \fBsrc\fR در تطابق \fBset\fR مطابقت یافته باشد، از آدرس MAC مبدأ استفاده می‌شود، و اگر به دلیل پارامتر \fBdst\fR مطابقت یافته باشد، در صورت موجود بودن از آدرس MAC مقصد استفاده می‌گردد. اگر برای مدخل یک مقدار timeout تعیین شده باشد، تایمر زمانی شروع به کار می‌کند که جفت آدرس IP و MAC کامل شود. .PP مجموعه‌های نوع \fBbitmap:ip,mac\fR به دو پارامتر \fBsrc/dst\fR از ماژول‌های هسته نت‌فیلتر تطابق \fBset\fR و هدف \fBSET\fR نیاز دارند. برای تطابق روی آدرس‌های MAC مقصد، به بخش «نکات و توضیحات» در زیر مراجعه کنید. .PP مثال‌ها: .IP ipset create foo bitmap:ip,mac range 192.168.0.0/16 .IP ipset add foo 192.168.1.1,12:34:56:78:9A:BC .IP ipset test foo 192.168.1.1 .SS bitmap:port نوع مجموعه \fBbitmap:port\fR از یک محدوده حافظه برای ذخیره شماره پورت‌ها استفاده می‌کند و چنین مجموعه‌ای می‌تواند تا 65536 پورت را در خود جای دهد. .PP \fICREATE\-OPTIONS\fR := \fBrange\fP \fIfromport\fP\-\fItoport [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := { \fI[proto:]port\fR | \fI[proto:]fromport\fR\-\fItoport\fR } .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := { \fI[proto:]port\fR | \fI[proto:]fromport\fR\-\fItoport\fR } .PP \fITEST\-ENTRY\fR := \fI[proto:]port\fR .PP گزینه‌های الزامی برای استفاده هنگام ایجاد مجموعه‌ای از نوع \fBbitmap:port\fR: .TP \fBrange\fP \fI[proto:]fromport\fP\-\fItoport\fR ایجاد مجموعه از محدوده پورت فراگیر مشخص‌شده. .PP ماژول‌های هسته نت‌فیلتر تطابق \fBset\fR و هدف \fBSET\fR شماره‌های ذخیره‌شده را به عنوان شماره پورت‌های TCP یا UDP تفسیر می‌کنند. .PP پارامتر \fBproto\fR تنها در صورتی نیاز به مشخص شدن دارد که از نام یک سرویس استفاده شود و آن نام به عنوان یک سرویس TCP وجود نداشته باشد. پروتکل هرگز در مجموعه ذخیره نمی‌شود، بلکه تنها شماره پورت سرویس نگهداری خواهد شد. .PP مثال‌ها: .IP ipset create foo bitmap:port range 0\-1024 .IP ipset add foo 80 .IP ipset test foo 80 .IP ipset del foo udp:[macon-udp]-[tn-tl-w2] .SS hash:ip نوع مجموعه \fBhash:ip\fR از یک جدول درهم‌سازی برای ذخیره آدرس‌های میزبان IP (پیش‌فرض) یا آدرس‌های شبکه استفاده می‌کند. آدرس‌های IP با مقدار صفر را نمی‌توان در مجموعه‌ای از نوع \fBhash:ip\fR ذخیره کرد. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBnetmask\fP \fIcidr\fP ] [ \fBbitmask\fP \fImask\fP ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIipaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIipaddr\fR .PP \fITEST\-ENTRY\fR := \fIipaddr\fR .PP گزینه‌های اختیاری دستور \fBcreate\fR: .TP \fBnetmask\fP \fIcidr\fP هنگامی که پارامتر اختیاری \fBnetmask\fP مشخص شود، آدرس‌های شبکه به جای آدرس‌های میزبان IP در مجموعه ذخیره خواهند شد. مقدار پیشوند \fIcidr\fR باید بین 1 تا 32 برای IPv4 و بین 1 تا 128 برای IPv6 باشد. اگر آدرس شبکه، که از ماسک کردن آدرس با نت‌ماسک حاصل می‌شود، در مجموعه یافت شود، آن آدرس IP در مجموعه در نظر گرفته می‌شود. مثال‌ها: .IP ipset create foo hash:ip netmask 30 .IP ipset add foo 192.168.1.0/24 .IP ipset test foo 192.168.1.2 .TP \fBbitmask\fP \fImask\fP این گزینه مشابه \fBnetmask\fP عمل می‌کند اما هر آدرس معتبر IPv4/v6 را می‌پذیرد. لازم نیست که حتماً یک netmask معتبر باشد. .SS hash:mac نوع مجموعه \fBhash:mac\fR از یک جدول درهم‌سازی برای ذخیره آدرس‌های MAC استفاده می‌کند. آدرس‌های MAC با مقدار صفر را نمی‌توان در مجموعه‌ای از نوع \fBhash:mac\fR ذخیره کرد. برای تطابق روی آدرس‌های MAC مقصد، به بخش «نکات و توضیحات» در زیر مراجعه کنید. .PP \fICREATE\-OPTIONS\fR := [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fImacaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fImacaddr\fR .PP \fITEST\-ENTRY\fR := \fImacaddr\fR .PP مثال‌ها: .IP ipset create foo hash:mac .IP ipset add foo 01:02:03:04:05:06 .IP ipset test foo 01:02:03:04:05:06 .SS hash:ip,mac نوع مجموعه \fBhash:ip,mac\fR از یک جدول درهم‌سازی برای ذخیره جفت‌های آدرس IP و MAC استفاده می‌کند. آدرس‌های MAC با مقدار صفر را نمی‌توان در مجموعه‌ای از نوع \fBhash:ip,mac\fR ذخیره کرد. برای تطابق روی آدرس‌های MAC مقصد، به بخش «نکات و توضیحات» در زیر مراجعه کنید. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIipaddr\fR,\fImacaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIipaddr\fR,\fImacaddr\fR .PP \fITEST\-ENTRY\fR := \fIipaddr\fR,\fImacaddr\fR .PP مثال‌ها: .IP ipset create foo hash:ip,mac .IP ipset add foo 1.1.1.1,01:02:03:04:05:06 .IP ipset test foo 1.1.1.1,01:02:03:04:05:06 .SS hash:net نوع مجموعه \fBhash:net\fR از یک جدول درهم‌سازی برای ذخیره آدرس‌های شبکه IP با اندازه‌های مختلف استفاده می‌کند. آدرس شبکه با اندازه پیشوند صفر را نمی‌توان در این نوع مجموعه‌ها ذخیره کرد. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fInetaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBnomatch\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fInetaddr\fR .PP \fITEST\-ENTRY\fR := \fInetaddr\fR .PP که در آن .PP \fInetaddr\fR := \fIip\fR[/\fIcidr\fR] .PP هنگام افزودن، حذف یا آزمودن مدخل‌ها، اگر پارامتر پیشوند cidr مشخص نشود، مقدار پیشوند میزبان فرض می‌شود. هنگام افزودن یا حذف مدخل‌ها، عنصر دقیق اضافه یا حذف می‌شود و عناصر هم‌پوشان توسط هسته بررسی نمی‌شوند. هنگام آزمودن مدخل‌ها، اگر یک آدرس میزبان آزموده شود، هسته تلاش می‌کند تا آدرس میزبان را در شبکه‌های افزوده‌شده به مجموعه تطبیق دهد و نتیجه را متناسب با آن گزارش نماید. .PP از نقطه نظر تطابق نت‌فیلتر \fBset\fR، جستجو برای تطابق همیشه از کوچک‌ترین اندازه بلوک شبکه (خاص‌ترین پیشوند) تا بزرگ‌ترین آن (عمومی‌ترین پیشوند) افزوده‌شده به مجموعه آغاز می‌شود. هنگام افزودن یا حذف آدرس‌های IP به مجموعه توسط هدف نت‌فیلتر \fBSET\fR، مدخل با خاص‌ترین پیشوندی که در مجموعه یافت می‌شود، یا در صورت خالی بودن مجموعه با مقدار پیشوند میزبان اضافه یا حذف خواهد شد. .PP زمان جستجو به صورت خطی با تعداد مقادیر پیشوندهای مختلف افزوده‌شده به مجموعه افزایش می‌یابد. .PP مثال: .IP ipset create foo hash:net .IP ipset add foo 192.168.0.0/24 .IP ipset add foo 10.1.0.0/16 .IP ipset add foo 192.168.0/24 .IP ipset add foo 192.168.0/30 nomatch .PP هنگام تطبیق عناصر در مجموعه بالا، تمام آدرس‌های IP از شبکه‌های 192.168.0.0/24، 10.1.0.0/16 و 192.168.0/24 به جز آدرس‌های متعلق به 192.168.0/30 مطابقت داده خواهند شد. .SS hash:net,net نوع مجموعه \fBhash:net,net\fR از یک جدول درهم‌سازی برای ذخیره جفت‌های آدرس شبکه IP با اندازه‌های مختلف استفاده می‌کند. به یاد داشته باشید که پارامتر اول بر پارامتر دوم اولویت دارد، بنابراین اگر پارامتر اول خاص‌تری با یک پارامتر دوم مناسب وجود داشته باشد، ممکن است یک مدخل nomatch بی‌اثر شود. آدرس شبکه با اندازه پیشوند صفر را نمی‌توان در این نوع مجموعه ذخیره کرد. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBnetmask\fP \fIcidr\fP ] [ \fBbitmask\fP \fImask\fP ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fInetaddr\fR,\fInetaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBnomatch\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fInetaddr\fR,\fInetaddr\fR .PP \fITEST\-ENTRY\fR := \fInetaddr\fR,\fInetaddr\fR .PP که در آن .PP \fInetaddr\fR := \fIip\fR[/\fIcidr\fR] .PP هنگام افزودن، حذف یا آزمودن مدخل‌ها، اگر پارامتر پیشوند cidr مشخص نشود، مقدار پیشوند میزبان فرض می‌شود. هنگام افزودن یا حذف مدخل‌ها، عنصر دقیق اضافه یا حذف می‌شود و عناصر هم‌پوشان توسط هسته بررسی نمی‌شوند. هنگام آزمودن مدخل‌ها، اگر یک آدرس میزبان آزموده شود، هسته تلاش می‌کند تا آدرس میزبان را در شبکه‌های افزوده‌شده به مجموعه تطبیق دهد و نتیجه را متناسب با آن گزارش نماید. .PP از دیدگاه تطابق نت‌فیلتر \fBset\fR، جستجو برای تطابق همیشه از کوچک‌ترین اندازه بلوک شبکه (خاص‌ترین پیشوند) تا بزرگ‌ترین آن (عمومی‌ترین پیشوند) آغاز می‌شود، در حالی که پارامتر اول دارای تقدم است. هنگام افزودن یا حذف آدرس‌های IP به مجموعه توسط هدف نت‌فیلتر \fBSET\fR، مدخل با خاص‌ترین پیشوندی که در مجموعه یافت می‌شود، یا در صورت خالی بودن مجموعه با مقدار پیشوند میزبان اضافه یا حذف خواهد شد. .PP زمان جستجو به صورت خطی با تعداد مقادیر پیشوندهای مختلف اضافه‌شده به پارامتر نخست مجموعه افزایش می‌یابد. تعداد پیشوندهای ثانویه این مقدار را بیشتر افزایش می‌دهد زیرا فهرست پیشوندهای ثانویه به ازای هر پیشوند اولیه پیمایش می‌شود. .PP گزینه‌های اختیاری دستور \fBcreate\fR: .TP \fBnetmask\fP \fIcidr\fP هنگامی که پارامتر اختیاری \fBnetmask\fP مشخص شود، آدرس‌های شبکه به جای آدرس‌های میزبان IP در مجموعه ذخیره خواهند شد. مقدار پیشوند \fIcidr\fR باید بین 1 تا 32 برای IPv4 و بین 1 تا 128 برای IPv6 باشد. اگر آدرس شبکه، که از اعمال ماسک روی آدرس با نت‌ماسک حاصل می‌شود، در مجموعه یافت شود، آن آدرس IP در مجموعه خواهد بود. .TP \fBbitmask\fP \fImask\fP این گزینه مشابه \fBnetmask\fP عمل می‌کند اما هر آدرس معتبر IPv4/v6 را می‌پذیرد. لازم نیست که حتماً یک netmask معتبر باشد. .PP مثال: .IP ipset create foo hash:net,net .IP ipset add foo 192.168.0.0/24,10.0.1.0/24 .IP ipset add foo 10.1.0.0/16,10.255.0.0/24 .IP ipset add foo 192.168.0/24,192.168.54.0-192.168.54.255 .IP ipset add foo 192.168.0/30,192.168.64/30 nomatch .PP هنگام تطبیق عناصر در مجموعه بالا، تمام آدرس‌های IP از شبکه‌های 192.168.0.0/24<->10.0.1.0/24، 10.1.0.0/16<->10.255.0.0/24 و 192.168.0/24<->192.168.54.0/24 به جز آدرس‌های متعلق به 192.168.0/30<->192.168.64/30 مطابقت داده خواهند شد. .SS hash:ip,port نوع مجموعه \fBhash:ip,port\fR از یک جدول درهم‌سازی برای ذخیره جفت‌های آدرس IP و شماره پورت استفاده می‌کند. شماره پورت همراه با یک پروتکل (پیش‌فرض TCP) تفسیر می‌شود و نمی‌توان از شماره پروتکل صفر استفاده کرد. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBnetmask\fP \fIcidr\fP ] [ \fBbitmask\fP \fImask\fP ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR .PP \fITEST\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR .PP بخش [\fIproto\fR:]\fIport\fR عناصر را می‌توان به صورت‌های زیر بیان کرد، که در آن‌ها دگرگونی‌های محدوده هنگام افزودن یا حذف مدخل‌ها معتبر هستند: .TP \fIportname[\-portname]\fR پورت TCP یا محدوده‌ای از پورت‌ها بیان‌شده در شناسه‌های نام پورت TCP از /etc/services .TP \fIportnumber[\-portnumber]\fR پورت TCP یا محدوده‌ای از پورت‌ها بیان‌شده در شماره پورت‌های TCP .TP \fBtcp\fR|\fBsctp\fR|\fBudp\fR|\fBudplite\fR:\fIportname\fR|\fIportnumber\fR[\-\fIportname\fR|\fIportnumber\fR] پورت یا محدوده پورت TCP، SCTP، UDP یا UDPLITE بیان‌شده در نام (نام‌های) پورت یا شماره (شماره‌های) پورت .TP \fBicmp\fR:\fIcodename\fR|\fItype\fR/\fIcode\fR نام کد یا نوع/کد ICMP. شناسه‌های نام کد ICMP پشتیبانی‌شده را همیشه می‌توان با دستور help فهرست کرد. .TP \fBicmpv6\fR:\fIcodename\fR|\fItype\fR/\fIcode\fR نام کد یا نوع/کد ICMPv6. شناسه‌های نام کد ICMPv6 پشتیبانی‌شده را همیشه می‌توان با دستور help فهرست کرد. .TP \fIproto\fR:0 سایر پروتکل‌ها، به عنوان یک شناسه از /etc/protocols یا عدد. شماره شبه‌پورت باید صفر باشد. .PP مجموعه‌های نوع \fBhash:ip,port\fR نیازمند دو پارامتر \fBsrc\fR/\fBdst\fR از ماژول‌های هسته تطابق \fBset\fR و هدف \fBSET\fR هستند. .PP گزینه‌های اختیاری دستور \fBcreate\fR: .TP \fBnetmask\fP \fIcidr\fP هنگامی که پارامتر اختیاری \fBnetmask\fP مشخص شود، آدرس‌های شبکه به جای آدرس‌های میزبان IP در مجموعه ذخیره خواهند شد. مقدار پیشوند \fIcidr\fR باید بین 1 تا 32 برای IPv4 و بین 1 تا 128 برای IPv6 باشد. اگر آدرس شبکه، که از اعمال ماسک روی آدرس با نت‌ماسک حاصل می‌شود، در مجموعه یافت شود، آن آدرس IP در مجموعه خواهد بود. .TP \fBbitmask\fP \fImask\fP این گزینه مشابه \fBnetmask\fP عمل می‌کند اما هر آدرس معتبر IPv4/v6 را می‌پذیرد. لازم نیست که حتماً یک netmask معتبر باشد. .PP مثال‌ها: .IP ipset create foo hash:ip,port .IP ipset add foo 192.168.1.0/24,80\-82 .IP ipset add foo 192.168.1.1,udp:53 .IP ipset add foo 192.168.1.1,vrrp:0 .IP ipset test foo 192.168.1.1,80 .SS hash:net,port نوع مجموعه \fBhash:net,port\fR از یک جدول درهم‌سازی برای ذخیره جفت‌های آدرس شبکه IP با اندازه‌های مختلف و پورت استفاده می‌کند. شماره پورت همراه با یک پروتکل (پیش‌فرض TCP) تفسیر می‌شود و نمی‌توان از شماره پروتکل صفر استفاده کرد. آدرس شبکه با اندازه پیشوند صفر نیز پذیرفته نمی‌شود. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fInetaddr\fR,[\fIproto\fR:]\fIport\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBnomatch\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fInetaddr\fR,[\fIproto\fR:]\fIport\fR .PP \fITEST\-ENTRY\fR := \fInetaddr\fR,[\fIproto\fR:]\fIport\fR .PP که در آن .PP \fInetaddr\fR := \fIip\fR[/\fIcidr\fR] .PP برای بخش \fInetaddr\fR عناصر به توضیحات مربوط به نوع مجموعه \fBhash:net\fR مراجعه کنید. برای بخش [\fIproto\fR:]\fIport\fR عناصر به توضیحات نوع مجموعه \fBhash:ip,port\fR مراجعه نمایید. .PP هنگام افزودن، حذف یا آزمودن مدخل‌ها، اگر پارامتر پیشوند cidr مشخص نشود، مقدار پیشوند میزبان فرض می‌شود. هنگام افزودن یا حذف مدخل‌ها، عنصر دقیق اضافه یا حذف می‌شود و عناصر هم‌پوشان توسط هسته بررسی نمی‌شوند. هنگام آزمودن مدخل‌ها، اگر یک آدرس میزبان آزموده شود، هسته تلاش می‌کند تا آدرس میزبان را در شبکه‌های افزوده‌شده به مجموعه تطبیق دهد و نتیجه را متناسب با آن گزارش کند. .PP از نقطه نظر تطابق نت‌فیلتر \fBset\fR، جستجو برای تطابق همیشه از کوچک‌ترین اندازه بلوک شبکه (خاص‌ترین پیشوند) تا بزرگ‌ترین آن (عمومی‌ترین پیشوند) افزوده‌شده به مجموعه آغاز می‌شود. هنگام افزودن یا حذف آدرس‌های IP به مجموعه توسط هدف نت‌فیلتر \fBSET\fR، با خاص‌ترین پیشوندی که در مجموعه یافت می‌شود، یا در صورت خالی بودن مجموعه با مقدار پیشوند میزبان اضافه یا حذف خواهد شد. .PP زمان جستجو به صورت خطی با تعداد مقادیر پیشوندهای مختلف افزوده‌شده به مجموعه افزایش می‌یابد. .PP مثال‌ها: .IP ipset create foo hash:net,port .IP ipset add foo 192.168.0/24,25 .IP ipset add foo 10.1.0.0/16,80 .IP ipset test foo 192.168.0/24,25 .SS hash:ip,port,ip نوع مجموعه \fBhash:ip,port,ip\fR از یک جدول درهم‌سازی برای ذخیره سه‌تایی‌های آدرس IP، شماره پورت و یک آدرس IP دوم استفاده می‌کند. شماره پورت همراه با یک پروتکل (پیش‌فرض TCP) تفسیر می‌شود و استفاده از شماره پروتکل صفر مجاز نیست. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR,\fIip\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR,\fIip\fR .PP \fITEST\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR,\fIip\fR .PP برای بخش‌های نخستین \fIipaddr\fR و [\fIproto\fR:]\fIport\fR عناصر، به توضیحات مربوط به نوع مجموعه \fBhash:ip,port\fR مراجعه کنید. .PP مجموعه‌های نوع \fBhash:ip,port,ip\fR نیازمند سه پارامتر \fBsrc\fR/\fBdst\fR از ماژول‌های هسته تطابق \fBset\fR و هدف \fBSET\fR هستند. .PP مثال‌ها: .IP ipset create foo hash:ip,port,ip .IP ipset add foo 192.168.1.1,80,10.0.0.1 .IP ipset test foo 192.168.1.1,udp:53,10.0.0.1 .SS hash:ip,port,net نوع مجموعه \fBhash:ip,port,net\fR از یک جدول درهم‌سازی برای ذخیره سه‌تایی‌های آدرس IP، شماره پورت و آدرس شبکه IP استفاده می‌کند. شماره پورت همراه با یک پروتکل (پیش‌فرض TCP) تفسیر می‌شود و استفاده از شماره پروتکل صفر مجاز نیست. آدرس شبکه با اندازه پیشوند صفر را نیز نمی‌توان ذخیره کرد. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR,\fInetaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBnomatch\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR,\fInetaddr\fR .PP \fITEST\-ENTRY\fR := \fIipaddr\fR,[\fIproto\fR:]\fIport\fR,\fInetaddr\fR .PP که در آن .PP \fInetaddr\fR := \fIip\fR[/\fIcidr\fR] .PP برای بخش‌های \fIipaddr\fR و [\fIproto\fR:]\fIport\fR عناصر به توضیحات نوع مجموعه \fBhash:ip,port\fR مراجعه نمایید. برای بخش \fInetaddr\fR عناصر، توضیحات مربوط به نوع مجموعه \fBhash:net\fR را مشاهده کنید. .PP از نقطه نظر تطابق نت‌فیلتر \fBset\fR، جستجو برای تطابق همواره از کوچک‌ترین اندازه بلوک شبکه (خاص‌ترین cidr) تا بزرگ‌ترین آن (عمومی‌ترین cidr) افزوده‌شده به مجموعه آغاز می‌شود. هنگام افزودن یا حذف سه‌تایی‌ها به مجموعه توسط هدف نت‌فیلتر \fBSET\fR، با خاص‌ترین مقدار cidr موجود در مجموعه، یا در صورت خالی بودن مجموعه با مقدار cidr میزبان اضافه یا حذف خواهد شد. .PP زمان جستجو به صورت خطی با تعداد مقادیر مختلف \fIcidr\fR افزوده‌شده به مجموعه افزایش می‌یابد. .PP مجموعه‌های نوع \fBhash:ip,port,net\fR نیازمند سه پارامتر \fBsrc\fR/\fBdst\fR از ماژول‌های هسته تطابق \fBset\fR و هدف \fBSET\fR هستند. .PP مثال‌ها: .IP ipset create foo hash:ip,port,net .IP ipset add foo 192.168.1,80,10.0.0/24 .IP ipset add foo 192.168.2,25,10.1.0.0/16 .IP ipset test foo 192.168.1,80.10.0.0/24 .SS hash:ip,mark نوع مجموعه \fBhash:ip,mark\fR از یک جدول درهم‌سازی برای ذخیره جفت‌های آدرس IP و علامت بسته (packet mark) استفاده می‌کند. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBmarkmask\fR \fIvalue\fR ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIipaddr\fR,\fImark\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIipaddr\fR,\fImark\fR .PP \fITEST\-ENTRY\fR := \fIipaddr\fR,\fImark\fR .PP گزینه‌های اختیاری دستور \fBcreate\fR: .TP \fBmarkmask\fR \fIvalue\fR به شما امکان می‌دهد بیت‌های مد نظر خود را در علامت بسته مشخص کنید. این مقدار سپس برای انجام عملیات AND بیتی روی هر علامت اضافه‌شده به کار می‌رود. مقدار markmask می‌تواند هر عددی بین 1 تا 4294967295 باشد؛ به طور پیش‌فرض تمام ۳۲ بیت تنظیم شده‌اند. .PP مقدار \fImark\fR می‌تواند هر مقداری بین 0 تا 4294967295 باشد. .PP مجموعه‌های نوع \fBhash:ip,mark\fR نیازمند دو پارامتر \fBsrc\fR/\fBdst\fR از ماژول‌های هسته تطابق \fBset\fR و هدف \fBSET\fR هستند. .PP مثال‌ها: .IP ipset create foo hash:ip,mark .IP ipset add foo 192.168.1.0/24,555 .IP ipset add foo 192.168.1.1,0x63 .IP ipset add foo 192.168.1.1,111236 .SS hash:net,port,net نوع مجموعه \fBhash:net,port,net\fR رفتاری مشابه hash:ip,port,net دارد اما مقدار cidr را هم برای پارامتر اول و هم برای پارامتر آخر می‌پذیرد. هر یک از زیرشبکه‌ها در صورتی که تمایل داشته باشید پورت را میان تمام مقاصد تطبیق دهید، می‌تواند به صورت /0 تعیین شود. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fInetaddr\fR,[\fIproto\fR:]\fIport\fR,\fInetaddr\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBnomatch\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fInetaddr\fR,[\fIproto\fR:]\fIport\fR,\fInetaddr\fR .PP \fITEST\-ENTRY\fR := \fInetaddr\fR,[\fIproto\fR:]\fIport\fR,\fInetaddr\fR .PP که در آن .PP \fInetaddr\fR := \fIip\fR[/\fIcidr\fR] .PP برای بخش [\fIproto\fR:]\fIport\fR عناصر به توضیحات نوع مجموعه \fBhash:ip,port\fR مراجعه کنید. برای بخش \fInetaddr\fR عناصر به توضیحات نوع مجموعه \fBhash:net\fR مراجعه فرمایید. .PP از دیدگاه تطابق نت‌فیلتر \fBset\fR، جستجو برای تطابق همواره از کوچک‌ترین اندازه بلوک شبکه (خاص‌ترین cidr) تا بزرگ‌ترین آن (عمومی‌ترین cidr) افزوده‌شده به مجموعه آغاز می‌شود. هنگام افزودن یا حذف سه‌تایی‌ها به مجموعه توسط هدف نت‌فیلتر \fBSET\fR، با خاص‌ترین مقدار cidr موجود در مجموعه، یا در صورت خالی بودن مجموعه با مقدار cidr میزبان اضافه یا حذف خواهد شد. زیرشبکه نخست هنگام انجام جستجوی خاص‌ترین تقدم دارد، درست همانند hash:net,net. .PP زمان جستجو به صورت خطی با تعداد مقادیر مختلف \fIcidr\fR افزوده‌شده به مجموعه و با تعداد مقادیر ثانویه \fIcidr\fR به ازای هر مقدار اولیه افزایش می‌یابد. .PP مجموعه‌های نوع \fBhash:net,port,net\fR نیازمند سه پارامتر \fBsrc\fR/\fBdst\fR از ماژول‌های هسته تطابق \fBset\fR و هدف \fBSET\fR هستند. .PP مثال‌ها: .IP ipset create foo hash:net,port,net .IP ipset add foo 192.168.1.0/24,0,10.0.0/24 .IP ipset add foo 192.168.2.0/24,25,10.1.0.0/16 .IP ipset test foo 192.168.1.1,80,10.0.0.1 .SS hash:net,iface نوع مجموعه \fBhash:net,iface\fR از یک جدول درهم‌سازی برای ذخیره جفت‌های آدرس شبکه IP با اندازه‌های مختلف و نام رابط شبکه استفاده می‌کند. .PP \fICREATE\-OPTIONS\fR := [ \fBfamily\fR { \fBinet\fR | \fBinet6\fR } ] [ \fBhashsize\fR \fIvalue\fR ] [ \fBmaxelem\fR \fIvalue\fR ] [ \fBbucketsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fInetaddr\fR,[\fBphysdev\fR:]\fIiface\fR .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBnomatch\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] [ \fBwildcard\fR ] .PP \fIDEL\-ENTRY\fR := \fInetaddr\fR,[\fBphysdev\fR:]\fIiface\fR .PP \fITEST\-ENTRY\fR := \fInetaddr\fR,[\fBphysdev\fR:]\fIiface\fR .PP که در آن .PP \fInetaddr\fR := \fIip\fR[/\fIcidr\fR] .PP برای بخش \fInetaddr\fR عناصر به توضیحات مربوط به نوع مجموعه \fBhash:net\fR مراجعه کنید. .PP هنگام افزودن، حذف یا آزمودن مدخل‌ها، اگر پارامتر پیشوند cidr مشخص نشود، مقدار پیشوند میزبان فرض می‌شود. هنگام افزودن یا حذف مدخل‌ها، عنصر دقیق اضافه یا حذف می‌شود و عناصر هم‌پوشان توسط هسته بررسی نمی‌شوند. هنگام آزمودن مدخل‌ها، اگر یک آدرس میزبان آزموده شود، هسته تلاش می‌کند تا آدرس میزبان را در شبکه‌های افزوده‌شده به مجموعه تطبیق دهد و نتیجه را متناسب با آن گزارش نماید. .PP از دیدگاه تطابق نت‌فیلتر \fBset\fR، جستجو برای تطابق همیشه از کوچک‌ترین اندازه بلوک شبکه (خاص‌ترین پیشوند) تا بزرگ‌ترین آن (عمومی‌ترین پیشوند) افزوده‌شده به مجموعه آغاز می‌شود. هنگام افزودن یا حذف آدرس‌های IP به مجموعه توسط هدف نت‌فیلتر \fBSET\fR، با خاص‌ترین پیشوندی که در مجموعه یافت می‌شود، یا در صورت خالی بودن مجموعه با مقدار پیشوند میزبان اضافه یا حذف خواهد شد. .PP دومین پارامتر جهت در ماژول‌های تطابق \fBset\fR و هدف \fBSET\fR متناظر با رابط ورودی یا خروجی است: پارامتر \fBsrc\fR به رابط ورودی (مشابه فلگ \fB\-i\fR در iptables)، در حالی که \fBdst\fR به رابط خروجی (مشابه فلگ \fB\-o\fR در iptables) اشاره دارد. هنگامی که رابط با \fBphysdev:\fR علامت‌گذاری شده باشد، رابط به عنوان پورت پل (bridge port) ورودی یا خروجی تفسیر می‌شود. .PP زمان جستجو به صورت خطی با تعداد مقادیر پیشوندهای مختلف افزوده‌شده به مجموعه افزایش می‌یابد. .PP محدودیت داخلی نوع مجموعه \fBhash:net,iface\fR این است که یک پیشوند شبکه یکسان را نمی‌توان با بیش از ۶۴ رابط مختلف در یک مجموعه ذخیره کرد. .PP مثال‌ها: .IP ipset create foo hash:net,iface .IP ipset add foo 192.168.0/24,eth0 .IP ipset add foo 10.1.0.0/16,eth1 .IP ipset test foo 192.168.0/24,eth0 .SS list:set نوع \fBlist:set\fR از یک فهرست ساده استفاده می‌کند که در آن می‌توانید نام مجموعه‌ها را ذخیره کنید. .PP \fICREATE\-OPTIONS\fR := [ \fBsize\fR \fIvalue\fR ] [ \fBtimeout\fR \fIvalue\fR ] [ \fBcounters\fP ] [ \fBcomment\fP ] [ \fBskbinfo\fP ] .PP \fIADD\-ENTRY\fR := \fIsetname\fR [ { \fBbefore\fR | \fBafter\fR } \fIsetname\fR ] .PP \fIADD\-OPTIONS\fR := [ \fBtimeout\fR \fIvalue\fR ] [ \fBpackets\fR \fIvalue\fR ] [ \fBbytes\fR \fIvalue\fR ] [ \fBcomment\fR \fIstring\fR ] [ \fBskbmark\fR \fIvalue\fR ] [ \fBskbprio\fR \fIvalue\fR ] [ \fBskbqueue\fR \fIvalue\fR ] .PP \fIDEL\-ENTRY\fR := \fIsetname\fR [ { \fBbefore\fR | \fBafter\fR } \fIsetname\fR ] .PP \fITEST\-ENTRY\fR := \fIsetname\fR [ { \fBbefore\fR | \fBafter\fR } \fIsetname\fR ] .PP گزینه‌های اختیاری دستور \fBcreate\fR: .TP \fBsize\fR \fIvalue\fR اندازه فهرست که مقدار پیش‌فرض آن 8 است. این پارامتر از نسخه 6.24 نرم‌افزار ipset به بعد نادیده گرفته می‌شود. .PP با دستور \fBipset\fR می‌توانید نام مجموعه‌ها را در مجموعه‌ای از نوع \fBlist:set\fR اضافه، حذف و بررسی کنید. .PP توسط تطابق \fBset\fR یا هدف \fBSET\fR نت‌فیلتر می‌توانید مدخل‌ها را در مجموعه‌های افزوده‌شده به مجموعه نوع \fBlist:set\fR بیازمایید، اضافه کنید یا حذف نمایید. تطابق تلاش خواهد کرد تا یک مدخل منطبق را در مجموعه‌ها بیابد و هدف تلاش خواهد کرد تا یک مدخل را به نخستین مجموعه‌ای که امکان افزودن به آن وجود دارد اضافه کند. تعداد گزینه‌های جهت تطابق و هدف اهمیت دارد: مجموعه‌هایی که به پارامترهای بیشتری نسبت به مقدار مشخص‌شده نیاز دارند نادیده گرفته می‌شوند، در حالی که مجموعه‌های دارای پارامترهای برابر یا کمتر بررسی شده و عناصر به آن‌ها اضافه یا حذف می‌شوند. برای مثال اگر \fIa\fR و \fIb\fR مجموعه‌هایی از نوع \fBlist:set\fR باشند، در دستور: .IP iptables \-m set \-\-match\-set a src,dst \-j SET \-\-add\-set b src,dst .PP تطابق و هدف هر مجموعه‌ای را در \fIa\fR و \fIb\fR که سه‌تایی‌های داده را ذخیره می‌کند نادیده می‌گیرند، اما تمام مجموعه‌های با ذخیره‌سازی داده تکی یا دوگانه را در مجموعه \fIa\fR بررسی کرده و در نخستین مجموعه منطبق متوقف می‌شوند، و سپس پارامتر src را به نخستین مجموعه داده تکی، یا پارامترهای src,dst را به نخستین مجموعه داده دوگانه در \fIb\fR که امکان افزودن مدخل به آن فراهم باشد اضافه می‌کنند. می‌توانید مجموعه‌ای از نوع \fBlist:set\fR را به عنوان یک اجتماع مرتب از عناصر مجموعه‌ها تصور کنید. .PP لطفاً توجه داشته باشید: با دستور \fBipset\fR می‌توانید نام مجموعه‌ها را در یک مجموعه از نوع \fBlist:set\fR اضافه، حذف و \fBبررسی\fR (\fBtest\fR) کنید، و \fBنه\fR حضور یکی از اعضای مجموعه (مانند یک آدرس IP) را. .SH "محدودیت‌های عمومی (GENERAL RESTRICTIONS)" مدخل‌های مجموعه با مقدار صفر را نمی‌توان با روش‌های درهم‌سازی استفاده کرد. مقدار پروتکل صفر نیز برای پورت‌ها قابل استفاده نیست. .SH "نکات و توضیحات (COMMENTS)" اگر می‌خواهید زیرشبکه‌های هم‌اندازه از یک شبکه معین (مثلاً بلوک‌های /24 از یک شبکه /8) را ذخیره کنید، از نوع مجموعه \fBbitmap:ip\fR استفاده نمایید. اگر می‌خواهید شبکه‌های هم‌اندازه تصادفی (مثلاً بلوک‌های تصادفی /24) را ذخیره کنید، از نوع مجموعه \fBhash:ip\fR استفاده کنید. اگر بلوک‌های شبکه‌ای با اندازه‌های تصادفی دارید، از \fBhash:net\fR استفاده نمایید. .PP تطابق روی آدرس‌های MAC مقصد با استفاده از پارامتر \fBdst\fR در ماژول‌های هسته نت‌فیلتر تطابق \fBset\fR تنها در صورتی کار خواهد کرد که آدرس MAC مقصد در مرحله پردازش مربوطه در بسته موجود باشد؛ یعنی تنها برای بسته‌های ورودی در زنجیره‌های \fBPREROUTING\fR، \fBINPUT\fR و \fBFORWARD\fR در برابر آدرس MAC همان‌طور که در اصل در بسته دریافتی یافت شده است (معمولاً یکی از آدرس‌های MAC میزبان محلی) اعمال می‌شود. این آدرس، آن آدرس MAC مقصدی \fBنیست\fR که یک آدرس IP مقصد پس از مسیریابی به آن حل می‌شود. اگر آدرس MAC در دسترس نباشد (برای مثال در زنجیره \fBOUTPUT\fR)، بسته به سادگی مطابقت داده نخواهد شد. .PP سازگاری رو به عقب حفظ شده و نحو قدیمی \fBipset\fR همچنان پشتیبانی می‌شود. .PP انواع مجموعه‌های \fBiptree\fR و \fBiptreemap\fR حذف شده‌اند: اگر به آن‌ها ارجاع دهید، به طور خودکار با مجموعه‌های نوع \fBhash:ip\fR جایگزین می‌شوند. .SH "عیب‌یابی (DIAGNOSTICS)" پیام‌های خطای گوناگون در خطای استاندارد چاپ می‌شوند. کد خروج برای عملکرد صحیح صفر (0) است. .SH "اشکالات (BUGS)" اشکال نرم‌افزاری؟ خیر، فقط قابلیت‌های جالب! :\\-) شوخی بود، اشکال شناخته‌شده‌ای وجود ندارد... .SH "همچنین ببینید (SEE ALSO)" \fBiptables\fR(8), \fBip6tables\fR(8) \fBiptables-extensions\fR(8) .SH "نویسندگان (AUTHORS)" Jozsef Kadlecsik برنامه ipset را نوشت که بر پایه ippool اثر Joakim Axelsson، Patrick Schaaf و Martin Josefsson بنا شده است. .br Sven Wegener نوع iptreemap را نوشت. .SH "نکته پایانی (LAST REMARK)" \fBI stand on the shoulders of giants.\fR