---
title: نصب فایروال در لینوکس
description: در لینوکس، فایروال یک برنامه یا سرویس است که ترافیک شبکه را هنگام عبور و مرور به سرور لینوکس با استفاده از مجموعه‌ای از قوانین از پیش تعیین‌شده فیلتر یا کنترل می‌کند. یک فایروال معمولاً طوری پیکربندی می‌شود که به ترافیک مورد نظر اجازه عبور دهد و بقیه ترافیک خارجی را مسدود کند.
url: "https://www.novinhost.org/docs/how-to-setup-linux-firewall/"
updated: "2025-10-20"
category: راهنمای لینوکس
---

# نصب فایروال در لینوکس

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

[فایروال](https://firewalld.org/) از مفهوم مناطق (zones) برای مدیریت ترافیک شبکه استفاده می‌کند. مناطق (zones) مجموعه‌ای از قوانین از پیش تعریف شده هستند که می‌توانند به رابط‌های شبکه اختصاص داده شوند. می‌توانید فایروال را طوری پیکربندی کنید که سرویس‌ها یا پورت‌های مرتبط با برنامه‌ها را مجاز یا مسدود کند.

در این آموزش، نحوه راه‌اندازی فایروال لینوکس با استفاده از سرویس firewalld را نشان خواهیم داد. ما این کار را روی یک سرور Red Hat Enterprise 9 (RHEL 9) نشان خواهیم داد.

## نحوه نصب و فعال کردن فایروال

به طور پیش‌فرض، firewalld در توزیع‌های مبتنی بر RHEL مانند RHEL، AlmaLinux، CentOS، Rocky Linux و Fedora نصب شده است. با این حال، اگر به هر دلیلی firewalld نصب نشد، می‌توانید آن را به صورت زیر نصب کنید.

```bash
sudo dnf install firewalld -y
```

در توزیع‌های اوبونتو و دبیان، دستورات زیر را اجرا کنید:

```bash
sudo apt update

sudo apt install firewalld -y
```

پس از نصب، آن را فعال کنید تا هنگام بوت شروع به کار کند.

```bash
sudo systemctl enable firewalld
```

در مرحله بعد، سرویس یا دیمون firewalld را شروع کنید.

```bash
sudo systemctl start firewalld
```

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

```bash
sudo systemctl status firewalld
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/01-6.png)
نصب فایروال در لینوکس

 

روش دیگر، می‌توانید دستور زیر را اجرا کنید:

```bash
sudo firewall-cmd --state
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/02-5.png)

خروجی بالا تأیید می‌کند که فایروال فعال و در حال اجرا است.

## مناطق فایروال

قبل از اینکه نحوه تنظیم فایروال firewalld را یاد بگیرید، بهتر است با چند مفهوم مرتبط با این ابزار آشنا شوید.

این `firewalld`سرویس از مناطق (zones) برای مدیریت ترافیک استفاده می‌کند. مناطق (zones) به سادگی مجموعه‌ای از قوانین از پیش تعریف شده هستند که بر اساس سطح اعتماد در شبکه شما، تعیین می‌کنند چه ترافیکی باید مجاز باشد. بیایید نگاهی سریع به مناطق از پیش تعریف شده بیندازیم.

**بلوک** - تمام اتصالات ورودی با پیام icmp-host-prohibited قطع می‌شوند. فقط اتصالات شبکه‌ای که از داخل سیستم آغاز می‌شوند، امکان‌پذیر هستند.

**قطع اتصال**- این ناحیه با پایین‌ترین سطح اعتماد است. تمام اتصالات ورودی بدون پاسخ قطع می‌شوند و فقط اتصالات خروجی مجاز هستند.

**عمومی** - این نشان دهنده شبکه‌های غیرقابل اعتماد است. این زمانی پیاده‌سازی می‌شود که به سرورهای دیگر در شبکه اعتماد ندارید. این حالت زمانی توصیه می‌شود که سروری روی ابر یا شبکه محلی دارید.

**خارجی** - زمانی استفاده می‌شود که می‌خواهید فایروال را به عنوان یک دروازه NAT پیکربندی کنید. منطقه خارجی برای نقاب NAT استفاده می‌شود به طوری که شبکه داخلی شما خصوصی باقی بماند اما از سیستم‌های خارجی قابل دسترسی باشد.

**داخلی**- برای شبکه‌های داخلی زمانی استفاده می‌شود که به رایانه‌ها یا سرورهای دیگر در شبکه محلی خود اعتماد دارید.

**dmz** - برای سرورها یا رایانه‌های موجود در DMZ (منطقه غیرنظامی) استفاده می‌شود. این موارد برای سیستم‌های موجود در شبکه شما قابل دسترسی نخواهند بود و فقط اتصالات ورودی خاص مجاز هستند.

**محل کار** - در محل کار شما که به اکثر رایانه‌ها و رایانه‌های همکارانتان اعتماد دارید، استفاده می‌شود.

**خانگی** - در محیط خانه، به خصوص روی کامپیوترهای رومیزی و لپ‌تاپ‌های موجود در شبکه محلی شما استفاده می‌شود. مفهوم آن این است که شما به اکثر دستگاه‌های موجود در شبکه محلی خانگی خود اعتماد دارید و برخی از سرویس‌ها مجاز هستند.

**مورد اعتماد** - همه اتصالات پذیرفته می‌شوند.

با اجرای دستور زیر در ترمینال می‌توانید لیستی از تمام مناطق را دریافت کنید.

```bash
sudo firewall-cmd --get-zones
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/03-5.png)

علاوه بر این، هر منطقه فایل .xml مربوط به خود را دارد که در `/usr/lib/firewalld/zones/`دایرکتوری ذخیره شده است. می‌توانید فایل‌ها را به صورت زیر فهرست کنید.

```bash
ls -l /usr/lib/firewalld/zones/
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/04-5.png)

 

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

```bash
firewall-cmd --get-default-zone
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/05-5.png)

 

بدون ایجاد هیچ تغییری در فایروال، منطقه پیش‌فرض، `public`منطقه‌ای است که اتفاقاً تنها منطقه فعال موجود نیز می‌باشد. به طور پیش‌فرض، تمام رابط‌های شبکه به این منطقه متصل هستند. برای نشان دادن این موضوع، ما دو رابط شبکه فعال متصل به سیستم RHEL خود داریم - `ens160`و `ens224`.

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

```bash
ip link
```

یا

```bash
ip link show
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/06-4.png)

برای تأیید مناطق فعال، دستور زیر را اجرا کنید:

```bash
firewall-cmd --get-active-zones
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/07-3.png)

در اینجا، می‌توانید ببینید که دو رابط - `ens160`و `ens224`- توسط منطقه عمومی مرتبط و مدیریت می‌شوند.

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

```bash
sudo firewall-cmd --list-all
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/08-4.png)

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

### تغییر مناطق برای رابط‌های شبکه

وقتی یک فایروال شروع به کار می‌کند، هر رابط شبکه به منطقه پیش‌فرض متصل می‌شود که اتفاقاً تنها منطقه فعال نیز هست. در صورت تمایل، می‌توانید در طول یک جلسه با استفاده از `--zone=`پرچم ** در ترکیب با **`--change-interface=`**پرچم، یک رابط را به منطقه دیگری متصل کنید.

برای مثال، برای انتقال `ens160`رابط به `internal`منطقه، دستور زیر را اجرا کنید:

```bash
sudo firewall-cmd --change-interface=ens160 --zone=internal
```

برای تأیید جابجایی رابط، با استفاده از دستور زیر، مناطق فعال را جستجو کنید.

```bash
sudo firewall-cmd --get-active-zones
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/09-4.png)

از خروجی می‌توانید ببینید که اکنون دو منطقه فعال داریم: `internal`و `public`. `ens160`رابط اکنون به منطقه منتقل شده است `internal`.

شما می‌توانید پیکربندی‌های خاص مرتبط با یک منطقه‌ی متفاوت را با استفاده از `--zone=`پرچم موجود در `--list-all`دستوری که قبلاً دیدیم، بررسی کنید. به عنوان مثال، برای بررسی پیکربندی مرتبط با `internal`منطقه، دستور زیر را اجرا کنید:

```bash
sudo firewall-cmd --list-all --zone=internal
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/10-4.png)

شما می‌توانید تمام پیکربندی‌های منطقه را با استفاده از `--list-all-zones`پارامتر نشان داده شده چاپ کنید.

```bash
sudo firewall-cmd --list-all-zones
```

خروجی نمایش داده شده بسیار بزرگ است. برای مشاهده آسان‌تر، می‌توانید خروجی را به ** متصل کنید `less`که امکان مشاهده آسان‌تر را هنگام پیمایش در تنظیمات فراهم می‌کند.

```bash
sudo firewall-cmd --list-all-zones | less
```

**توجه:**

هنگام انتقال یک رابط به یک منطقه جدید، باید احتیاط کرد زیرا برخی از سرویس‌های مرتبط با یک منطقه ممکن است در منطقه دیگری وجود نداشته باشند. به عنوان مثال، انتقال یک رابط به `trusted`منطقه ** باعث قطع اتصال SSH شما می‌شود زیرا SSH به طور پیش‌فرض در آن منطقه فعال نیست. در نتیجه، از سرور خارج خواهید شد.

### تنظیم منطقه پیش‌فرض

پارامتر ** `--set-default-zone=`به شما امکان می‌دهد منطقه پیش‌فرض را تغییر دهید. در این مثال، ما منطقه پیش‌فرض را روی تنظیم می‌کنیم **`work`**.

```bash
sudo firewall-cmd --set-default-zone=work
```

برای تأیید اینکه این منطقه پیش‌فرض است، دستور زیر را اجرا کنید:

```bash
sudo firewall-cmd --list-all
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/11-4.png)

## مدیریت سرویس فایروال

سرویس‌ها به سادگی سرویس‌هایی هستند که در پس‌زمینه اجرا می‌شوند. هر سرویس با یک پورت خاص مرتبط است. به عنوان مثال، SSH روی پورت ۲۲، HTTP روی پورت ۸۰ و cockpit روی پورت ۹۰۹۰ اجرا می‌شود که چند نمونه از آنها هستند.

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

```bash
sudo firewall-cmd --list-all
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/12-4.png)

 

برای محدود کردن و فهرست کردن سرویس‌هایی که به یک منطقه خاص متصل هستند، از `--zone=`flag همانطور که نشان داده شده است استفاده کنید. دستور زیر سرویس‌های مرتبط با `home`منطقه فایروال را فهرست می‌کند.

```bash
sudo firewall-cmd --list-all --zone=home
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/13-2.png)

 

اگر به اندازه کافی مشتاق باشید، متوجه خواهید شد که برخی سرویس‌ها به طور پیش‌فرض در برخی مناطق مجاز هستند. این سرویس‌ها شامل cockpit، SSH و dhcpv6-client می‌شوند.

### نحوه فهرست کردن سرویس‌های پشتیبانی شده توسط Firewalld

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

```bash
sudo firewall-cmd --get-services
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/14-2.png)

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

```bash
sudo firewall-cmd --get-services | grep -i mongodb
```

### نحوه اضافه کردن/حذف سرویس‌ها در Firewalld

وقتی سرویس‌ها/پورت‌ها به فایروال اضافه می‌شوند، به منطقه فعال پیش‌فرض متصل می‌شوند، مگر اینکه صریحاً به منطقه دیگری پیکربندی شده باشند. برای فعال کردن یک سرویس برای یک منطقه، از `--add-service=`پارامتر استفاده کنید. منطقه با استفاده از `--zone=`پارامتر مشخص می‌شود.

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

```bash
sudo firewall-cmd --add-service=http --zone=public --permanent
```

این `--permanent`گزینه باعث می‌شود تغییر پایدار بماند. برای اینکه تغییر ایجاد شده حتی پس از راه‌اندازی مجدد اعمال شود، فایروال را مجدداً بارگذاری کنید.

```bash
sudo firewall-cmd --reload
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/15-3.png)

شما باید `success`به عنوان خروجی هر دستور، پیامی دریافت کنید که نشان می‌دهد همه دستورات با موفقیت اجرا شده‌اند. اکنون منطقه عمومی شما باید سرویس HTTP را از طریق فایروال مجاز کند و می‌توانید با استفاده از دستور زیر این موضوع را تأیید کنید.

```bash
sudo firewall-cmd --list-services --zone=public
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/16-2.png)

برای حذف سرویس از منطقه، از `--remove-service`پرچم استفاده کنید و فایروال را مجدداً بارگذاری کنید.

```bash
sudo firewall-cmd --remove-service=http --zone=public --permanent

sudo firewall-cmd --reload
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/17-2.png)

 

وقتی سرویس‌های مجاز در فایروال را بررسی می‌کنید، این بار سرویس HTTP از لیست حذف خواهد شد.

### نحوه باز کردن/مسدود کردن پورت‌ها در Firewalld

[**سرور مجازی فنلاند**](https://www.novinhost.org/finland-vps/)

Firewalld سرویس‌هایی را برای برنامه‌های پرکاربرد ارائه می‌دهد که ممکن است بخواهید به آنها دسترسی داشته باشید. در بیشتر موارد، سرویس‌ها با پورت‌هایی که برنامه‌ها به آنها گوش می‌دهند مطابقت دارند. به عنوان مثال، پورت مربوطه برای ترافیک وب HTTP پورت ۸۰ و پورت ۳۳۰۶ برای سرویس MySQL است .

با این حال، در برخی موارد، ممکن است سرویسی پیدا نکنید که با پورتی که برنامه شما به آن گوش می‌دهد مطابقت داشته باشد. برای مثال، اگر برنامه شما به پورت ۵۰۰۰ گوش می‌دهد، می‌توانید این پورت را با استفاده از `--add-port=`پرچم ** باز کنید. پورت‌ها می‌توانند TCP یا UDP باشند.

```bash
sudo firewall-cmd --add-port=5000/tcp --zone=public --permanent
```

برای حفظ تغییرات حتی پس از راه‌اندازی مجدد، فایروال را مجدداً بارگذاری کنید.

```bash
sudo firewall-cmd --reload
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/18-2.png)

برای تأیید باز بودن پورت در منطقه، دستور زیر را اجرا کنید.

```bash
sudo firewall-cmd --zone=public --list-ports
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/19-1.png)

علاوه بر این، می‌توانید با جدا کردن پورت ابتدا و انتهایی در محدوده با یک خط فاصله، طیف وسیعی از پورت‌ها را مشخص کنید. به عنوان مثال، برای باز کردن طیف وسیعی از پورت‌ها بین ۵۰۰۰ تا ۶۰۰۰ در منطقه عمومی، دستورات زیر را اجرا کنید:

```bash
sudo firewall-cmd --add-port=5000-6000/tcp --zone=public --permanent

sudo firewall-cmd --reload
```

باز هم، می‌توانید با اجرای دستور زیر این موضوع را تأیید کنید:

```bash
sudo firewall-cmd --zone=public --list-ports
```

![نصب فایروال در لینوکس](https://www.novinhost.org/wp-content/uploads/2025/10/20-1.png)

 

برای مسدود کردن یا رد کردن یک پورت، از `--remove-port=`پارامتر استفاده کنید. به عنوان مثال، برای مسدود کردن پورت TCP 5000 در منطقه عمومی، دستور زیر را اجرا کنید:

```bash
sudo firewall-cmd --remove-port=5000/tcp --zone=public --permanent
```

سپس فایروال را مجدداً بارگذاری کنید تا تغییرات اعمال شوند.

```bash
sudo firewall-cmd --reload
```

## نتیجه‌ گیری

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