IP Set فهرستی نامدار از آدرسهای IPv4 و رنجهای شبکه (CIDR) است که در پنل ستون ایجاد میکنیم و میتوانیم آن را در قوانین فایروال بهعنوان شرط آدرس IP استفاده کنیم.
بهجای اینکه چندین آدرس IP را در قوانین مختلف فایروال تکرار کنیم، آنها را در یک IP Set قرار میدهیم و همان لیست را در قوانین موردنیاز انتخاب میکنیم.
Note
IP Set بهتنهایی باعث Allow یا Block شدن ترافیک نمیشود. IP Set فقط مشخص میکند یک IP در فهرست قرار دارد یا خیر؛ این عملیات قانون فایروال است که رفتار نهایی را تعیین میکند.
IP Set چگونه با Firewall کار میکند؟
IP Set در کنار شرط آدرس IP در قوانین فایروال استفاده میشود. هنگام ایجاد قانون، میتوانیم مشخص کنیم IP بازدیدکننده:
- در IP Set وجود داشته باشد
- در IP Set وجود نداشته باشد
سپس برای درخواستهای منطبق، عملیات موردنظر مانند Allow یا Block را تعیین میکنیم.
برای مثال، اگر IP Set با نام office-whitelist شامل IPهای شبکه دفتر باشد، میتوانیم قانونی بسازیم که درخواستهای دارای IP موجود در این لیست را Allow کند.
flowchart LR visitor(["IP بازدیدکننده"]) ipset(["IP Set"]) rule(["قانون فایروال"]) action(["عملیات: Allow / Block"]) visitor --> ipset ipset --> rule rule --> action
IP Set در چه سطحی تعریف میشود؟
IP Set در فضای کاری ایجاد میشود و به یک وبسایت خاص محدود نیست. بنابراین میتوانیم یک IP Set را در قوانین فایروال چند وبسایت استفاده کنیم.
flowchart LR ipset(["IP Set در فضای کاری"]) siteA(["قانون فایروال وبسایت الف"]) siteB(["قانون فایروال وبسایت ب"]) edge(["لبه"]) ipset --> siteA ipset --> siteB siteA --> edge siteB --> edge
وقتی اعضای IP Set را تغییر میدهیم، قوانین فایروالی که به آن IP Set ارجاع میدهند، از فهرست بهروزشده استفاده میکنند.
اعضای IP Set چه معنایی دارند؟
هر عضو IP Set میتواند یکی از این موارد باشد:
- یک آدرس IPv4، مانند
5.52.10.20 - یک رنج شبکه با فرمت CIDR، مانند
5.52.0.0/16
برای مثال:
5.52.10.20
5.52.11.0/24
5.52.12.0/24هر آدرس یا رنج را در یک خط جداگانه وارد میکنیم.
در فایروال، میتوانیم عضویت IP را با دو عملگر بررسی کنیم:
| عملگر | درخواست منطبق |
|---|---|
در IP Set وجود داشته باشد | IP بازدیدکننده عضو IP Set باشد |
در IP Set وجود نداشته باشد | IP بازدیدکننده عضو IP Set نباشد |
عضویت در IP Set بهتنهایی رفتار ترافیک را مشخص نمیکند. برای مثال، یک IP Set میتواند در یک قانون برای Allow و در قانون دیگری برای Block استفاده شود.
چرا IP Set را جدا از قانون نگه میداریم؟
فرض میکنیم مجموعهای از IPهای دفتر، سرویسهای داخلی یا آدرسهای مسدودشده داریم و لازم است این مجموعه در چند قانون استفاده شود.
اگر IPها را مستقیما داخل هر قانون وارد کنیم، با تغییر اعضای این مجموعه باید چند قانون را جداگانه ویرایش کنیم. با IP Set، فهرست IPها را یکجا مدیریت میکنیم و قوانین فقط به نام آن فهرست ارجاع میدهند.
مزایای استفاده از IP Set
- بهروزرسانی آسان: با تغییر آدرسها در یک IP Set، قوانین فایروالی که از آن استفاده میکنند، از فهرست بهروزشده استفاده میکنند.
- خوانایی قوانین: بهجای داشتن چندین شرط مشابه برای IPهای مختلف، میتوانیم یک قانون را به یک IP Set مشخص متصل کنیم.
- کاهش خطا: نگهداری آدرسها در یک محل، از واردکردن تکراری و ناسازگار IPها در قوانین مختلف جلوگیری میکند.
IP Set و شرط کشور
IP Set برای تعریف مجموعهای مشخص از آدرسها و رنجهای IP استفاده میشود، در حالی که شرط کشور بر اساس کشور منتسب به IP درخواست عمل میکند.
اگر هدف ما اعمال یک قانون بر اساس کشور بازدیدکننده است، استفاده از شرط کشور مناسبتر از ساختن یک IP Set شامل رنجهای IP آن کشور است.
برای مثال، اگر هدف این باشد که دسترسی به یک مسیر فقط از یک کشور مشخص مجاز باشد، میتوانیم این شرط را مستقیما در قانون فایروال تعریف کنیم.
استفاده از IP Set برای چنین سناریویی نیازمند نگهداری مداوم رنجهای IP کشور موردنظر است، زیرا این رنجها ممکن است تغییر کنند.
IP Set پنل و ipset روی سرور مبدا
IP Set در پنل ستون با ابزار ipset در سیستمعامل سرور مبدا یکسان نیست و در دو نقطه متفاوت از مسیر درخواست استفاده میشوند:
| IP Set پنل | ipset روی سرور مبدا | |
|---|---|---|
| محل استفاده | فایروال لبه CDN | فایروال سیستمعامل سرور مبدا |
| چه چیزی را بررسی میکند؟ | IP بازدیدکننده در لبه CDN | IP اتصالدهنده به سرور مبدا |
| محل تعریف فهرست | پنل ستون | روی سرور مبدا |
| کاربرد معمول | اعمال قوانین فایروال روی گروهی از IPها | کنترل دسترسی مستقیم به سرور |
اگر هدف ما این است که فقط لبههای ستون بتوانند به سرور مبدا متصل شوند، موضوع اصلی محافظت از مبدا (Origin Protection) است و باید از روش مربوط به Whitelist کردن IPهای لبه استفاده کنیم.
چه زمانی از IP Set استفاده کنیم؟
IP Set زمانی مفید است که بخواهیم یک مجموعه مشخص از IPها را در یک یا چند قانون فایروال استفاده کنیم.
برای مثال، فرض میکنیم مجموعهای از IPهای شناختهشدهای داریم که باید دسترسی آنها به یک وبسایت مسدود شود:
185.10.20.10
185.10.20.11
185.10.21.0/24این آدرسها را در یک IP Set مانند block-list قرار میدهیم و سپس در قانون فایروال، شرط در IP Set وجود داشته باشد را انتخاب کرده و عملیات Block را اعمال میکنیم.
در این حالت، مدیریت اعضای فهرست از منطق قانون فایروال جدا میشود و برای تغییر اعضا نیازی به بازنویسی خود قانون نداریم.
استخراج لیست آیپیهای کشورهای مختلف
برای استخراج لیست آیپیهای یک کشور خاص (مانند ایران) جهت استفاده در قابلیت IP Set، روشهای مختلفی وجود دارد. با توجه به اینکه پنل ستون از فرمت CIDR پشتیبانی میکند، بهترین راه استفاده از ابزارهای آنلاین معتبری است که این لیستها را بهصورت آماده و بهروز ارایه میدهند.
در ادامه، ۳ روش ساده و کاربردی برای این کار آورده شده است:
۱. استفاده از ابزار IP2Location (پیشنهادی)
این وبسایت یکی از دقیقترین منابع برای دریافت لیست آیپیهای تفکیکشده بر اساس کشور است:
- به صفحه IP2Location Visitor Blocker میرویم.
- کشور مورد نظر (مثلا Iran) را انتخاب میکنیم.
- در بخش IP Version، گزینه IPv4 را انتخاب میکنیم.
- در بخش Output Format، حتما گزینه CIDR را انتخاب میکنیم.
- روی دکمه Download کلیک میکنیم. فایل خروجی را باز کرده و محتویات آن را در بخش IP Set پنل کپی میکنیم.
۲. استفاده از سرویس IP-API یا IPRange
سایتهایی مانند iprange.net یا ipaddress.com نیز لیستهای مشابهی را ارایه میدهند:
- کافی است نام کشور را جستجو کنیم (مثلا:
Iran IP Ranges CIDR). - دقت میکنیم که لیست حتما شامل رنجهای شبکهای (مانند
5.52.0.0/16) باشد تا تعداد خطوط کمتری مصرف شده و مدیریت آن آسانتر باشد.
۳. استفاده از گیتهاب (برای توسعهدهندگان)
مخازن متعددی در GitHub وجود دارند که لیست آیپیهای ایران را بهصورت روزانه آپدیت میکنند. این روش برای کسانی که میخواهند از طریق API این لیست را دریافت و بهطور خودکار بهروزرسانی کنند عالی است:
- جستجوی عبارت
iran-ip-listدر گیتهاب پروژههای معتبری را نشان میدهد که فایلهای.txtسادهای شامل تمام رنجها ارایه میدهند.
