Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 7 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

Bir sürecin hangi portu dinlediği nasıl bulunur?​


Bu rehber Linux’ta bir PID’yi TCP dinleyicisi veya UDP uç noktasıyla eşleştirme akışını anlatır. Bir sürecin dinlediği portu bulmak için önce ss komutunu, gerekirse lsof komutunu kullanın. Örneğin TCP dinleme soketlerini süreç adı, PID ve port bilgisiyle görmek için kabukta şu komutu çalıştırın:

Kod:
sudo ss -ltnp

Çıktıda LISTEN satırındaki Local Address:Port bölümü portu, users:(...) bölümü ise süreci ve PID değerini gösterir. Belirli bir portu kontrol etmek için çıktıyı daraltabilirsiniz:

Kod:
sudo ss -Hltnp 'sport = :8080'

Komut bir satır döndürürse 8080 portunu dinleyen bir süreç vardır. Komut başarılı olduğu halde hiç satır yoksa baktığınız ağ ad alanında bu portta TCP dinleyicisi görülmemiştir; uygulama çalışmıyor, başka bir port kullanıyor veya yalnızca UDP üzerinden dinliyor olabilir.

Çıktı nasıl okunur?​


-l yalnızca dinleme soketlerini, -t TCP soketlerini, -n adları çözümlemeden sayısal adres ve portları, -p ise süreç bilgisini gösterir. Aşağıdaki satır temsili çıktıdır; gerçek makineden alınmış bir ölçüm değildir:

Kod:
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:* users:(("node",pid=4210,fd=21))

Bu satırın anlamı şudur: node süreci 4210 PID'siyle TCP 8080 portunu dinliyor ve yalnızca yerel makinenin 127.0.0.1 adresinden bağlantı kabul ediyor. Bu nedenle başka bir bilgisayardan doğrudan erişilemeyebilir. 0.0.0.0:8080 görülmesi, sürecin makinedeki IPv4 arayüzlerinde dinlediğini; [::]:8080 görülmesi ise IPv6 tarafında dinlediğini gösterir. IPv6 soketinin IPv4 bağlantılarını da kabul edip etmediği sistem ve soket ayarına bağlıdır. Konteyner kullanıyorsanız ağ ad alanı da sonucu etkiler. Dış erişim için ayrıca işletim sistemi güvenlik duvarı, bulut güvenlik grubu, NAT veya ters vekil yapılandırması da uygun olmalıdır.

Aşağıdaki komutlar, ihtiyaca göre uygun kontrolü seçmenizi sağlar:

Linux'ta hızlı seçim​


AmaçKomutNe gösterir?
Tüm TCP dinleme portlarısudo ss -ltnpPort, adres, süreç ve PID
Tüm TCP ve UDP dinleme portlarısudo ss -lntupTCP/UDP soketleri ve süreç bilgisi
Belirli PID’nin TCP dinleme portlarısudo lsof -nP -a -p 4210 -iTCP -sTCP:LISTENYalnız o PID’nin dinleme durumundaki TCP soketleri
Belirli portu kullanan süreçsudo lsof -nP -iTCP:8080 -sTCP:LISTENYerel TCP8080 dinleyicisi

Uygulanabilir teşhis adımları​


  1. Önce protokolü belirleyin. Web sunucuları çoğunlukla TCP kullanır; UDP kullanan servisleri kaçırmamak için sudo ss -lntup çalıştırın.
  2. Çıktıda ilgili portu veya servis adını bulun. Port numarası bilinmiyorsa süreç adını aramak için sudo ss -lntup | grep -i nginx gibi bir filtre kullanabilirsiniz.
  3. Süreç görünmüyorsa aynı kontrolü yetkili kullanıcıyla tekrarlayın. -p seçeneği, başka kullanıcıların süreç ayrıntılarını göstermek için yetki gerektirebilir.
  4. PID'yi doğrulamak için ps -fp 4210 çalıştırın. Komut satırı, beklediğiniz uygulamanın gerçekten çalıştığını gösteriyorsa port-süreç eşleşmesi doğrulanır.
  5. Port beklenenden farklıysa uygulamanın yapılandırmasındaki bind adresi ve port değerini kontrol edin. Değişiklikten sonra servisi yeniden yükleyin veya yeniden başlatın; ardından ss çıktısını tekrar okuyun.
  6. Yerel dinleme doğrulandığı halde dışarıdan bağlantı kurulamıyorsa önce bind adresini, sonra işletim sistemi ve ağ güvenlik duvarı kurallarını inceleyin. Portu dinleyen süreç olması, portun internetten erişilebilir olduğu anlamına gelmez.

Sık yapılan hatalar​


  • Sadece netstat veya ss çıktısındaki portu görüp dış erişimin kesin olduğunu sanmak: Güvenlik duvarı ve bind adresi ayrıca kontrol edilmelidir.
  • Yalnız TCP aramak: Servis UDP kullanıyorsa -u seçeneği olmadan sonuç bulunamaz.
  • Süreç adını port numarasıyla karıştırmak: Portu dinleyen uygulamayı doğrulamak için PID’yi ps ile eşleştirin.
  • İmtiyaz hatasını portun boş olduğu şeklinde yorumlamak: Yetkili komutla yeniden çalıştırmadan kesin sonuca varmayın.

Sık sorulan sorular​


Konteynerin içinde görülen port neden ana makinede görünmez?​

Konteyner farklı ağ ad alanında çalışıyorsa soket listeleri aynı değildir. Doğru ortamda sorgu yapıp yayımlanan ana makine portunu konteyner içindeki porttan ayırın. Ana makinede boş sonuç, konteyner içinde uygulama dinlemediğini tek başına kanıtlamaz.

Portu dinleyen süreci nasıl durdurmalıyım?​


Önce PID'nin doğru uygulamaya ait olduğunu doğrulayın. Yönetilen bir servis ise doğrudan PID öldürmek yerine servis yöneticisi üzerinden durdurun; aksi halde süreç yeniden başlatılabilir veya uygulama düzgün kapanmayabilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic