---
title: "Firewalld üzerinden port açma"
description: "CentOS 7'de firewall-cmd ile public zone üzerinde port açma, kuralı kalıcı hâle getirme ve reload adımları, kısa komut örnekleriyle anlatılıyor."
image: "https://sezer.in/wp-content/uploads/2021/08/firewall.jpg"
url: "https://sezer.in/firewalld-uzerinden-port-acma/"
date: "2021-10-02T11:41:10+03:00"
updated: "2026-10-31T23:43:59+03:00"
author: "Sezer Şanlıkan"
lang: "tr"
source: "https://sezer.in/firewalld-uzerinden-port-acma/"
---

# Firewalld üzerinden port açma

Firewalld üzerinden port açma, kuralı önce çalışan yapılandırmaya eklemek ve sonra kalıcı hâle getirmekten oluşur. Bu yazıdaki komutlarla CentOS, RHEL ve Fedora gibi firewalld kullanan sistemlerde bir port açacak, açıldığını doğrulayacak ve gerekirse yalnız belirli bir IP adresine sınırlayacaksınız.

firewalld iki ayrı yapılandırma tutar. Runtime hemen geçerli olur ama `--reload` ya da yeniden başlatmada silinir. Permanent diske yazılır ama reload edilene kadar çalışmaz. Port açıp bir süre sonra kapanmış bulmanızın sebebi çoğu zaman bu ayrımdır.

## Firewalld ile port açma adımları

Aşağıdaki komutta yazan 1111 yerine istediğiniz ip adresini yazıp firewall'da public alanında ilgili portu erişime açabilirsiniz.

Komuttaki `1111` IP adresi değil, port numarasıdır. Bu komut port'u `public` zone'undaki herkese açar. Tek bir IP adresine açmak için aşağıdaki rich rule bölümüne bakın.

```
firewall-cmd --zone=public --add-port=1111/tcp
```

Komut başarılıysa `success` yazar. `--zone=public` kullanmadan önce arayüzünüzün gerçekten bu zone'da olduğunu kontrol edin, aksi halde kural yanlış zone'a yazılır ve etkisi olmaz.

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

Ardından aşağıdaki komut ile portun silinmemesi için kayıt edin.

```
firewall-cmd --runtime-to-permanent
```

`--runtime-to-permanent` o anki runtime yapılandırmasının tamamını diske yazar. Deneme için eklediğiniz başka kurallar varsa onlar da kalıcı olur.

Son olarak servisi tekrardan reload edin.

```
firewall-cmd --reload
```

Önceki adımı yaptıysanız `--reload` şart değil, ama kuralın diskten geri geldiğini görmüş olursunuz. Aynı işin diğer yolu kuralı doğrudan permanent yazıp reload etmektir. Tersini yaparsanız, yani kaydetmeden reload ederseniz runtime kuralı silinir.

```
firewall-cmd --permanent --zone=public --add-port=1111/tcp
firewall-cmd --reload
```

## Port açıldı mı, nasıl doğrulanır?

İlk iki komut firewall tarafını, üçüncüsü kalıcı kaydı, sonuncusu port'u gerçekten dinleyen bir uygulama olup olmadığını gösterir. `--query-port` çıktısı `yes` ya da `no` olur.

```
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --query-port=1111/tcp
firewall-cmd --permanent --zone=public --list-ports
ss -tln
```

Asıl testi başka bir makineden yapın. `nc -vz sunucu-ip 1111` komutu `Connection refused` veriyorsa paket sunucuya ulaşıyor ama port'u dinleyen uygulama yok. `No route to host` görüyorsanız firewalld paketi reddediyordur, kural büyük olasılıkla yanlış zone'dadır. Zaman aşımına düşüyorsa paket yolda düşüyordur, araya bulut sağlayıcının security group'u girmiş olabilir.

## Port'u yalnız belirli bir IP adresine açmak

Bir veritabanı ya da yönetim port'unu herkese açmak istemiyorsanız rich rule kullanın. `192.0.2.10` örnek adrestir, kendi adresinizi yazın. Aynı port `--add-port` ile açıksa rich rule bir kısıtlama getirmez, önce o kuralı kaldırın.

```
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10" port port="1111" protocol="tcp" accept'
firewall-cmd --reload
```

## Port kapatma ve sık karşılaşılan sorunlar

Port'u kapatmak için aynı kuralı `--remove-port` ile verin.

```
firewall-cmd --permanent --zone=public --remove-port=1111/tcp
firewall-cmd --reload
```

Uzak sunucuda çalışırken SSH'tan kilitlenmemek için `firewall-cmd --list-all` çıktısında `ssh` servisini ya da özel SSH port'unuzu kontrol edin. Riskli bir kuralı önce süreli deneyebilirsiniz: aşağıdaki kural 5 dakika sonra kendiliğinden kalkar. `--timeout` yalnız runtime kurallarında çalışır, `--permanent` ile birlikte kullanılmaz.

```
firewall-cmd --zone=public --add-port=1111/tcp --timeout=5m
```

- `FirewallD is not running`: daemon kapalı. `firewall-cmd --state` durumu gösterir, `systemctl start firewalld` başlatır.
- `ALREADY_ENABLED`: port zaten açık, zararsız bir uyarı.
- Kurallar doğru ama port dışarıdan açık görünüyor: Docker, firewalld'de kendi `docker` zone'unu ve bu zone'a forward eden `docker-forwarding` policy'sini oluşturur, publish edilen port bu yüzden `public` zone kurallarınıza takılmayabilir. Ayrıntı [Ubuntu üzerinde Docker kurulumu](https://sezer.in/ubuntu-uzerinde-docker-kurulumu/) yazısında var.

firewalld yerine iptables kullanıyorsanız [CentOS 7 üzerinde iptables yönetimi](https://sezer.in/centos7-uzerinde-iptables-yonetimi-port-acma-kapatma/) yazısına bakın.
