فرض کنید روی یک سرور چند سرویس داخلی دارید: دیتابیس، پنل مدیریت و یک API. تا وقتی همۀ آنها در یک شبکۀ مسطح قرار گرفتهاند، هر سرویس میتواند بقیه را ببیند. اگر یکی از این سرویسها آلوده شود، همین دسترسی گسترده میتواند دردسرساز شود. اینجاست که سؤال «Subnet چیست؟» از یک تعریف تئوری فراتر میرود و به بخشی از طراحی شبکه و امنیت تبدیل میشود.
Subnet یا زیر شبکه یعنی تقسیم یک شبکۀ بزرگ به بخشهای کوچکتر و مستقل. در ادامۀ این مطلب از مجلۀ ویپیاس مارکت میبینیم Subnet چیست و بیتهای آدرس IP چه نقشی دارند، بعد سراغ Subnet ID ،Subnet Mask و جدول سابنتینگ میرویم. در بخش پایانی هم روش بررسی و تنظیم این مقادیر را روی یک VPS لینوکسی توضیح میدهیم؛ مراحلی که برای سرور مجازی هلند یا هر لوکیشن دیگری کاربرد دارد.
زیرشبکه (Subnet) چیست و چه مشکلی را حل میکند؟
Subnet یا زیر شبکه، بخشی از یک شبکۀ بزرگتر است که با تقسیم فضای آدرس IP ساخته میشود. بهجای اینکه تعداد زیادی دستگاه در یک شبکۀ واحد قرار بگیرند، شبکه به چند بخش کوچکتر تقسیم میشود و هر بخش محدودۀ آدرس مشخصی دارد. این تقسیمبندی معمولاً 3 فایدۀ اصلی دارد:
- کاهش ترافیک Broadcast: پیامهای Broadcast به همۀ دستگاههای همان شبکه میرسند. هرچه شبکه بزرگتر باشد، این ترافیک بیشتر میشود و منابع بیشتری از سرورها را درگیر میکند.
- کنترل دسترسی: وقتی سرویسها در زیرشبکههای جدا قرار بگیرند، میتوانید با روتر یا فایروال مشخص کنید کدام بخش اجازۀ ارتباط با بخش دیگر را داشته باشد. برای مثال، سرور دیتابیس لزوماً نباید از اینترنت عمومی قابل دسترسی باشد.
- مدیریت منطقی آدرسها: تفکیک آدرسها بر اساس نقش سرویسها، عیبیابی و مستندسازی شبکه را سادهتر میکند.
پس اگر بخواهیم کوتاه جواب بدهیم، Subnet مرزی در فضای IP است که به شما کمک میکند شبکه را منظمتر و قابلکنترلتر طراحی کنید.
زیرشبکه چگونه کار میکند؟
هر آدرس IPv4 دقیقاً ۳۲ بیت دارد و معمولاً در چهار بخش هشتبیتی نمایش داده میشود؛ مثل 192.168.1.130 این ۳۲ بیت از نظر منطقی به دو بخش تقسیم میشوند:
- بخش شبکه (Network): مشخص میکند دستگاه در کدام شبکه قرار دارد.
- بخش میزبان (Host): مشخص میکند در همان شبکه، کدام دستگاه مدنظر است.
مرز بین این دو بخش ثابت نیست و همین موضوع پایۀ Subnetting است. اگر بیتهای بیشتری را به بخش شبکه اختصاص دهید، تعداد زیرشبکهها بیشتر و ظرفیت میزبان در هر زیرشبکه کمتر میشود. اگر مرز را در جهت عکس جابهجا کنید، نتیجه هم برعکس خواهد بود.
برای درک سادهتر، پیششمارۀ تلفن را در نظر بگیرید: بخشی از شماره، محدودۀ جغرافیایی را مشخص میکند و بقیه رقمها به مشترک مربوطاند. Subnet هم منطق مشابهی دارد، با این تفاوت که در طراحی شبکه خودتان تعیین میکنید این «پیششماره» چند بیت باشد.
Subnet Mask چیست؟
Subnet Mask مرز بین بخش شبکه و بخش میزبان را مشخص میکند. ماسک هم یک عدد ۳۲ بیتی است؛ در نمایش باینری، بیتهای ۱ به بخش شبکه و بیتهای ۰ به بخش میزبان مربوط میشوند.
برای مثال، ماسک 255.255.255.0 یعنی ۲۴ بیت اول برای شبکه و ۸ بیت آخر برای میزبانها در نظر گرفته شده است. همین ماسک را میتوان به شکل کوتاهتر /24 نوشت که همان نماد CIDR است. هر دو یک مفهوم را نشان میدهند؛ فقط شیوۀ نمایش متفاوت است. در فایلهای پیکربندی جدید، از جمله Netplan، معمولاً نمایش CIDR رایجتر است.
در بیشتر زیرشبکههای معمول IPv4، دو آدرس به میزبانها اختصاص داده نمیشوند: اولین آدرس، شناسۀ خود شبکه و آخرین آدرس، Broadcast است. به همین دلیل یک /24 با ۲۵۶ آدرس کل، ۲۵۴ آدرس قابل استفاده برای میزبانها دارد.
Subnet ID چیست و چطور محاسبه میشود؟
Subnet ID که به آن Network Address هم گفته میشود، اولین آدرس هر زیرشبکه و شناسۀ آن شبکه است. برای محاسبۀ آن، آدرس IP و Subnet Mask را بیتبهبیت با عملگر AND ترکیب میکنند.
به طور مثال فرض کنید آدرس سرور 192.168.1.130/26 باشد. ماسک /26 معادل 255.255.255.192 است. در اکتت آخر، هر بلوک ۶۴ آدرس دارد؛ بنابراین محدودهها ۰ تا ۶۳، ۶۴ تا ۱۲۷، ۱۲۸ تا ۱۹۱ و ۱۹۲ تا ۲۵۵ هستند. عدد ۱۳۰ در بلوک سوم قرار میگیرد، پس نتیجه به این شکل است:
- سابنت آیدی (Subnet ID): 192.168.1.128
- برادکست (Broadcast): 192.168.1.191
- محدودۀ قابل استفاده: 192.168.1.129 تا 192.168.1.190
- تعداد میزبان قابل استفاده: ۶۲
برای هر محاسبه لازم نیست این مراحل را دستی انجام دهید. در توزیعهای مبتنی بر Debian و Ubuntu، ابزار ipcalc همین اطلاعات را برایتان محاسبه میکند:
sudo apt update sudo apt install -y ipcalc ipcalc 192.168.1.130/26
خروجی ipcalc شامل Network ،HostMin ،HostMax ،Broadcast و تعداد میزبانهاست؛ همان اطلاعاتی که در مثال بالا به دست آوردیم. از طرفی، ابزار همنام در خانوادۀ Red Hat و AlmaLinux ممکن است خروجی متفاوتی داشته باشد. اگر روی CentOS یا AlmaLinux کار میکنید، sipcalc گزینۀ دیگری است که میتوانید از آن استفاده کنید.
Subnetting چیست؟
Subnetting فرایند تقسیم یک شبکه به چند زیرشبکه کوچکتر با تغییر مرز ماسک است. برای نمونه، میتوانید یک شبکه /24 را به چهار زیرشبکه /26 یا هشت زیرشبکه /27 تقسیم کنید. به عنوان مثال فرض کنید بلوک 10.10.0.0/24 را دارید و میخواهید سه گروه جدا بسازید:
- وبسرورها: 10.10.0.0/26 با ۶۲ آدرس قابل استفاده
- دیتابیس: 10.10.0.64/26 با ۶۲ آدرس قابل استفاده
- مدیریت و مانیتورینگ: 10.10.0.128/26 با ۶۲ آدرس قابل استفاده
میتوانید بلوک چهارم را برای رشد آینده نگه دارید. تغییر طرح آدرسدهی بعد از فعال شدن سرویسها معمولاً بهمراتب دردسر بیشتری دارد.
یک نکته مهم را هم نباید فراموش کرد: سابنتینگ بهتنهایی ارتباط بین دو گروه را مسدود نمیکند. اگر روتری بین آنها مسیریابی کند، ترافیک عبور میکند و جداسازی واقعی زمانی شکل میگیرد که قوانین فایروال هم متناسب با این مرزها تنظیم شوند.
جدول سابنتینگ برای IPv4
جدول زیر چند ماسک پرکاربرد در محدوده اکتت آخر را نشان میدهد. برای اینکه سریع ببینید هر ماسک چند آدرس دارد و چند میزبان را پشتیبانی میکند، میتوانید از همین جدول استفاده کنید.
|
CIDR |
Subnet Mask | تعداد کل آدرس | آدرس قابل استفاده |
کاربرد رایج |
|
/24 |
255.255.255.0 | ۲۵۶ | ۲۵۴ |
شبکه داخلی معمولی |
|
/25 |
255.255.255.128 | ۱۲۸ | ۱۲۶ |
تقسیم یک شبکه به دو نیمه |
|
/26 |
255.255.255.192 | ۶۴ | ۶۲ |
تفکیک گروه سرویسها |
|
/27 |
255.255.255.224 | ۳۲ | ۳۰ |
یک رک یا یک تیم کوچک |
|
/28 |
255.255.255.240 | ۱۶ | ۱۴ |
بلوک IP اضافه برای VPS |
|
/29 |
255.255.255.248 | ۸ | ۶ |
چند IP عمومی روی یک سرور |
|
/30 |
255.255.255.252 | ۴ | ۲ |
لینک نقطهبهنقطه بین دو روتر |
دو حالت خاص هم وجود دارد. ماسک /32 یک آدرس تکی را مشخص میکند و در قوانین فایروال زیاد دیده میشود. ماسک /31 نیز طبق RFC 3021 برای لینکهای نقطهبهنقطه تعریف شده و هر دو آدرس آن قابل استفادهاند. با این حال، همۀ تجهیزات قدیمی از این حالت پشتیبانی نمیکنند؛ بنابراین پیش از استفاده در محیط عملیاتی بهتر است سازگاری تجهیزات را بررسی کنید.
تفاوت Subnet و VLAN چیست؟
Subnet و VLAN گاهی با هم اشتباه گرفته میشوند، چون هر دو برای جداسازی بخشهای شبکه به کار میروند؛ اما در لایههای متفاوتی عمل میکنند. تفاوتهای اصلی Subnet و VLAN را در جدول زیر میتوانید ببینید:
|
معیار |
Subnet |
VLAN |
|
لایه شبکه |
لایه ۳، مبتنی بر IP |
لایه ۲، مبتنی بر Ethernet |
|
مبنای جداسازی |
آدرس IP و Subnet Mask |
تگ 802.1Q روی پورت سوییچ |
|
محل پیکربندی |
اینترفیس سرور و جدول مسیریابی |
سوییچ مدیریتشده یا سوییچ مجازی |
|
ارتباط بین بخشها |
نیازمند روتر یا فایروال |
نیازمند روتر یا اینترفیس لایه ۳ |
|
هزینه پیادهسازی |
بدون سختافزار اضافه |
معمولاً نیازمند تجهیزات پشتیبان |
|
کاربرد در VPS |
تفکیک آدرسها و نوشتن قوانین دسترسی |
ساخت شبکه خصوصی بین چند سرور |
در عمل این دو مفهوم میتوانند مکمل هم باشند و یک طراحی رایج این است که برای هر بخش، یک VLAN و یک Subnet متناظر با آن در نظر گرفته شود.
کاربرد Subnet در سرور مجازی چیست؟
روی VPS، زیرشبکه در چند موقعیت مشخص کاربرد پیدا میکند که عبارتاند از:
- بلوک IP اضافه: وقتی چند IP عمومی دریافت میکنید، ممکن است بهصورت یک بلوک /29 یا /28 تحویل داده شوند و لازم باشد همان ماسک را روی اینترفیس تنظیم کنید.
- شبکۀ خصوصی بین سرورها: اگر چند سرور در یک دیتاسنتر دارید، میتوانید ترافیک داخلی را روی یک زیر شبکۀ خصوصی مثل 10.0.0.0/24 قرار دهید تا از اینترنت عمومی عبور نکند.
- قوانین فایروال: بهجای نوشتن یک قانون جدا برای هر IP، میتوانید یک محدوده کامل را مجاز یا مسدود کنید.
- محدود کردن دسترسی SSH: میتوانید اتصال به پورت ۲۲ را فقط برای زیرشبکۀ دفتر یا سرور مدیریت مجاز کنید.
به خاطر داشته باشید که لوکیشن سرور موضوعی جدا از سابنتینگ است، اما روی مسیر و تأخیر شبکه اثر میگذارد. اگر کاربران شما در اروپا هستند، سرور مجازی آلمان میتواند مسیر کوتاهتری ایجاد کند. همچنین برای کاربردهایی که تأخیر نسبت به ایران مهم است نیز VPS امارات معمولاً گزینۀ نزدیکتری است. بعد از هر تغییر شبکه، بهتر است یک تست سرعت انجام دهید تا اثر واقعی تغییر را بسنجید.
آموزش بررسی و تنظیم Subnet روی سرور
قبل از هر تغییری، ابتدا بررسی کنید سرور با چه آدرس و ماسکی کار میکند. در ادامه به این موارد توجه داشته باشید:
- مشاهده آدرس و ماسک در لینوکس: خروجی به شکل CIDR نمایش داده میشود؛ برای مثال 192.168.1.130/26.
ip -4 addr show
- مشاهده مسیر پیشفرض: با این دستور میبینید ترافیک خروجی از کدام گیتوی عبور میکند.
ip route show
- افزودن یک آدرس موقت: این تنظیم بعد از ریاستارت از بین میرود و برای آزمایش مناسب است.
sudo ip addr add 192.168.1.131/26 dev eth0
- تنظیم دائمی در Ubuntu با Netplan: فایل پیکربندی را در مسیر /etc/netplan/ ویرایش کنید. نام اینترفیس را حتماً با خروجی ip -4 addr show تطبیق دهید؛ در بسیاری از سرورها بهجای eth0 نامی مثل ens3 دیده میشود.
network: version: 2 ethernets: eth0: addresses: - 192.168.1.130/26 routes: - to: default via: 192.168.1.129 nameservers: addresses: [1.1.1.1, 8.8.8.8]
- اعمال تنظیمات: بهتر است ابتدا حالت آزمایشی را اجرا کنید. اگر تنظیم جدید را در بازه تعیینشده تأیید نکنید، Netplan به تنظیمات قبلی برمیگردد و احتمال قطع دسترسی SSH کمتر میشود.
sudo netplan try sudo netplan apply
- محدود کردن SSH به یک زیرشبکه با UFW: بعد از اجرای قانون زیر، فقط آدرسهای همان محدوده میتوانند به پورت ۲۲ متصل شوند.
sudo ufw allow from 10.10.0.128/26 to any port 22 proto tcp sudo ufw status numbered
هشدار مهم: پیش از فعال کردن چنین قانونی مطمئن شوید IP فعلی شما داخل همان محدوده قرار دارد؛ در غیر این صورت، ممکن است دسترسی SSH خودتان قطع شود و ناچار شوید از کنسول پنل مدیریت سرور وارد شوید.
3 اشتباه رایج در سابنتینگ
بخش زیادی از خطاهای سابنتینگ نه از محاسبات پیچیده، بلکه از بیدقتی در تعیین محدودهها و ماسکها ایجاد میشود. 3 مورد زیر اشتباهاتی هستند که میتوانند مستقیماً روی مسیریابی و دسترسی سرویسها اثر بگذارند:
1) همپوشانی محدودههای IP
هر زیرشبکه باید محدودۀ مشخص و مستقلی داشته باشد. اگر بخشی از آدرسهای دو Subnet با یکدیگر همپوشانی داشته باشند، تجهیزات شبکه ممکن است نتوانند مسیر درست ترافیک را تشخیص دهند. نتیجۀآ آن میتواند ارتباط ناپایدار یا رفتار غیرقابلپیشبینی در مسیریابی باشد.
برای جلوگیری از این مشکل، قبل از اختصاص IPها، محدودۀ شروع و پایان هر زیرشبکه را مشخص کنید و مطمئن شوید هیچ آدرسی در دو Subnet تکرار نشده است.
2) اشتباه در محاسبۀ آدرسهای قابل استفاده
تعداد کل آدرسهای یک Subnet همیشه با تعداد IPهایی که میتوانید به دستگاهها اختصاص دهید برابر نیست. برای مثال، یک /29 شامل ۸ آدرس است؛ اما در حالت معمول فقط ۶ آدرس آن برای میزبانها قابل استفاده است. آدرس اول به شبکه و آدرس آخر به Broadcast اختصاص دارد.
اگر این دو آدرس را هنگام برنامهریزی در نظر نگیرید، ممکن است تعداد IPهای واقعی کمتر از چیزی باشد که برای سرورها یا سرویسها پیشبینی کردهاید.
3) استفاده از Subnet Mask متفاوت در دو طرف ارتباط
دو دستگاهی که قرار است در یک شبکه با یکدیگر ارتباط داشته باشند، باید برداشت یکسانی از محدودۀ شبکه داشته باشند. اگر مثلاً یک سمت با /24 و سمت دیگر با /25 تنظیم شده باشد، هر دستگاه محدوده متفاوتی را «شبکۀ محلی» در نظر میگیرد.
در چنین شرایطی ممکن است بخشی از ارتباطها برقرار شود و بخشی دیگر با خطا روبهرو شود؛ مشکلی که معمولاً در نگاه اول واضح نیست و عیبیابی آن زمانبر میشود. هنگام تنظیم چند سرور یا دو سر یک لینک، Subnet Mask هر دو سمت را حتماً بررسی کنید.
جمعبندی
Subnet مرزی است که با Subnet Mask در فضای آدرس IP مشخص میکنید تا یک شبکۀ بزرگ به بخشهای کوچکتر و قابلکنترل تقسیم شود. برای شروع، درنظر گرفتن سه نکته کافی است: اول ماسک فعلی سرور را بشناسید، دوم محدودۀ واقعی زیرشبکه را با ابزاری مثل ipcalc حساب کنید و موردم سوم، قوانین فایروال را بر اساس همان محدودهها بنویسید.
اگر در مرحلۀ طراحی زیرساخت هستید، بهتر است طرح آدرسدهی را پیش از خرید سرور مجازی مشخص کنید. تغییر این طرح بعد از راهاندازی سرویسها معمولاً بسیار دشوارتر است.
در پایان، یک نکته مهم باقی میماند؛ سابنتینگ بهخودیخود امنیت ایجاد نمیکند. در واقع فقط ساختاری فراهم میکند که بتوانید کنترل دسترسی را دقیقتر اعمال کنید. تا وقتی روی مرز زیرشبکهها قانون فایروال نداشته باشید، این مرز بیشتر یک تفکیک منطقی است تا یک سد امنیتی.
سؤالات متداول
Subnet چیست و چه فرقی با شبکه معمولی دارد؟
Subnet بخشی از یک شبکۀ بزرگتر است که با تقسیم فضای آدرس IP تعریف میشود. تفاوت اصلی در ماسک است: با تغییر Subnet Mask مشخص میکنید چند بیت به بخش شبکه و چند بیت به میزبانها اختصاص پیدا کند. نتیجه هم این میشود که شبکههای کوچکتری است که مدیریت ترافیک Broadcast و کنترل دسترسی در آنها سادهتر میشود.
Subnet Mask چیست و چطور آن را ببینم؟
Subnet Mask یک مقدار ۳۲ بیتی است که مرز بین بخش شبکه و میزبان در آدرس IPv4 را مشخص میکند. در لینوکس با دستور ip -4 addr show آن را به شکل CIDR، مثل /24، میبینید. در ویندوز نیز دستور ipconfig /all اطلاعات ماسک را به شکل کامل، مثل 255.255.255.0 نمایش میدهد.
Subnet ID چیست؟
Subnet ID یا Network Address اولین آدرس هر زیر شبکه است و به میزبان اختصاص داده نمیشود. برای محاسبۀ آن، آدرس IP و ماسک را با عملگر AND ترکیب میکنند. برای مثال، Subnet ID آدرس 192.168.1.130/26 برابر 192.168.1.128 است. ابزار ipcalc این محاسبه را در یک دستور انجام میدهد.
تعداد میزبانهای هر زیرشبکه را چطور حساب کنم؟
تعداد کل آدرسها از فرمول ۲ به توان «۳۲ منهای عدد CIDR» به دست میآید. در زیرشبکههای معمول IPv4، برای رسیدن به تعداد آدرسهای قابل استفاده دو آدرس کم میشود. برای /28، نتیجۀ ۱۶ آدرس کل و ۱۴ آدرس قابل استفاده است. جدول سابنتینگ همین مقاله هم این مقادیر را سریع نشان میدهد.
آیا سابنتینگ روی سرعت سرور اثر میگذارد؟
بهصورت مستقیم نه. سابنتینگ سرعت پردازش یا پهنای باند سرور را تغییر نمیدهد، اما در شبکههای شلوغ با محدود کردن دامنه Broadcast میتواند ترافیک اضافی را کمتر کند. اگر بین دو زیرشبکه روتر یا فایروال قرار داشته باشد، ممکن است مقدار بسیار کمی تأخیر اضافه شود که معمولاً محسوس نیست.






