Firewalld üzerinden port açma
Centos 7 üzerinde bulunan firewall-cmd komutu ile port açmayı bu yazıda bulabilirsiniz

Bu yazıda
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/tcpKomut 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-zonesArdı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 --reloadPort 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 -tlnAsı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 --reloadPort 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 --reloadUzak 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=5mFirewallD is not running: daemon kapalı.firewall-cmd --statedurumu gösterir,systemctl start firewalldbaş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
dockerzone’unu ve bu zone’a forward edendocker-forwardingpolicy’sini oluşturur, publish edilen port bu yüzdenpubliczone kurallarınıza takılmayabilir. Ayrıntı Ubuntu üzerinde Docker kurulumu yazısında var.
firewalld yerine iptables kullanıyorsanız CentOS 7 üzerinde iptables yönetimi yazısına bakın.



