UFW ile Minecraft sunucu portunu açmak tek satırlık bir iştir: sudo ufw allow 25565/tcp. Java Edition sunucuları 25565/TCP, Bedrock Dedicated Server ise 19132/UDP portunu dinler. Kuralı yazdığınız anda UFW onu devreye alır, servisi yeniden başlatmanız gerekmez.
Asıl mesele komutun kendisi değil, komutun etrafındaki sıra ve ayrıntılar. UFW’yi SSH kuralı yazmadan etkinleştirirseniz kendinizi sunucudan kilitlersiniz. Java Edition için gereksiz yere UDP açarsanız saldırı yüzeyini büyütürsünüz. RCON portunu herkese açarsanız sunucu konsolunu internete servis edersiniz. Bu sayfada Ubuntu 24.04 LTS üzerinde UFW kurulumundan kural doğrulamaya, IP kısıtlamasından "port açık ama bağlanamıyorum" teşhisine kadar tüm akışı gerçek komutlarla anlatıyoruz.
Anlatım Ubuntu ve Debian tabanlı dağıtımlar içindir. AlmaLinux veya Rocky Linux kullanıyorsanız UFW yerine firewalld vardır; o durumda RHEL tabanlı dağıtımlarda Minecraft kurulumu sayfasındaki firewall-cmd örneklerine bakın.
UFW Nedir ve Minecraft Sunucusunda Neden Gerekir?#
UFW (Uncomplicated Firewall), Linux çekirdeğindeki netfilter/iptables kural setinin önüne konmuş sade bir arayüzdür. Ham iptables kuralı yazmak yerine allow, deny, limit gibi tek kelimelik komutlarla çalışırsınız; UFW arka planda karşılık gelen zincir kurallarını üretir.
Taze kurulmuş bir Ubuntu sunucusunda UFW kuruludur ama pasiftir. Yani hiçbir port filtrelenmez; sunucuda dinleyen her servis internete açıktır. Minecraft sunucusu kuran çoğu kişi bunu fark etmez, çünkü sunucu zaten çalışır. Sorun şurada: aynı makinede duran MySQL 3306, Redis 6379, RCON 25575 veya panel arayüzü de aynı şekilde açıktır.
Doğru kurgu tersidir: gelen her şeyi kapat, sadece gerekli portları aç. Minecraft sunucusunda bu genellikle üç dört kuraldan ibarettir.
ufw enable ile açmadan önce SSH kuralını mutlaka yazın. Varsayılan gelen politikası deny olduğu için, kuralsız etkinleştirme aktif SSH oturumunuzu düşürür ve sunucuya konsol erişiminiz yoksa tek çözüm sağlayıcı panelinden kurtarma moduna girmektir.Minecraft Sunucusunda Hangi Portlar Açılmalı?#
Her portu açmak yerine, hangi servisin hangi protokole ihtiyaç duyduğunu bilerek ilerleyin. Aşağıdaki tablo bir Minecraft sunucusunda karşınıza çıkacak portların tamamını kapsar.
| Port | Protokol | Kullanım | Kime açılmalı |
|---|---|---|---|
| 25565 | TCP | Java Edition oyun trafiği | Herkese |
| 25565 | UDP | GameSpy4 sorgu (enable-query) | Sadece gerekiyorsa |
| 19132 | UDP | Bedrock Dedicated Server / Geyser | Herkese |
| 19133 | UDP | Bedrock IPv6 dinleyicisi | IPv6 kullanılıyorsa |
| 22 | TCP | SSH yönetim erişimi | Kendi IP’nize |
| 25575 | TCP | RCON uzak konsol | Asla herkese |
| 8123 | TCP | Dynmap / BlueMap web haritası | İsteğe bağlı |
| 8080 / 8443 | TCP | Panel arayüzü (Pterodactyl vb.) | İsteğe bağlı |
| 25577 | TCP | BungeeCord / Velocity proxy | Herkese |
| 30066+ | TCP | Proxy arkasındaki alt sunucular | Sadece proxy IP’sine |
Tablodaki iki satır özellikle önemli. Birincisi RCON: 25575 portu şifreyle korunur ama şifre düz metin gider ve kaba kuvvet denemesine açıktır. İkincisi proxy arkasındaki alt sunucular: BungeeCord veya Velocity ile sunucu ağı kurduysanız alt sunucu portları dışarıya kesinlikle kapalı olmalıdır, aksi halde oyuncular proxy’yi atlayıp doğrudan alt sunucuya bağlanır.
UFW Kurulumu ve İlk Yapılandırma#
Sunucuya SSH ile bağlandıktan sonra aşağıdaki sırayı izleyin. Bu sıra kendinizi kilitlemenizi engeller.
-
UFW’nin kurulu olduğunu doğrulayın#
Ubuntu 24.04 LTS ve Debian 12 kurulumlarının çoğunda UFW hazır gelir. Yoksa apt ile kurun.
sudo apt update sudo apt install -y ufw ufw --version -
Varsayılan politikaları belirleyin#
Gelen tüm trafiği reddedin, giden trafiğe izin verin. Bu, güvenlik duvarının temel mantığıdır.
sudo ufw default deny incoming sudo ufw default allow outgoing -
Önce SSH kuralını yazın#
UFW’nin OpenSSH uygulama profili 22/TCP’yi açar. SSH portunuzu değiştirdiyseniz profil yerine port numarasını kullanın.
sudo ufw allow OpenSSH # SSH portunu değiştirdiyseniz, örnek 2222: # sudo ufw allow 2222/tcp comment 'SSH' -
Minecraft portunu açın#
Java Edition için TCP, Bedrock için UDP.
commentparametresi kuralı ileride tanımanızı sağlar.sudo ufw allow 25565/tcp comment 'Minecraft Java' sudo ufw allow 19132/udp comment 'Minecraft Bedrock' -
Güvenlik duvarını etkinleştirin#
Komut SSH oturumunu kesebileceğine dair uyarı verir; kuralı yazdıysanız
ydeyip devam edin.sudo ufw enable sudo ufw status verbose
Son komutun çıktısı şuna benzemelidir:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
25565/tcp ALLOW IN Anywhere # Minecraft Java
19132/udp ALLOW IN Anywhere # Minecraft Bedrock
ufw enable aynı zamanda servisi systemctl enable ile açılışa ekler. Sunucuyu yeniden kurduğunuzda kuralları sıfırdan yazmak istemiyorsanız /etc/ufw/user.rules ve /etc/ufw/user6.rules dosyalarını yedekleyin.Farklı Port, Port Aralığı ve Birden Fazla Sunucu#
Tek makinede birden fazla Minecraft örneği çalıştırmak yaygındır: bir survival, bir creative, bir test sunucusu. Her örneğin server.properties içindeki server-port değeri farklı olmalıdır ve her biri için kural gerekir.
# Tek tek kural
sudo ufw allow 25566/tcp comment 'MC creative'
sudo ufw allow 25567/tcp comment 'MC test'
# Aralık olarak (iki nokta üst üste ile, tire ile değil)
sudo ufw allow 25565:25570/tcp comment 'MC sunucu havuzu'
Aralık yazarken UFW 25565:25570 biçimini bekler; 25565-25570 yazarsanız komut hata verir. Ayrıca aralık kurallarında protokol belirtmek zorunludur, protokolsüz aralık kabul edilmez.
Port değerini server.properties tarafında değiştirdiyseniz iki dosyanın uyumlu olduğundan emin olun. Tüm ayarların listesi için server.properties ayarları referansına bakabilirsiniz.
server-ip=
server-port=25566
enable-query=false
enable-rcon=false
rcon.port=25575
server-ip satırının boş olması gerekir. Buraya bir değer yazarsanız sunucu yalnızca o arayüzü dinler ve dışarıdan gelen bağlantılar UFW izin verse bile reddedilir. Bu, "Failed to bind to port" hatasının ve sessiz bağlantı redlerinin en yaygın sebeplerinden biridir.
Kuralları Listeleme, Numaralandırma ve Silme#
Kural yönetimi UFW’nin en çok karıştırılan tarafıdır. Üç komutu ezberleyin:
# Kuralları ayrıntılı görüntüle
sudo ufw status verbose
# Kuralları sil/düzenle için numaralandır
sudo ufw status numbered
# Numaraya göre sil
sudo ufw delete 3
# Kuralı birebir tekrarlayarak sil
sudo ufw delete allow 25565/tcp
Numarayla silerken dikkatli olun: her silme işleminden sonra liste yeniden numaralanır. Üç kural silecekseniz her seferinde status numbered çıktısını tekrar okuyun, yoksa yanlış kuralı silersiniz. Toplu temizlik gerekiyorsa şu komut her şeyi sıfırlar:
sudo ufw reset
ufw reset güvenlik duvarını devre dışı bırakır ve tüm kuralları siler; SSH kuralı da gider. Uzaktan bağlıysanız komutun ardından hemen SSH kuralını yeniden yazıp ufw enable yapın. Bu komutu asla yarım bırakılmış bir bakım penceresinde çalıştırmayın.Minecraft için özel UFW uygulama profili#
Kuralları port numarasıyla değil isimle yönetmek isterseniz UFW’ye kendi uygulama profilinizi tanımlayabilirsiniz. /etc/ufw/applications.d/minecraft dosyasını nano ile oluşturun:
[Minecraft-Java]
title=Minecraft Java Edition Server
description=Minecraft Java Edition dedicated server
ports=25565/tcp
[Minecraft-Bedrock]
title=Minecraft Bedrock Dedicated Server
description=Bedrock Dedicated Server UDP dinleyicisi
ports=19132,19133/udp
Ardından profili tanıtıp kullanın:
sudo ufw app update Minecraft-Java
sudo ufw app list
sudo ufw allow Minecraft-Java
sudo ufw app info Minecraft-Bedrock
IP Bazlı Kısıtlama: RCON, SSH ve Alt Sunucular#
Bazı portlar internete açık olmamalıdır, ama tamamen kapalı da olamaz; sadece belirli adreslerden erişilebilmelidir. UFW’nin from söz dizimi bu iş içindir.
# RCON'a yalnızca kendi ev IP'nizden erişim
sudo ufw allow from 203.0.113.45 to any port 25575 proto tcp comment 'RCON yonetici'
# SSH'ı tek IP'ye kilitle (önce mevcut genel kuralı silin)
sudo ufw delete allow OpenSSH
sudo ufw allow from 203.0.113.45 to any port 22 proto tcp comment 'SSH yonetici'
# Proxy arkasındaki alt sunucuya yalnızca proxy makinesinden erişim
sudo ufw allow from 10.0.0.5 to any port 30066 proto tcp comment 'Velocity backend'
# Bir IP bloğunu tamamen engelle
sudo ufw deny from 198.51.100.0/24 comment 'kotucul blok'
deny kurallarını listenin üstüne yerleştirmez. Belirli bir IP’yi engellemek istiyorsanız engelleme kuralını genel allow kuralından önce eklemeniz gerekir. Araya kural sokmak için sudo ufw insert 1 deny from 198.51.100.10 biçimini kullanın.Dinamik IP’niz varsa SSH’ı tek adrese kilitlemek riskli olur. Bu durumda kaba kuvvet denemelerini yavaşlatan limit kuralı daha pratiktir:
sudo ufw limit 22/tcp comment 'SSH brute-force limiti'
Bu kural aynı IP’den 30 saniye içinde 6’dan fazla bağlantı denemesini düşürür. Aynı kuralı 25565 için kullanmayın. Minecraft istemcileri sunucu listesi ping’i ve giriş sırasında arka arkaya bağlantı açar; limit kuralı gerçek oyuncuları da düşürür.
Loglama ve Kuralların Gerçekten Çalıştığını Doğrulama#
UFW’nin bir kuralı uyguladığını görmenin en net yolu logdur. Loglamayı açın ve engellenen paketleri izleyin:
sudo ufw logging on
sudo ufw logging medium
sudo tail -f /var/log/ufw.log
Bir istemci bağlanmaya çalışırken [UFW BLOCK] satırı düşüyorsa kural eksik demektir. Hiç satır düşmüyorsa paket zaten sunucuya ulaşmıyordur; sorun sağlayıcı tarafındaki ağ filtresinde veya yönlendirmede olabilir.
Dinleyen portları görmek için:
# Hangi süreç hangi portu dinliyor
sudo ss -tulnp | grep -E '25565|19132|25575'
# UFW'nin ürettiği ham kuralları gör
sudo iptables -L ufw-user-input -n --line-numbers
Dışarıdan test için başka bir makineden şu komutları kullanın. nc TCP portunu, nmap ise UDP portunu doğrular:
nc -zv sunucu-ip-adresi 25565
sudo nmap -sU -p 19132 sunucu-ip-adresi
Port Açık Görünüyor Ama Oyuncular Bağlanamıyor#
Bu, UFW rehberlerinde en çok atlanan bölümdür. Kuralı yazdınız, ufw status kuralı gösteriyor, yine de oyuncular giremiyor. Sırasıyla kontrol edin:
- Sunucu süreci çalışıyor mu?
sudo systemctl status minecraftya dascreen -lsile bakın. Süreç çökmüşse port zaten dinlenmiyordur.- server-ip boş mu?
server.propertiesiçindeserver-ip=satırının karşısı boş olmalı. Dolu ise sunucu tek arayüz dinler.- Doğru port mu?
- Oyuncu 25565 dışında bir porta bağlanıyorsa adresi
ip:portbiçiminde yazmalıdır. - Sağlayıcı filtresi var mı?
- Bazı bulut sağlayıcılarında sunucu dışında ikinci bir ağ ACL’si bulunur. Batihost sunucularında oyun portları varsayılan olarak açıktır.
- Docker mı kullanıyorsunuz?
- Docker kendi iptables kurallarını UFW’den önceki zincire yazar ve yayımlanan portlar UFW’yi atlar. Ayrıntı için Docker ile Minecraft sunucusu sayfasına bakın.
- IPv6 kapalı mı?
- İstemci AAAA kaydı üzerinden bağlanıyorsa
/etc/default/ufwiçindekiIPV6=yessatırını doğrulayın.
Belirti "connection refused" ise sunucu portu dinlemiyordur; "connection timed out" ise paket bir yerde düşürülüyordur. Bu ayrım teşhisi yarı yarıya kısaltır: ilki için Connection Refused hatası çözümü, ikincisi için Connection Timed Out rehberi sayfalarına geçin.
UFW, iptables ve firewalld: Hangisi Ne Zaman?#
| Araç | Dağıtım | Ne zaman tercih edilir |
|---|---|---|
| UFW | Ubuntu, Debian | Tek makinede Minecraft sunucusu; kural sayısı azken en pratik seçim |
| firewalld | AlmaLinux, Rocky, RHEL | Bölge (zone) tabanlı yapı gerektiğinde, RHEL ailesinde varsayılan |
| iptables / nftables | Hepsi | NAT, port yönlendirme, karmaşık zincir mantığı gerektiğinde |
Üçünü aynı anda yapılandırmayın. UFW zaten iptables üzerine yazar; elle iptables kuralı eklerseniz UFW yeniden yüklendiğinde kuralınız kaybolur. Kalıcı özel kural gerekiyorsa /etc/ufw/before.rules dosyasına ekleyin. Araçların ayrıntılı karşılaştırması için sunucu güvenlik duvarı yapılandırma rehberine göz atın.
Güvenlik Duvarını Kurulum Akışına Yerleştirmek#
UFW yapılandırması tek başına bir iş değil, kurulum zincirinin bir halkasıdır. Doğru sıra şudur: sunucuyu kur, portu aç, servisi kalıcı hâle getir, sonra izle.
-
Sunucu yazılımını kurun#
Java 25 kurulumu, ayrı bir
minecraftkullanıcısı ve/opt/minecraftdizini için Linux üzerinde Minecraft sunucu kurulumu rehberini izleyin. -
Portu açın ve doğrulayın#
Bu sayfadaki kuralları uygulayın,
ss -tulnpile dinlemeyi teyit edin. -
Sunucuyu servise dönüştürün#
Yeniden başlatmalarda otomatik açılması için systemd servisi oluşturun; konsola erişimi
screenoturumuyla koruyun. -
Kuralları belgeleyin#
Her kurala
commentekleyin vesudo ufw status numbered > /root/ufw-kurallari.txtile anlık görüntü alın. Altı ay sonra hangi portu neden açtığınızı hatırlamak zorunda kalmazsınız.
Donanım tarafında güvenlik duvarı yükü ihmal edilebilir; UFW’nin birkaç kuralı işlemciye anlamlı bir maliyet getirmez. Asıl belirleyici, tick döngüsünü çeviren tek çekirdek performansıdır. Batihost’un yüksek frekanslı Ryzen VDS paketleri 8 GB RAM ve NVMe SSD ile başlar; kural yazarken sunucu performansından ödün verdiğinizi düşünmeyin.
ufw status verbose çıktısı üç dört satırı geçmez: SSH, oyun portu ve varsa harita/panel portu. Uzun bir kural listesi genellikle unutulmuş test kurallarının biriktiğini gösterir; ayda bir gözden geçirip gereksizleri silin.Özetle#
UFW ile Minecraft portu açmak sudo ufw allow 25565/tcp komutundan ibarettir, ama işi doğru yapmak sıraya bağlıdır: önce varsayılan politikalar, sonra SSH kuralı, sonra oyun portu, en son ufw enable. Java Edition için TCP, Bedrock için 19132/UDP açın; sorgu portunu yalnızca enable-query=true ise ekleyin ve RCON’u asla herkese bırakmayın.
Kural yazdıktan sonra bağlantı hâlâ kurulmuyorsa güvenlik duvarını suçlamadan önce ss -tulnp ile sürecin portu dinlediğini ve server-ip satırının boş olduğunu doğrulayın. Bu iki kontrol, "port açtım ama bağlanamıyorum" vakalarının büyük bölümünü çözer. Aynı makinede Bedrock da yayınlayacaksanız 19132/UDP kuralını ekleyip Ubuntu’da Bedrock Dedicated Server kurulumuna geçebilirsiniz.