شبکه یکی از بخشهای حیاتی در مدیریت سرورهای لینوکس است. حتی اگر سیستمعامل و سرویسها در ظاهر سالم باشند، یک پیکربندی اشتباه شبکه میتواند باعث اختلال کامل در دسترسی به سرور شود.
در این مطلب، مفاهیم پایه شبکه در لینوکس برای مدیریت سرورها را بهصورت کاربردی بررسی میکنیم، از مدیریت اینترفیسها و 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 استفاده میکنیم.
مرحله ۱: بررسی IP، مسیرهای شبکه (Routes) و DNS فعلی
در ابتدا بررسی میکنیم که کدام آدرسهای IP در حال حاضر فعال هستند و سیستم چگونه ترافیک را به شبکههای دیگر ارسال میکند.
برای مشاهده اینترفیسهای شبکه و آدرسهای اختصاص داده شده به آنها، دستور زیر را اجرا کنید:
ip -br addr
نمونه خروجی:

در این وضعیت، دو اینترفیس اصلی مشاهده میشود:
- اینترفیس lo که همان loopback داخلی سیستم است، با آدرسهای ۱۲۷.۰.۰.۱ برای IPv4 و ::۱ برای IPv6 نمایش داده شده است. این اینترفیس فقط برای ارتباط داخلی سیستم استفاده میشود و ترافیک شبکه خارجی از آن عبور نمیکند.
- اینترفیس eth0 در وضعیت UP قرار دارد، یعنی فعال است و در حال حاضر در حال سرویسدهی شبکه میباشد.
این اینترفیس دارای چندین آدرس IP است:
آدرس IPv4 برابر xxx.xxx.xxx.xxx است که نشاندهنده IP عمومی سرور و subnet مربوط به آن میباشد.
یک آدرس IPv6 عمومی هم با مقدار روی این اینترفیس تنظیم شده است.
همچنین یک آدرس لینک-لوکال IPv6 با مقدار fe80::5054:ff:fe25:3053/64 برای ارتباطات داخلی شبکه محلی روی همین اینترفیس فعال است.
به طور کلی، این خروجی نشان میدهد که سرور دارای یک اینترفیس فعال با دسترسی کامل به شبکه IPv4 و IPv6 است و در وضعیت عملیاتی (UP) قرار دارد.
برای مشاهده جزئیات دقیقتر از همه آدرسها و وضعیت اینترفیسها، میتوان از دستور کامل زیر استفاده کرد:
ip addr
در سیستمهایی که از NetworkManager استفاده میکنند، دستور زیر اطلاعات IP هر دستگاه را نمایش میدهد:
nmcli dev show
این دستور اطلاعاتی مانند IPv4، IPv6، تنظیمات DNS و سایر تنظیمات ارتباطی هر اینترفیس را نمایش میدهد.
بررسی مسیرها و Gateway پیشفرض
در مرحله بعد، جدول مسیریابی (Routing Table) بررسی میشود:
ip route
نمونه خروجی:

در این جدول مسیریابی، دو مسیر اصلی مشاهده میشود:
- خط اول مربوط به مسیر پیشفرض (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:
resolvectl status
نمونه خروجی :

در بخش Global، وضعیت کلی DNS Resolver سیستم نمایش داده شده است. در این حالت:
- قابلیتهای LLMNR و mDNS غیرفعال هستند.
- DNS-over-TLS هم فعال نشده است.
- حالت فایل etc/resolv.conf/ در وضعیت stub قرار دارد، یعنی درخواستهای DNS ابتدا به resolver محلی ارسال میشوند.
در بخش مربوط به اینترفیس eth0:
- DNS برای این لینک فعال است و در Scope مربوط به DNS قرار دارد.
- مسیر پیشفرض DNS برای این اینترفیس فعال است (+DefaultRoute)
همچنین مشخص است که سرور در حال حاضر از DNS اصلی ۸.۸.۸.۸ به عنوان Current DNS Server استفاده میکند.
بررسی فایل resolv.conf
برنامهها معمولا فایل etc/resolv.conf/ را برای تنظیمات DNS استفاده میکنند، بنابراین این فایل نیز بررسی میشود:
cat /etc/resolv.conf
خروجی:

در این تنظیمات، مشاهده میشود که 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 محلی استفاده میکند و درخواستها را از طریق ۱۲۷.۰.۰.۵۳ مدیریت و به سرورهای upstream منتقل میکند.
مرحله ۲: پیدا کردن و بررسی فایلهای پیکربندی Netplan
تنظیمات پایدار شبکه در این سرور در قالب فایلهای YAML مربوط به Netplan و در مسیر /etc/netplan/ ذخیره میشوند. در این مرحله ابتدا فایلهای موجود را بررسی کرده و سپس مشخص میکنیم کدام فایل مربوط به اینترفیس eth0 است.
برای مشاهده فایلهای موجود در این مسیر، دستور زیر اجرا میشود:
ls /etc/netplan
نمونه خروجی:

در این خروجی مشاهده میشود که در مسیر etc/netplan/ تنها یک فایل تنظیمات شبکه وجود دارد:
- فایل ۵۰-cloud-init.yaml که توسط cloud-init ایجاد شده و شامل تنظیمات اصلی شبکه سیستم است.
این فایل معمولا مسئول پیکربندی اینترفیسهای شبکه، IP آدرسها، DNS و Gateway در سرورهای Ubuntu است. در سیستمهایی که فقط یک فایل در این مسیر دارند، تمام تنظیمات شبکه از طریق همین فایل مدیریت میشود.
در ادامه، برای پیدا کردن تمام ارجاعات مربوط به eth0 در فایلهای Netplan، از دستور زیر استفاده میکنیم:
grep -n 'eth0' /etc/netplan/*.yaml
خروجی:

در این خروجی مشاهده میشود که اینترفیس eth0 در فایل Netplan دو بار استفاده شده است:
- در خط ۴، تعریف اصلی اینترفیس eth0 در ساختار تنظیمات شبکه قرار دارد. این بخش معمولا شامل تنظیمات کلی مانند IP، Gateway و DNS است.
در خط ۱۸، مقدار set-name: “eth0” مشخص میکند که نام اینترفیس به صورت ثابت روی eth0 تنظیم شده است. این تنظیم باعث میشود نام کارت شبکه در بوت سیستم تغییر نکند و همیشه همین نام را داشته باشد.
در مجموع، این خروجی نشان میدهد که تمام تنظیمات شبکه این سرور بر اساس اینترفیس eth0 مدیریت میشود و Netplan نیز همین نام را به صورت قطعی برای کارت شبکه اعمال کرده است.
در ادامه فایل مربوط به اینترفیس اصلی را باز میکنیم:
nano /etc/netplan/50-cloud-init.yaml
نمونه ساختار فایل:

در این ساختار:
در این تنظیمات، پیکربندی کامل اینترفیس eth0 مشخص شده است:
- بخش match بر اساس MAC Address مشخص میکند که این تنظیمات دقیقاً روی کدام کارت شبکه اعمال شوند. مقدار ۵۲:۵۴:۰۰:۲۵:۳۰:۵۳ شناسه سختافزاری این اینترفیس است.
- در بخش addresses، دو آدرس IP برای اینترفیس تعریف شده است:
- یک IPv4 عمومی
- یک IPv6 عمومی
- در بخش nameservers، سرورهای DNS مشخص شدهاند:
- Google DNS برای IPv4: 8.8.8.8 و ۸.۸.۴.۴
- Google DNS برای IPv6: 2001:4860:4860::8888 و ۲۰۰۱:۴۸۶۰:۴۸۶۰::۸۸۴۴
- همچنین دامنه جستجو (search domain) برابر nrp.co تنظیم شده است که برای resolve کردن نامهای کوتاه استفاده میشود.
- مقدار set-name: “eth0” تضمین میکند که نام اینترفیس در سیستم همیشه eth0 باقی بماند و تغییر نکند.
- در بخش routes، مسیر پیشفرض (default route) تعریف شده است که نشان میدهد ترافیک خروجی سیستم از طریق Gateway پیشفرض ارسال خواهد شد.
در مجموع، این فایل نشاندهنده یک پیکربندی کامل و استاندارد برای یک سرور لینوکسی است که همزمان از IPv4 و IPv6، DNSهای عمومی و یک دامنه داخلی استفاده میکند و مسیر پیشفرض شبکه نیز در آن تعریف شده است.
مرحله ۳: پاکسازی و بهروزرسانی پیکربندی Netplan
در این مرحله پیش از اعمال هرگونه تغییر، ابتدا یک نسخه پشتیبان از فایل تنظیمات تهیه میکنیم تا در صورت نیاز امکان بازگشت به وضعیت قبلی وجود داشته باشد.
برای ایجاد بکاپ از فایل پیکربندی، دستور زیر اجرا میشود:
cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.backup
در صورت نیاز به بازگردانی تنظیمات قبلی، میتوان از دستور زیر استفاده کرد:
cp /etc/netplan/50-cloud-init.yaml.backup /etc/netplan/50-cloud-init.yaml
ویرایش فایل پیکربندی
در ادامه، فایل مربوط به اینترفیس eth0 را باز کرده و ساختار آن را مطابق نمونه زیر (با استفاده از آدرسهای اختصاصی سرور خود) بهروزرسانی میکنیم:
nano /etc/netplan/50-cloud-init.yaml
نمونه پیکربندی:

حالت استفاده از DHCP
اگر این سرور بهجای IP ثابت از DHCP استفاده کند، پیکربندی اینترفیس سادهتر خواهد بود:
در این حالت، دریافت آیپی، Gateway پیشفرض و معمولا DNS بهصورت خودکار توسط DHCP Server انجام میشود و نیازی به تعریف دستی این مقادیر در Netplan وجود ندارد.
network: version: 2 ethernets: eth0: match: macaddress: "0c:c5:7a:32:d3:20" dhcp4: true mtu: 1500
مرحله ۴: اعتبارسنجی، اعمال و بررسی ایمن تنظیمات
پس از بهروزرسانی فایل پیکربندی Netplan، لازم است تنظیمات جدید ابتدا بررسی، سپس بهصورت ایمن آزمایش و در نهایت بهطور دائمی اعمال شوند. این فرآیند از بروز قطعی شبکه در صورت وجود خطا جلوگیری میکند.
اعتبارسنجی پیکربندی
در اولین قدم، ساختار فایل YAML بررسی شده و فایلهای backend تولید میشوند:
netplan --debug generate
در صورت صحیح بودن تنظیمات، خروجی شامل پیامهایی مشابه زیر خواهد بود:

در مجموع، این خروجی نشان میدهد که:
- تنظیمات Netplan بدون خطا هستند
- مسیرهای شبکه برای eth0 به درستی پردازش شدهاند
- سیستم در حال استفاده از backend مناسب برای اعمال تنظیمات شبکه است
تست ایمن تنظیمات (با قابلیت بازگشت خودکار)
در ادامه، تنظیمات جدید را بهصورت موقت و با امکان بازگشت خودکار آزمایش میکنیم:
netplan try
در این حالت، تنظیمات جدید بهطور موقت اعمال شده و پیامی مشابه زیر نمایش داده میشود:

اگر در بازه زمانی تعیینشده کلید Enter فشرده شود، تنظیمات جدید تایید و ذخیره میشوند. در غیر این صورت، سیستم بهصورت خودکار به تنظیمات قبلی بازمیگردد. این مکانیسم برای جلوگیری از قطع دسترسی SSH بسیار حیاتی است.
بررسی همزمان اتصال شبکه
در حین اجرای netplan try، میتوان از یک ترمینال یا session دیگر وضعیت شبکه را بررسی کرد:
بررسی آدرس IP اینترفیس اصلی:
ip -br addr show eth0
بررسی دسترسی به Gateway:
ping -c 2 46.166.165.1
بررسی عملکرد DNS:
ping -c 2 google.com
بررسی DNSهای فعال روی اینترفیس:
resolvectl status eth0
در این مرحله باید DNSهای جدید در خروجی قابل مشاهده باشند. در صورت موفق بودن این تستها، میتوان به پنجره netplan try بازگشت و تنظیمات را تایید کرد.
اعمال دائمی تنظیمات
پس از اطمینان از صحت عملکرد شبکه، تنظیمات بهصورت دائمی اعمال میشوند:
netplan apply
در نهایت، برای اطمینان از پایداری تنظیمات، بررسیهای زیر انجام میشود:
ip -br addr resolvectl status eth0 ping -c 2 46.166.165.1 ping -c 2 google.com
این بررسیها تایید میکنند که آدرس IP، مسیر پیشفرض (Default Route) و DNS بهدرستی تنظیم شدهاند و تنظیمات پس از ریبوت نیز پایدار خواهند بود.
مبانی Routing در لینوکس
Routing یا مسیریابی تعیین میکند که بستههای داده چگونه از یک سرور خارج شده و به سیستمهای دیگر در شبکه برسند. کرنل لینوکس (Kernel) یک جدول مسیریابی (Routing Table) را مدیریت میکند که در آن، مقصدها به اینترفیسهای خروجی و Gatewayها نگاشت میشوند.
بررسی Routing Table در لینوکس
برای مشاهده جدول مسیریابی از دستور زیر استفاده میشود:
ip route
بررسی مسیر انتخابشده برای یک مقصد
برای مشاهده اینکه یک مقصد خاص از کدام مسیر استفاده خواهد کرد، بدون ارسال واقعی ترافیک، از دستور زیر استفاده میشود:
ip route get 8.8.8.8
این دستور اطلاعاتی مانند اینترفیس خروجی، Gateway و آدرس منبع را نمایش میدهد.
افزودن مسیرهای موقت (Temporary Routes)
برای تستهای سریع میتوان مسیرهای جدید را بهصورت موقت اضافه کرد:
ip route add 10.20.0.0/16 via x.x.x.x dev eth0
برای حذف این مسیر:
ip route del 10.20.0.0/16 via x.x.x.x dev eth0
این تغییرات دائمی نیستند و پس از ریبوت سیستم حذف میشوند.
اگر به دنبال سرعت و پایداری هستید، زمان خرید سرور مجازی فرا رسیده است
دائمیسازی Routing در Ubuntu با Netplan
در اوبونتو، تنظیمات پایدار Routing در فایلهای Netplan تعریف میشوند. نمونه زیر علاوه بر مسیر پیشفرض، یک Route اضافی نیز تعریف میکند:
پس از ذخیره فایل، تغییرات اعمال میشوند:
netplan apply
پیکربندی فایروال در لینوکس
فایروال وظیفه کنترل ترافیک ورودی و خروجی سرور را بر عهده دارد. در Ubuntu ابزار UFW یک رابط ساده برای مدیریت nftables محسوب میشود.
بررسی وضعیت فایروال
ufw status verbose
این دستور وضعیت فعال بودن فایروال، سیاستهای پیشفرض و قوانین موجود را نمایش میدهد.
تنظیم سیاستهای پیشفرض
یک تنظیم پایه و رایج برای سرورها:
ufw default deny incoming ufw default allow outgoing
در این حالت تمام ورودیها بهصورت پیشفرض مسدود و ترافیک خروجی مجاز خواهد بود.
باز کردن سرویسهای ضروری
فعالسازی SSH:
ufw allow 22/tcp
محدود کردن SSH به یک IP خاص:
ufw allow from x.x.x.x to any port 22 proto tcp
باز کردن HTTP و HTTPS:
ufw allow 80/tcp ufw allow 443/tcp
فعالسازی فایروال:
ufw enable
در این مرحله هشدار زیر نمایش داده میشود:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
بنابراین قبل از تایید، باید اطمینان حاصل شود که دسترسی SSH دچار اختلال نمیشود.
مشاهده وضعیت نهایی فایروال
ufw status verbose
مدیریت و حذف قوانین
برای مشاهده قوانین همراه با شماره:
ufw status numbered
حذف یک قانون بر اساس شماره:
ufw delete 1
یا حذف بر اساس تعریف:
ufw delete allow 80/tcp
سرویسها و Daemonهای شبکه
سرویسهای شبکه معمولا بهصورت فرآیندهای پسزمینه (Daemon) اجرا میشوند و روی پورتها گوش میدهند مانند SSH، وبسرورها و DNS.
برای مشاهده پورتهای در حال Listening:
ss -tuln
برای مشاهده پردازشهای مرتبط:
ss -tulpen
مدیریت سرویسها با systemctl
بررسی وضعیت SSH:
systemctl status ssh
وضعیت سالم:
Active: active (running)
دستورات مدیریت سرویس:
systemctl restart ssh systemctl start nginx systemctl stop nginx
فعال یا غیرفعال کردن سرویس در زمان بوت:
systemctl enable nginx systemctl disable nginx
عیبیابی مشکلات شبکه در لینوکس
مشکلات شبکه معمولا در چند دسته قرار میگیرند: تنظیمات اشتباه IP، نبود Route، مشکلات DNS، عدم اجرای سرویسها یا قوانین فایروال.
بررسی تنظیمات محلی
بررسی مسیر پیشفرض:
ip route show default
تست اتصال با ping
بررسی Gateway:
ping -c 2 46.166.165.1
اگر خطای Network unreachable مشاهده شود، مشکل از تنظیم IP یا Route است.
تست اینترنت:
ping -c 2 8.8.8.8
بررسی DNS
مقایسه نام دامنه و IP:
ping -c 2 8.8.8.8 ping -c 2 google.com
اگر IP پاسخ دهد اما دامنه نه، مشکل مربوط به DNS است.
بررسی DNS:
resolvectl status
بررسی سرویسها
systemctl status ssh systemctl restart ssh
بررسی پورتها:
ss -tuln
بررسی فایروال
ufw status verbose
در صورت نیاز:
ufw allow 80/tcp
بهترین روشهای امنیت شبکه در لینوکس
- محدود کردن سرویسهای باز
هر پورت باز یک سطح ریسک امنیتی است. فقط سرویسهای ضروری باید فعال باشند.
- تقویت امنیت SSH
استفاده از SSH Key، غیرفعال کردن ورود مستقیم root و استفاده از کاربر sudo توصیه میشود.
- بهروزرسانی سیستم و استفاده مداوم از فایروال
بهروزرسانی منظم کرنل، سرویسها و قوانین فایروال نقش مهمی در امنیت دارد.
- مستندسازی و بازبینی دورهای
باید مشخص باشد چه سرویسهایی روی چه پورتهایی فعال هستند و این موارد بهصورت دورهای بررسی شوند.
جمعبندی
در این مطلب، مبانی اصلی شبکه در لینوکس شامل بررسی اینترفیسها و آدرسهای IP، مدیریت Routing، تنظیم و تحلیل DNS، پیکربندی فایروال، مدیریت سرویسهای شبکه و همچنین روشهای استاندارد عیبیابی مشکلات اتصال بهصورت کاربردی بررسی شد.
در طول این آموزش، بررسی کردیم که چگونه وضعیت شبکه را در سطح سیستم بررسی کنیم، مسیر ترافیک را در جدول Routing تحلیل کنیم، تنظیمات DNS را کنترل و صحت آنها را ارزیابی کنیم و در نهایت با استفاده از ابزارهای مختلف لینوکس، مشکلات احتمالی ارتباطی را شناسایی و رفع کنیم.
این مفاهیم پایه، ستون اصلی مدیریت شبکه در لینوکس محسوب میشوند و درک صحیح و تسلط بر آنها برای مدیریت حرفهای سرورها، افزایش پایداری سرویسها و تضمین امنیت زیرساختهای شبکه کاملا ضروری است.