مبانی شبکه لینوکس برای مدیریت سرور

شبکه یکی از بخش‌های حیاتی در مدیریت سرورهای لینوکس است. حتی اگر سیستم‌عامل و سرویس‌ها در ظاهر سالم باشند، یک پیکربندی اشتباه شبکه می‌تواند باعث اختلال کامل در دسترسی به سرور شود.

در این مطلب، مفاهیم پایه شبکه در لینوکس برای مدیریت سرورها را به‌صورت کاربردی بررسی می‌کنیم، از مدیریت اینترفیس‌ها و IP گرفته تا DNS، مسیریابی (Routing)، تنظیمات فایروال و روش‌های عیب‌یابی مشکلات اتصال.

منظور از شبکه در لینوکس چیست؟

شبکه در لینوکس مشخص می‌کند که یک سرور چگونه داده‌ها را در شبکه محلی یا اینترنت ارسال و دریافت کند. این فرآیند از اینترفیس‌های شبکه و IP آدرس‌ها شروع شده و سپس Routing، DNS و فایروال مسیر و دسترسی ترافیک را کنترل می‌کنند.

هدف اصلی در مدیریت سرور، ایجاد دسترسی پایدار و امن است، به این معنا که فقط سرویس‌های ضروری در دسترس باشند و سایر دسترسی‌ها محدود شوند.

معماری شبکه در لینوکس

معماری شبکه در لینوکس ساختاری است که کرنل، اینترفیس‌های شبکه، آدرس‌های IP، مسیرهای ارتباطی (Routes)، تنظیمات DNS و قوانین فایروال را به یکدیگر متصل می‌کند. این معماری مشخص می‌کند که ترافیک چگونه بین برنامه‌های اجراشده روی سرور و شبکه‌هایی که از آن‌ها استفاده می‌کنند، جابه‌جا می‌شود.

  • Network Interfaces

اینترفیس‌ها نقاط ورود و خروج ترافیک در سیستم هستند.

نمونه نام‌ها:eth0, ens3, enp0s3, lo

  • IP Addresses

IP  شناسه ارتباطی سرور در شبکه هستند.

  • Routing Table

لینوکس با استفاده از Routing Table مشخص می‌کند هر بسته باید از چه مسیری ارسال شود.

  • DNS

DNS وظیفه تبدیل دامنه به IP را بر عهده دارد.

  • Firewall

فایروال با استفاده از iptables یا nftables ترافیک ورودی و خروجی را کنترل می‌کند.

  • Network Management Layer

ابزارهایی مانند Netplan یا NetworkManager تنظیمات شبکه را در زمان بوت اعمال می‌کنند.

دستورات مهم شبکه در لینوکس

در این بخش، مهم‌ترین دستورات مورد استفاده برای مدیریت شبکه در لینوکس آورده شده است:

  • ip link
    نمایش لیست اینترفیس‌های شبکه و وضعیت آن‌ها
  • ip addr
    نمایش IPهای اختصاص داده شده به اینترفیس‌ها (IPv4 و IPv6)
  • ip -br addr
    نمایش خلاصه و یک‌خطی از وضعیت اینترفیس‌ها
  • ping
    بررسی اتصال پایه به یک هاست
  • traceroute و mtr
    بررسی مسیر بسته‌ها تا مقصد و تحلیل latency و packet loss
  • curl
    ارسال درخواست HTTP/HTTPS برای تست API یا وب‌سرویس
  • ip route
    نمایش جدول مسیریابی سیستم
  • ip route get
    بررسی مسیر واقعی ارسال بسته به یک IP مشخص
  • dig و host
    بررسی DNS و resolve شدن دامنه‌ها
  • resolvectl status
    نمایش تنظیمات DNS در سیستم‌های مبتنی بر systemd
  • ss -tulpn
    نمایش پورت‌های باز و سرویس‌های در حال گوش دادن
  • tcpdump
    مانیتورینگ و بررسی ترافیک شبکه در سطح بسته‌ها

پیکربندی تنظیمات شبکه در لینوکس

در یک سرور لینوکس، تنظیمات شبکه مشخص می‌کنند که کدام اینترفیس‌ها فعال شوند، هر اینترفیس از چه IP آدرسی استفاده کند و ترافیک خروجی از چه مسیری عبور کند. در این بخش، برای مثال‌ها از Ubuntu Server 24.04 به همراه Netplan استفاده می‌کنیم.

مرحله 1: بررسی IP، مسیرهای شبکه (Routes) و DNS فعلی

در ابتدا بررسی می‌کنیم که کدام آدرس‌های IP در حال حاضر فعال هستند و سیستم چگونه ترافیک را به شبکه‌های دیگر ارسال می‌کند.

برای مشاهده اینترفیس‌های شبکه و آدرس‌های اختصاص داده شده به آن‌ها، دستور زیر را اجرا کنید:

نمونه خروجی:

در این وضعیت، دو اینترفیس اصلی مشاهده می‌شود:

  • اینترفیس lo که همان loopback داخلی سیستم است، با آدرس‌های 127.0.0.1 برای IPv4 و ::1 برای IPv6 نمایش داده شده است. این اینترفیس فقط برای ارتباط داخلی سیستم استفاده می‌شود و ترافیک شبکه خارجی از آن عبور نمی‌کند.
  • اینترفیس eth0 در وضعیت UP قرار دارد، یعنی فعال است و در حال حاضر در حال سرویس‌دهی شبکه می‌باشد.

این اینترفیس دارای چندین آدرس IP است:

آدرس IPv4 برابر xxx.xxx.xxx.xxx است که نشان‌دهنده IP عمومی سرور و subnet مربوط به آن می‌باشد.
یک آدرس IPv6 عمومی هم با مقدار روی این اینترفیس تنظیم شده است.
همچنین یک آدرس لینک-لوکال IPv6 با مقدار fe80::5054:ff:fe25:3053/64 برای ارتباطات داخلی شبکه محلی روی همین اینترفیس فعال است.

به طور کلی، این خروجی نشان می‌دهد که سرور دارای یک اینترفیس فعال با دسترسی کامل به شبکه IPv4 و IPv6 است و در وضعیت عملیاتی (UP) قرار دارد.

برای مشاهده جزئیات دقیق‌تر از همه آدرس‌ها و وضعیت اینترفیس‌ها، می‌توان از دستور کامل زیر استفاده کرد:

در سیستم‌هایی که از NetworkManager استفاده می‌کنند، دستور زیر اطلاعات IP هر دستگاه را نمایش می‌دهد:

این دستور اطلاعاتی مانند IPv4، IPv6، تنظیمات DNS و سایر تنظیمات ارتباطی هر اینترفیس را نمایش می‌دهد.

بررسی مسیرها و Gateway پیش‌فرض

در مرحله بعد، جدول مسیریابی (Routing Table) بررسی می‌شود:

نمونه خروجی:

در این جدول مسیریابی، دو مسیر اصلی مشاهده می‌شود:

  • خط اول مربوط به مسیر پیشفرض (default route) است. این مسیر نشان می‌دهد که تمام ترافیکی که مقصد مشخصی در جدول ندارد، از طریق Gateway با آدرس x.x.x.x و از طریق اینترفیس eth0 ارسال می‌شود. این مسیر به صورت static تنظیم شده است.
  • خط دوم مربوط به شبکه محلی مستقیم (connected network) است. شبکه x.x.x.xبه صورت مستقیم روی اینترفیس eth0 قرار دارد و سرور با IP x.x.x.x عضو این شبکه است. در این حالت، ارتباط با سایر IPهای همین subnet بدون نیاز به Gateway انجام می‌شود.

در مجموع، این خروجی نشان می‌دهد که سرور یک مسیر پیشفرض برای دسترسی به اینترنت دارد و در عین حال به صورت مستقیم به شبکه محلی خود هم متصل است.

بررسی تنظیمات DNS

دستور resolvectl status وضعیت فعلی DNS سرور را نمایش می‌دهد، شامل DNS سرورهای فعال و تنظیمات Resolver:

نمونه خروجی :

در بخش Global، وضعیت کلی DNS Resolver سیستم نمایش داده شده است. در این حالت:

  • قابلیت‌های LLMNR و mDNS غیرفعال هستند.
  • DNS-over-TLS هم فعال نشده است.
  • حالت فایل etc/resolv.conf/ در وضعیت stub قرار دارد، یعنی درخواست‌های DNS ابتدا به resolver محلی ارسال می‌شوند.

در بخش مربوط به اینترفیس eth0:

  • DNS برای این لینک فعال است و در Scope مربوط به DNS قرار دارد.
  • مسیر پیشفرض DNS برای این اینترفیس فعال است (+DefaultRoute)

همچنین مشخص است که سرور در حال حاضر از DNS اصلی 8.8.8.8 به عنوان Current DNS Server استفاده می‌کند.

بررسی فایل resolv.conf

برنامه‌ها معمولا فایل etc/resolv.conf/ را برای تنظیمات DNS استفاده می‌کنند، بنابراین این فایل نیز بررسی می‌شود:

خروجی:

در این تنظیمات، مشاهده می‌شود که DNS سیستم به صورت غیرمستقیم و از طریق یک resolver محلی مدیریت می‌شود:

  • خط nameserver 127.0.0.53 نشان می‌دهد که درخواست‌های DNS به یک resolver محلی ارسال می‌شوند. این آدرس مربوط به سرویس systemd-resolved است که نقش واسط بین سیستم و DNS سرورهای اصلی را دارد.
  • گزینه options edns0 trust-ad مربوط به تنظیمات پیشرفته DNS است.
    این گزینه باعث بهبود عملکرد درخواست‌های DNS و پشتیبانی بهتر از پاسخ‌های توسعه‌یافته می‌شود.
  • مقدار search nrp.co نشان می‌دهد که در صورت وارد کردن نام‌های کوتاه (بدون دامنه کامل)، سیستم به صورت خودکار دامنه nrp.co را به انتهای آن اضافه می‌کند تا فرآیند resolve انجام شود.

در مجموع، این فایل نشان می‌دهد که سیستم به جای استفاده مستقیم از DNS سرورها، از یک resolver محلی استفاده می‌کند و درخواست‌ها را از طریق 127.0.0.53 مدیریت و به سرورهای upstream منتقل می‌کند.

مرحله ۲: پیدا کردن و بررسی فایل‌های پیکربندی Netplan

تنظیمات پایدار شبکه در این سرور در قالب فایل‌های YAML مربوط به Netplan و در مسیر /etc/netplan/ ذخیره می‌شوند. در این مرحله ابتدا فایل‌های موجود را بررسی کرده و سپس مشخص می‌کنیم کدام فایل مربوط به اینترفیس eth0 است.

برای مشاهده فایل‌های موجود در این مسیر، دستور زیر اجرا می‌شود:

نمونه خروجی:

در این خروجی مشاهده می‌شود که در مسیر etc/netplan/ تنها یک فایل تنظیمات شبکه وجود دارد:

  • فایل 50-cloud-init.yaml که توسط cloud-init ایجاد شده و شامل تنظیمات اصلی شبکه سیستم است.

این فایل معمولا مسئول پیکربندی اینترفیس‌های شبکه، IP آدرس‌ها، DNS و Gateway در سرورهای Ubuntu است. در سیستم‌هایی که فقط یک فایل در این مسیر دارند، تمام تنظیمات شبکه از طریق همین فایل مدیریت می‌شود.

در ادامه، برای پیدا کردن تمام ارجاعات مربوط به eth0 در فایل‌های Netplan، از دستور زیر استفاده می‌کنیم:

خروجی:

در این خروجی مشاهده می‌شود که اینترفیس eth0 در فایل Netplan دو بار استفاده شده است:

  • در خط 4، تعریف اصلی اینترفیس eth0 در ساختار تنظیمات شبکه قرار دارد. این بخش معمولا شامل تنظیمات کلی مانند IP، Gateway و DNS است.
    در خط 18، مقدار set-name: “eth0” مشخص می‌کند که نام اینترفیس به صورت ثابت روی eth0 تنظیم شده است. این تنظیم باعث می‌شود نام کارت شبکه در بوت سیستم تغییر نکند و همیشه همین نام را داشته باشد.

در مجموع، این خروجی نشان می‌دهد که تمام تنظیمات شبکه این سرور بر اساس اینترفیس eth0 مدیریت می‌شود و Netplan نیز همین نام را به صورت قطعی برای کارت شبکه اعمال کرده است.

در ادامه فایل مربوط به اینترفیس اصلی را باز می‌کنیم:

نمونه ساختار فایل:

در این ساختار:

در این تنظیمات، پیکربندی کامل اینترفیس eth0 مشخص شده است:

  • بخش match بر اساس MAC Address مشخص می‌کند که این تنظیمات دقیقاً روی کدام کارت شبکه اعمال شوند. مقدار 52:54:00:25:30:53 شناسه سخت‌افزاری این اینترفیس است.
  • در بخش addresses، دو آدرس IP برای اینترفیس تعریف شده است:
    • یک IPv4 عمومی
    • یک IPv6 عمومی
  • در بخش nameservers، سرورهای DNS مشخص شده‌اند:
    • Google DNS برای IPv4: 8.8.8.8 و 8.8.4.4
    • Google DNS برای IPv6: 2001:4860:4860::8888 و 2001:4860:4860::8844
    • همچنین دامنه جستجو (search domain) برابر nrp.co تنظیم شده است که برای resolve کردن نام‌های کوتاه استفاده می‌شود.
  • مقدار set-name: “eth0” تضمین می‌کند که نام اینترفیس در سیستم همیشه eth0 باقی بماند و تغییر نکند.
  • در بخش routes، مسیر پیش‌فرض (default route) تعریف شده است که نشان می‌دهد ترافیک خروجی سیستم از طریق Gateway پیشفرض ارسال خواهد شد.

در مجموع، این فایل نشان‌دهنده یک پیکربندی کامل و استاندارد برای یک سرور لینوکسی است که همزمان از IPv4 و IPv6، DNSهای عمومی و یک دامنه داخلی استفاده می‌کند و مسیر پیش‌فرض شبکه نیز در آن تعریف شده است.

مرحله ۳: پاک‌سازی و به‌روزرسانی پیکربندی Netplan

در این مرحله پیش از اعمال هرگونه تغییر، ابتدا یک نسخه پشتیبان از فایل تنظیمات تهیه می‌کنیم تا در صورت نیاز امکان بازگشت به وضعیت قبلی وجود داشته باشد.

برای ایجاد بکاپ از فایل پیکربندی، دستور زیر اجرا می‌شود:

در صورت نیاز به بازگردانی تنظیمات قبلی، می‌توان از دستور زیر استفاده کرد:

ویرایش فایل پیکربندی

در ادامه، فایل مربوط به اینترفیس eth0 را باز کرده و ساختار آن را مطابق نمونه زیر (با استفاده از آدرس‌های اختصاصی سرور خود) به‌روزرسانی می‌کنیم:

نمونه پیکربندی:

حالت استفاده از DHCP

اگر این سرور به‌جای IP ثابت از DHCP استفاده کند، پیکربندی اینترفیس ساده‌تر خواهد بود:

در این حالت، دریافت آی‌پی، Gateway پیش‌فرض و معمولا DNS به‌صورت خودکار توسط DHCP Server انجام می‌شود و نیازی به تعریف دستی این مقادیر در Netplan وجود ندارد.

مرحله ۴: اعتبارسنجی، اعمال و بررسی ایمن تنظیمات

پس از به‌روزرسانی فایل پیکربندی Netplan، لازم است تنظیمات جدید ابتدا بررسی، سپس به‌صورت ایمن آزمایش و در نهایت به‌طور دائمی اعمال شوند. این فرآیند از بروز قطعی شبکه در صورت وجود خطا جلوگیری می‌کند.

اعتبارسنجی پیکربندی

در اولین قدم، ساختار فایل YAML بررسی شده و فایل‌های backend تولید می‌شوند:

در صورت صحیح بودن تنظیمات، خروجی شامل پیام‌هایی مشابه زیر خواهد بود:

در مجموع، این خروجی نشان می‌دهد که:

  • تنظیمات Netplan بدون خطا هستند
  • مسیرهای شبکه برای eth0 به درستی پردازش شده‌اند
  • سیستم در حال استفاده از backend مناسب برای اعمال تنظیمات شبکه است

تست ایمن تنظیمات (با قابلیت بازگشت خودکار)

در ادامه، تنظیمات جدید را به‌صورت موقت و با امکان بازگشت خودکار آزمایش می‌کنیم:

در این حالت، تنظیمات جدید به‌طور موقت اعمال شده و پیامی مشابه زیر نمایش داده می‌شود:

اگر در بازه زمانی تعیین‌شده کلید Enter فشرده شود، تنظیمات جدید تایید و ذخیره می‌شوند. در غیر این صورت، سیستم به‌صورت خودکار به تنظیمات قبلی بازمی‌گردد. این مکانیسم برای جلوگیری از قطع دسترسی SSH بسیار حیاتی است.

بررسی همزمان اتصال شبکه

در حین اجرای netplan try، می‌توان از یک ترمینال یا session دیگر وضعیت شبکه را بررسی کرد:

بررسی آدرس IP اینترفیس اصلی:

بررسی دسترسی به Gateway:

بررسی عملکرد DNS:

بررسی DNSهای فعال روی اینترفیس:

در این مرحله باید DNSهای جدید در خروجی قابل مشاهده باشند. در صورت موفق بودن این تست‌ها، می‌توان به پنجره netplan try بازگشت و تنظیمات را تایید کرد.

اعمال دائمی تنظیمات

پس از اطمینان از صحت عملکرد شبکه، تنظیمات به‌صورت دائمی اعمال می‌شوند:

در نهایت، برای اطمینان از پایداری تنظیمات، بررسی‌های زیر انجام می‌شود:

این بررسی‌ها تایید می‌کنند که آدرس IP، مسیر پیش‌فرض (Default Route) و DNS به‌درستی تنظیم شده‌اند و تنظیمات پس از ریبوت نیز پایدار خواهند بود.

مبانی Routing در لینوکس

Routing یا مسیریابی تعیین می‌کند که بسته‌های داده چگونه از یک سرور خارج شده و به سیستم‌های دیگر در شبکه برسند. کرنل لینوکس (Kernel) یک جدول مسیریابی (Routing Table) را مدیریت می‌کند که در آن، مقصدها به اینترفیس‌های خروجی و Gatewayها نگاشت می‌شوند.

بررسی Routing Table در لینوکس

برای مشاهده جدول مسیریابی از دستور زیر استفاده می‌شود:

بررسی مسیر انتخاب‌شده برای یک مقصد

برای مشاهده اینکه یک مقصد خاص از کدام مسیر استفاده خواهد کرد، بدون ارسال واقعی ترافیک، از دستور زیر استفاده می‌شود:

این دستور اطلاعاتی مانند اینترفیس خروجی، Gateway و آدرس منبع را نمایش می‌دهد.

افزودن مسیرهای موقت (Temporary Routes)

برای تست‌های سریع می‌توان مسیرهای جدید را به‌صورت موقت اضافه کرد:

برای حذف این مسیر:

این تغییرات دائمی نیستند و پس از ریبوت سیستم حذف می‌شوند.

اگر به دنبال سرعت و پایداری هستید، زمان خرید سرور مجازی فرا رسیده است

دائمی‌سازی Routing در Ubuntu با Netplan

در اوبونتو، تنظیمات پایدار Routing در فایل‌های Netplan تعریف می‌شوند. نمونه زیر علاوه بر مسیر پیشفرض، یک Route اضافی نیز تعریف می‌کند:

پس از ذخیره فایل، تغییرات اعمال می‌شوند:

پیکربندی فایروال در لینوکس

فایروال وظیفه کنترل ترافیک ورودی و خروجی سرور را بر عهده دارد. در Ubuntu ابزار UFW یک رابط ساده برای مدیریت nftables محسوب می‌شود.

بررسی وضعیت فایروال

این دستور وضعیت فعال بودن فایروال، سیاست‌های پیشفرض و قوانین موجود را نمایش می‌دهد.

تنظیم سیاست‌های پیش‌فرض

یک تنظیم پایه و رایج برای سرورها:

در این حالت تمام ورودی‌ها به‌صورت پیشفرض مسدود و ترافیک خروجی مجاز خواهد بود.

باز کردن سرویس‌های ضروری

فعال‌سازی SSH:

محدود کردن SSH به یک IP خاص:

باز کردن HTTP و HTTPS:

فعال‌سازی فایروال:

در این مرحله هشدار زیر نمایش داده می‌شود:

بنابراین قبل از تایید، باید اطمینان حاصل شود که دسترسی SSH دچار اختلال نمی‌شود.

مشاهده وضعیت نهایی فایروال

مدیریت و حذف قوانین

برای مشاهده قوانین همراه با شماره:

حذف یک قانون بر اساس شماره:

یا حذف بر اساس تعریف:

سرویس‌ها و Daemonهای شبکه

سرویس‌های شبکه معمولا به‌صورت فرآیندهای پس‌زمینه (Daemon) اجرا می‌شوند و روی پورت‌ها گوش می‌دهند مانند SSH، وب‌سرورها و DNS.

برای مشاهده پورت‌های در حال Listening:

برای مشاهده پردازش‌های مرتبط:

مدیریت سرویس‌ها با systemctl

بررسی وضعیت SSH:

وضعیت سالم:

دستورات مدیریت سرویس:

فعال یا غیرفعال کردن سرویس در زمان بوت:

عیب‌یابی مشکلات شبکه در لینوکس

مشکلات شبکه معمولا در چند دسته قرار می‌گیرند: تنظیمات اشتباه IP، نبود Route، مشکلات DNS، عدم اجرای سرویس‌ها یا قوانین فایروال.

بررسی تنظیمات محلی

بررسی مسیر پیشفرض:

تست اتصال با ping

بررسی Gateway:

اگر خطای Network unreachable مشاهده شود، مشکل از تنظیم IP یا Route است.

تست اینترنت:

بررسی DNS

مقایسه نام دامنه و IP:

اگر IP پاسخ دهد اما دامنه نه، مشکل مربوط به DNS است.

بررسی DNS:

بررسی سرویس‌ها

بررسی پورت‌ها:

بررسی فایروال

در صورت نیاز:

بهترین روش‌های امنیت شبکه در لینوکس

  • محدود کردن سرویس‌های باز

هر پورت باز یک سطح ریسک امنیتی است. فقط سرویس‌های ضروری باید فعال باشند.

  • تقویت امنیت SSH

استفاده از SSH Key، غیرفعال کردن ورود مستقیم root و استفاده از کاربر sudo توصیه می‌شود.

  • به‌روزرسانی سیستم و استفاده مداوم از فایروال

به‌روزرسانی منظم کرنل، سرویس‌ها و قوانین فایروال نقش مهمی در امنیت دارد.

  • مستندسازی و بازبینی دوره‌ای

باید مشخص باشد چه سرویس‌هایی روی چه پورت‌هایی فعال هستند و این موارد به‌صورت دوره‌ای بررسی شوند.

جمع‌بندی

در این مطلب، مبانی اصلی شبکه در لینوکس شامل بررسی اینترفیس‌ها و آدرس‌های IP، مدیریت Routing، تنظیم و تحلیل DNS، پیکربندی فایروال، مدیریت سرویس‌های شبکه و همچنین روش‌های استاندارد عیب‌یابی مشکلات اتصال به‌صورت کاربردی بررسی شد.

در طول این آموزش، بررسی کردیم که چگونه وضعیت شبکه را در سطح سیستم بررسی کنیم، مسیر ترافیک را در جدول Routing تحلیل کنیم، تنظیمات DNS را کنترل و صحت آن‌ها را ارزیابی کنیم و در نهایت با استفاده از ابزارهای مختلف لینوکس، مشکلات احتمالی ارتباطی را شناسایی و رفع کنیم.

این مفاهیم پایه، ستون اصلی مدیریت شبکه در لینوکس محسوب می‌شوند و درک صحیح و تسلط بر آن‌ها برای مدیریت حرفه‌ای سرورها، افزایش پایداری سرویس‌ها و تضمین امنیت زیرساخت‌های شبکه کاملا ضروری است.