IP، Subnet، Routing و Port
IP Address چیست؟
هر دستگاه در شبکه یک آدرس IP دارد — چیزی شبیه آدرس پستی، اما برای بستههای دیجیتال. نسخهی رایج، IPv4 است: چهار عدد بین ۰ تا ۲۵۵ که با نقطه از هم جدا شدهاند، مثل 192.168.56.10. در IPv6 آدرسها طولانیتر و بر پایهی hex هستند (مثلاً fe80::1)، اما در این درس تمرکزمان روی IPv4 است چون هنوز رایجترین چیزی است که در محیطهای DevOps میبینید.
هر آدرس IP از دو بخش تشکیل شده: بخش Network (اینکه دستگاه در کدام شبکه است) و بخش Host (خودِ دستگاه). Subnet Mask مشخص میکند کجا این دو بخش از هم جدا میشوند. در نوشتار 192.168.1.10/24، عدد /24 میگوید ۲۴ بیت اول (یعنی سه عدد اول) بخش شبکه است؛ هر دستگاهی که این سه عدد اولش با شما یکسان باشد، در همان شبکهی محلی است و مستقیم به شما میرسد، بدون واسطه.
چرا این تفاوت مهم است؟ چون تصمیم اول هر بسته همین است: «مقصد در همین شبکهی محلی است، یا باید از یک روتر عبور کند؟» اگر دو دستگاه در یک Subnet باشند (مثلاً هر دو /24 و سه عدد اولشان یکسان)، مستقیم و بدون واسطه به هم میرسند. اگر نباشند، بسته باید از Gateway رد شود — همان چیزی که در بخش بعد با Routing میبینیم.
محدودههای Private و Public
بخشی از محدودههای IPv4 مخصوص شبکههای داخلی است و در اینترنت عمومی مسیریابی نمیشود (طبق RFC 1918). برخی از این محدودهها را احتمالاً دیدهاید:
| محدوده | مثال | کاربرد رایج |
|---|---|---|
10.0.0.0/8 | 10.0.5.20 | شبکههای سازمانی، Clusterها |
172.16.0.0/12 | 172.17.0.2 | شبکهی Docker، برخی دیتاسنترها |
192.168.0.0/16 | 192.168.1.10 | روترهای خانگی، شبکههای کوچک |
هر آدرسی خارج از این محدودهها Public است و در سطح اینترنت یکتا. همین تفاوت پایهی NAT را میسازد: شبکهی داخلی با آدرسهای Private کار میکند و یک دستگاه (معمولاً روتر) وقتی ترافیک میخواهد به بیرون برود، آدرس را بازنویسی میکند. این چیز غریبهای نیست — همین الان در این دوره با آن کار کردهاید: در VirtualBox با NAT، ترافیک VM از طریق سیستم میزبان به بیرون میرود، و با Port Forwarding، اتصال SSH از 127.0.0.1:2222 روی میزبان به پورت 22 داخل VM میرسد.
مشاهدهی IP و Routing در لینوکس
در VM، دو دستور اول که باید با آنها کار کنید اینهاست:
ip addrآدرس IP هر Interface را نشان میدهد؛ دنبال خطهایinetبگردید.ip route showجدول Routing را نشان میدهد. خطی مانندdefault via 10.0.2.2یعنی هر بستهای که مقصدش در جدول تعریف نشده باشد، به همین Gateway فرستاده میشود — در VirtualBox NAT معمولاً همین10.0.2.2است.
معنای عملی Routing همین است: برای هر مقصد یا یک مسیر مشخص در جدول وجود دارد، یا کار به Gateway پیشفرض سپرده میشود. همین دو حالت، تمام منطق مسیریابی است.
پورت چیست و کدامها مهماند؟
آدرس IP شما را به یک دستگاه میرساند؛ اما آن دستگاه ممکن است دهها برنامه همزمان در حال اجرا داشته باشد. اینجاست که پورت (Port) وارد میشود: مشخص میکند پیام دقیقاً برای کدام برنامه است. ترکیب IP:پورت مقصد نهایی یک مکالمه را کامل میکند، و اینجا در واقع در لایهی Transport هستیم. پورتهای ۰ تا ۱۰۲۳ برای سرویسهای شناختهشده رزرو شدهاند و باز کردنشان معمولاً به دسترسی root نیاز دارد.
اینها را در کار روزمرهی DevOps مدام میبینید — بهتر است از الان با آنها آشنا شوید:
| پورت | سرویس |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 6379 | Redis |
پیش از اینکه هر پورتی را روی سرور باز کنید، بدانید پشتش چه سرویسی نشسته و آیا واقعاً باید از بیرون قابلدسترس باشد یا نه. برای دیدن اینکه چه چیزی روی سیستم شما گوش میدهد:
خروجی این دستور برای هر Socket پروتکل، آدرس، پورت و نام فرایند را نشان میدهد. این فهرست، همیشه اولین قدم عیبیابی روی یک سرور تازه است: مثلاً اگر NGINX روی پورت 80 بالا نمیآید، اول ببینید آیا کسی دیگر آن پورت را قبلاً گرفته است یا نه.
تمرین
در VM این سه دستور را اجرا کنید و خروجیهایشان را با هم تطبیق دهید:
از خروجی ip addr آدرس IP و بخش /24 یا /8 جلوی آن را به خاطر بسپرید. بعد به خروجی ip route show نگاه کنید و مسیر default via ... را پیدا کنید — این همان Gateway است که هر بستهی بیمقصد را تحویلش میدهید.
مستقیم به VM متصل شوید (نه با SSH) و سپس سرویس SSH را (در صورت خاموش بودن) با sudo systemctl start ssh.service روشن کنید و ss -tulpn را ببینید تا خط مرتبط با گوشدادن به پورت 22 را پیدا کنید. حالا یک قدم فراتر بروید: سرویس را متوقف کنید (sudo systemctl stop ssh.service) و ss -tulpn را دوباره اجرا کنید. آن خط باید ناپدید شده باشد. این تجربهی کوچک همان چیزی است که در عیبیابی واقعی مدام تکرار میشود: وقتی یک سرویس «در دسترس نیست»، اولین سؤال همیشه همین است — آیا اصلاً روی آن پورت گوش میدهد؟
منابع یادگیری
ویدیو
- Practical Networking — Subnetting Mastery, Parts 1–3 — صرفاً برای آشنایی کلی؛ بخش ۴ به بعد را رد کنید، چون موارد VLSM/CIDR آن فراتر از نیاز این دوره است