Linux'ta netstat Nasıl Kullanılır

Linux bilgisayarın masaüstünde bir terminal istemi.
Fatmawati Achmad Zaenuri / Shutterstock

Linux netstat command size ağ bağlantılarınız, kullanılan bağlantı noktaları ve bunları kullanan işlemler hakkında bilgi hazinesi sunar. Nasıl kullanacağınızı öğrenin.

Bağlantı Noktaları, İşlemler ve Protokoller

Ağ soketleri bağlanabilir veya bağlantı beklenebilir. Bağlantılar Aktarım Kontrol Protokolü (TCP) veya Kullanıcı Datagram Protokolü UDP gibi ağ protokollerini kullanır. Bağlantı kurmak için Internet Protokolü adreslerini ve ağ bağlantı noktalarını kullanırlar.

Kelime prizler bir lead veya kablo için fiziksel bir bağlantı noktasının görüntülerini oluşturabilir, ancak bu bağlamda soket, bir ağ veri bağlantısının bir ucunu işlemek için kullanılan bir yazılım yapısıdır.

Soketlerin iki ana durumu vardır: bağlı ve devam eden bir ağ iletişimini kolaylaştırmak veya bekleme gelen bir bağlantının kendilerine bağlanması için. Bir soketin uzak bir cihazda bağlantı kurarak ortasında olduğu, ancak geçici durumları bir kenara bıraktığı durum gibi başka durumlar da vardır, bir soketi bağlı veya bekleyen (genellikle denir) dinleme).

Dinleme soketine sunucuve dinleme soketi ile bağlantı isteyen sokete bir müşteri. Bu adların donanım veya bilgisayar rolleriyle ilgisi yoktur. Bağlantının her bir ucundaki her soketin rolünü tanımlarlar.

netstat komutu hangi soketlerin bağlı olduğunu ve hangi soketlerin dinlendiğini keşfetmenizi sağlar. Yani, hangi portların kullanımda olduğunu ve bunları hangi işlemlerin kullandığını gösterir. Ağ arayüzleriniz ve çok noktaya yayın bağlantılarınızla ilgili yönlendirme tablolarını ve istatistikleri gösterebilir.

İşlevselliği netstat ip ve ss gibi farklı Linux yardımcı programlarında zaman içinde çoğaltılmıştır. Tüm ağ analizi komutlarının bu büyükbabasını hala bilmeye değer, çünkü tüm Linux ve Unix benzeri işletim sistemlerinde ve hatta Windows ve Mac'te kullanılabilir.

Örnek komutlarla birlikte nasıl kullanılacağı aşağıda açıklanmıştır.

Tüm Soketlerin Listelenmesi

-a (tümü) seçeneği yapar netstat bağlı ve bekleyen tüm soketleri göster. Bu komut uzun bir liste oluşturmakla yükümlüdür, bu yüzden less.

netstat -a | less

netstat -a | terminal penceresinden daha az

Listede TCP (IP), TCP6 (IPv6) ve UDP yuvaları bulunur.

Netstat -a çıktısı | terminal penceresinden daha az

Terminal penceresindeki sarma, neler olup bittiğini görmeyi biraz zorlaştırır. İşte bu listeden birkaç bölüm:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address State 
tcp        0      0 localhost:domain  0.0.0.0:*       LISTEN 
tcp        0      0 0.0.0.0:ssh       0.0.0.0:*       LISTEN 
tcp        0      0 localhost:ipp     0.0.0.0:*       LISTEN 
tcp        0      0 localhost:smtp    0.0.0.0:*       LISTEN 
tcp6       0      0 (::):ssh          (::):*          LISTEN 
tcp6       0      0 ip6-localhost:ipp (::):*          LISTEN 
.
.
.
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags   Type     State       I-Node  Path
unix  24     ( )     DGRAM                12831   /run/systemd/journal/dev-log
unix  2      ( ACC ) STREAM    LISTENING  24747   @/tmp/dbus-zH6clYmvw8
unix  2      ( )     DGRAM                26372   /run/user/1000/systemd/notify
unix  2      ( )     DGRAM                23382   /run/user/121/systemd/notify
unix  2      ( ACC ) SEQPACKET LISTENING  12839   /run/udev/control

“Aktif İnternet” bölümünde, uzaktan bağlantı taleplerini dinleyen bağlı harici bağlantılar ve yerel soketler listelenir. Yani, harici cihazlara kurulan (veya kurulacak) ağ bağlantılarını listeler.

“UNIX etki alanı” bölümünde bağlı ve dinlenen dahili bağlantılar listelenir. Başka bir deyişle, bilgisayarınızda farklı uygulamalar, işlemler ve işletim sisteminin öğeleri arasında kurulan bağlantıları listeler.

“Aktif İnternet” sütunları şunlardır:

  • Proto: Bu soket tarafından kullanılan protokol (örneğin, TCP veya UDP).
  • , Alınan-S: Alma kuyruğu. Bunlar, alınan ve arabelleğe alınan gelen baytlardır, bu bağlantıyı kullanan yerel işlemin bunları okumak ve tüketmek için bekler.
  • Send-Q: Gönderme kuyruğu. Bu, gönderme kuyruğundan gönderilmeye hazır baytları gösterir.
  • Yerel adres: Bağlantının yerel ucunun adres ayrıntıları. Varsayılan değer şudur: netstat adresin yerel ana bilgisayar adını ve bağlantı noktası hizmetinin adını gösterir.
  • Yabancı adres: Bağlantının uzak ucunun adresi ve bağlantı noktası numarası.
  • Durum: Yerel soketin durumu. UDP soketleri için bu genellikle boştur. Bkz. durum aşağıdaki tablo.

TCP bağlantıları için, durum değer aşağıdakilerden biri olabilir:

  • DİNLE: Yalnızca sunucu tarafı. Soket bir bağlantı isteği bekliyor.
  • SYN-GÖNDERİLDİ: Yalnızca istemci tarafında. Bu soket bir bağlantı isteği yaptı ve kabul edilip edilmeyeceğini görmek için bekliyor.
  • SYN-ALINDI: Yalnızca sunucu tarafı. Bu soket, bir bağlantı isteğini kabul ettikten sonra bir bağlantı onayı bekliyor.
  • KURULUŞ: Sunucu ve istemciler. Sunucu ile istemci arasında, ikisi arasında veri aktarımına izin veren, çalışan bir bağlantı kuruldu.
  • -BEKLE-1: Sunucu ve istemciler. Bu soket, uzak soketten bağlantı sonlandırma isteği veya daha önce bu soketten gönderilen bir bağlantı sonlandırma isteğinin onaylanmasını bekliyor.
  • -BEKLE-2: Sunucu ve istemciler. Bu soket, uzak soketten bağlantı sonlandırma isteği bekliyor.
  • YAKIN BEKLEYİŞ: Sunucu ve istemci. Bu soket yerel kullanıcıdan bir bağlantı sonlandırma isteği bekliyor.
  • KAPANIŞ: Sunucu ve istemciler. Bu soket, uzak soketten bir bağlantı sonlandırma isteği onayı bekliyor.
  • SON-ACK: Sunucu ve istemci. Bu soket, uzak sokete gönderdiği bağlantı sonlandırma isteğinin onaylanmasını bekliyor.
  • ZAMAN-BEKLE: Sunucu ve istemciler. Bu soket, uzak sokete, uzak soketin sonlandırma isteğini aldığını bildirmek için bir bildirim gönderdi. Şimdi onayın alındığından emin olmak için bekliyor.
  • KAPALI: Bağlantı yok, bu nedenle soket sonlandırıldı.

“Unix alanı” sütunları şunlardır:

  • Proto: Bu soket tarafından kullanılan protokol. “Unix” olacak.
  • RefCnt: Referans sayısı. Bu sokete bağlı ekli işlemlerin sayısı.
  • Bayraklar: Bu genellikle ACC temsil eden SO_ACCEPTON, soketin bir bağlantı isteği beklediği anlamına gelir. SO_WAITDATA, olarak gösterilir W, okunmayı bekleyen veriler olduğu anlamına gelir. SO_NOSPACE, olarak gösterilir N, sokete veri yazmak için yer olmadığı anlamına gelir (yani, gönderme arabelleği dolu).
  • Tür: Soket tipi. Bkz. tip aşağıdaki tablo.
  • Durum: Soketin durumu. Bkz. durum aşağıdaki tablo.
  • Dosya numarası: Bu soketle ilişkili dosya sistemi inode.
  • yol: Sokete giden dosya sistemi yolu.

Unix etki alanı soketi tip aşağıdakilerden biri olabilir:

  • dgram: Soket, sabit uzunluktaki mesajlar kullanılarak datagram modunda kullanılmaktadır. Datagramların ne güvenilir, sıralı ne de kopyalanmamış olduğu garanti edilmez.
  • AKIŞ: Bu soket bir akış soketidir. Bu, genel “normal” tipte bir soket bağlantısıdır. Bu soketler, paketlerin güvenilir sıralı (sırayla) teslimatını sağlamak üzere tasarlanmıştır.
  • ÇİĞ: Bu soket ham soket olarak kullanılıyor. Ham soketler OSI Modelinin ağ düzeyinde çalışır ve taşıma düzeyindeki TCP ve UDP başlıklarına başvurmaz.
  • RDM: Bu soket, güvenilir bir şekilde iletilen mesajlar bağlantısının bir ucunda bulunur.
  • SEQPACKET: Bu soket, güvenilir, sıralı ve çoğaltılmamış paket dağıtımı sağlamanın başka bir yolu olan sıralı bir paket soketi olarak çalışır.
  • PAKET: Ham arabirim erişim soketi. Paket soketleri, OSI modelinin aygıt sürücüsü (yani, veri bağlantı katmanı) düzeyinde ham paketleri almak veya göndermek için kullanılır.

Unix etki alanı soketi durum aşağıdakilerden biri olabilir:

  • BEDAVA: Bu soket ayrılmamış.
  • DİNLEME: Bu soket gelen bağlantı isteklerini dinliyor.
  • BAĞLANIYOR: Bu soket bağlantı sürecinde.
  • BAĞLI: Bir bağlantı kuruldu ve soket veri alıp iletebiliyor.
  • KESME: Bağlantı sona erdirilme sürecinde.

Vay canına, bu çok fazla bilgi! Birçok netstat seçenekler sonuçları bir şekilde hassaslaştırır, ancak içeriği çok fazla değiştirmezler. Hadi bir bakalım.

Türlerine Göre İlan Soketleri

netstat -a command görmeniz gerekenden daha fazla bilgi sağlayabilir. Sadece TCP soketlerini görmek veya görmek istiyorsanız, -t (TCP) seçeneği ile ekranı yalnızca TCP soketlerini gösterecek şekilde kısıtlayın.

netstat -at | less

netstat -at | terminal penceresinden daha az

Ekran çıkışı büyük ölçüde azalır. Listelenen birkaç soketin tümü TCP soketleridir.

Netstat -at çıktısı | terminal penceresinden daha az

-u (UDP) ve -x (UNIX) seçenekleri benzer şekilde davranır ve sonuçları komut satırında belirtilen soket türüyle sınırlar. Kullanılan -u (UDP) seçeneği şöyledir:

netstat -au | less

netstat -au | terminal penceresinden daha az

Yalnızca UDP yuvaları listelenir.

Netstat -au çıktısı | terminal penceresinden daha az

Listeye Göre Soketler

Dinleme veya bekleme durumunda olan soketleri görmek için, -l (dinleme) seçeneği.

netstat -l | less

netstat -l | terminal penceresinden daha az

Listelenen soketler dinleme durumunda olan soketlerdir.

Netstat -l çıktısı | terminal penceresinden daha az

Bu, ilgili soketlerde daha fazla yer almak için -t (TCP, -u (UDP) ve -x (UNIX) seçenekleriyle birleştirilebilir. TCP yuvalarını dinlemeye bakalım:

netstat -lt | less

netstat -lt | terminal penceresinden daha az

Şimdi sadece TCP dinleme soketleri görüyoruz.

netstat -lt çıktısı | terminal penceresinden daha az

Protokol ile Ağ İstatistikleri

Bir protokolün istatistiklerini görmek için -s (istatistik) seçeneğini seçin ve -t (TCP), -u (UDP) veya -x (UNIX) seçenekleri. Eğer sadece -s (istatistik) seçeneğini seçerseniz, tüm protokollere ilişkin istatistikleri görürsünüz. TCP protokolünün istatistiklerini kontrol edelim.

netstat -st | less

netstat -st | terminal penceresinden daha az

TCP bağlantıları için bir istatistik koleksiyonu less.

Netstat -st çıktısı | terminal penceresinden daha az

İşlem Adlarını ve PID'leri Gösterme

Bir soket kullanarak sürecin süreç kimliğini (PID), o sürecin adıyla birlikte görmek yararlı olabilir. -p (program) seçeneği tam da bunu yapar. Dinleme durumunda olan bir TCP soketi kullanan işlemler için PID'lerin ve işlem adlarının ne olduğunu görelim. Kullanırız sudo normalde kök izinleri gerektiren bilgiler de dahil olmak üzere, mevcut tüm bilgileri aldığımızdan emin olmak için.

sudo netstat -p -at

sudo netstat -p -at terminal penceresinde

Biçimlendirilmiş bir tablodaki çıktı şöyledir:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address       Foreign Address   State    PID/Program name 
tcp      0        0 localhost:domain    0.0.0.0:*         LISTEN   6927/systemd-resolv 
tcp      0        0 0.0.0.0:ssh         0.0.0.0:*         LISTEN   751/sshd 
tcp      0        0 localhost:ipp       0.0.0.0:*         LISTEN   7687/cupsd 
tcp      0        0 localhost:smtp      0.0.0.0:*         LISTEN   1176/master 
tcp6     0        0 (::):ssh            (::):*            LISTEN   751/sshd 
tcp6     0        0 ip6-localhost:ipp   (::):*            LISTEN   7687/cupsd 
tcp6     0        0 ip6-localhost:smtp  (::):*            LISTEN   1176/master

“PID / program adı” adında fazladan bir sütun var. Bu sütun, soketlerin her birini kullanarak işlemin PID'sini ve adını listeler.

Sayısal Adresleri Listeleme

Bazı belirsizlikleri kaldırmak için atabileceğimiz bir diğer adım, yerel ve uzak adresleri, çözümlenmiş alan adları ve ana bilgisayar adları yerine IP adresleri olarak göstermektir. Eğer kullanırsak -n (sayısal) seçeneğinde IPv4 adresleri noktalı ondalık biçimde gösterilir:

sudo netstat -an | less

sudo netstat -an | terminal penceresinden daha az

IP adresleri sayısal değerler olarak gösterilir. Bağlantı noktası numaraları da iki nokta üst üste işareti ile gösterilir ” : IP Adresinden.

Sudo netstat çıktısı -an | terminal penceresinden daha az

127.0.0.1'lik bir IP adresi, soketin yerel bilgisayarın geri döngü adresine bağlı olduğunu gösterir. 0.0.0.0 IP adresini yerel adresler için “varsayılan yol” ve yabancı adresler için “herhangi bir IP adresi” olarak düşünebilirsiniz. IPv6 adresleri “::”De sıfır adrestir.

Listelenen bağlantı noktaları, normal amaçlarının ne olduğunu görmek için kolayca kontrol edilebilir:

  • 22: Bu, Güvenli Kabuk (SSH) dinleme bağlantı noktasıdır.
  • 25: Bu, Basit Posta Aktarım Protokolü (SMTP) dinleme bağlantı noktasıdır.
  • 53: Bu, Alan Adı Sistemi (DNS) dinleme bağlantı noktasıdır.
  • 68: Bu, Dinamik Ana Bilgisayar Yapılandırma Protokolü (DHCP) dinleme bağlantı noktasıdır.
  • 631: Bu Ortak UNIX Baskı Sistemi (CUPS) dinleme bağlantı noktasıdır.

İLİŞKİLİ: 127.0.0.1 ve 0.0.0.0 Arasındaki Fark Nedir?

Yönlendirme Tablosunu Görüntüleme

-r (route) seçeneği çekirdek yönlendirme tablosunu görüntüler.

sudo netstat -r

sudo netstat -r bir terminal penceresinde

İşte düzgün bir tablodaki çıktı:

Kernel IP routing table
Destination   Gateway       Genmask        Flags  MSS  Window  irtt  Iface
default       Vigor.router  0.0.0.0        UG       0  0          0  enp0s3
link-local    0.0.0.0       255.255.0.0    U        0  0          0  enp0s3
192.168.4.0   0.0.0.0       255.255.255.0  U        0  0          0  enp0s3

Ve sütunların anlamı şudur:

  • Hedef: Hedef ağ veya hedef ana bilgisayar cihazı (hedef bir ağ değilse).
  • Ağ geçidi: Ağ geçidi adresi. Yıldız işareti “*“Ağ geçidi adresi ayarlanmadıysa burada” görünür.
  • Genmask: Rotanın alt ağ maskesi.
  • Bayraklar: Bkz. bayraklar aşağıdaki tablo.
  • MSS: Bu rota üzerindeki TCP bağlantıları için Varsayılan Maksimum Segment Boyutu — bu, bir TCP segmentinde alınabilecek en büyük veri miktarıdır.
  • Pencere: Bu bağlantı üzerinden TCP bağlantıları için, varsayılan arabellek dolmadan aktarılabilecek ve alınabilecek paket sayısını gösteren varsayılan pencere boyutu. Pratikte, paketler alıcı uygulama tarafından tüketilir.
  • irtt: İlk Gidiş Saati. Bu değere, yavaş yanıt vermeyen uzak bağlantılar için TCP parametrelerinde dinamik ayarlamalar yapmak üzere çekirdek tarafından başvurulur.
  • Arayüz: Bu yol üzerinden gönderilen paketlerin iletildiği ağ arabirimi.

bayraklar değer şunlardan biri olabilir:

  • U: Rota kalktı.
  • H: Hedef bir ana bilgisayardır ve bu rotada mümkün olan tek hedeftir.
  • G: Ağ geçidini kullanın.
  • R: Dinamik yönlendirme için rotayı eski durumuna getirin.
  • D: Yönlendirme arka plan programı tarafından dinamik olarak yüklenir.
  • M: Bir Internet Denetim İletisi Protokolü (ICMP) paketi alındığında, yönlendirme arka plan programı tarafından değiştirildi.
  • A: Yükleyen addrconf, otomatik DNS ve DHCP yapılandırma dosyası oluşturucu.
  • C: Önbellek girişi.
  • !: Rotayı reddet.

Bir Süreç Tarafından Kullanılan Bağlantı Noktasını Bulma

Çıkışı borsa yaparsak netstat vasıtasıyla grep, bir işlemi ada göre arayabilir ve kullandığı bağlantı noktasını belirleyebiliriz. Kullanırız -a (herşey), -n (sayısal) ve -p (program) seçeneklerini kullanın ve “sshd” yi arayın.

sudo netstat -anp | grep "sshd"

sudo netstat -anp | terminal penceresinde grep "sshd"

grep hedef dizeyi bulur ve sshd Daemon 22 numaralı bağlantı noktasını kullanıyor.

Tabii ki, bunu tersine de yapabiliriz. “: 22” yi ararsak, eğer varsa, o portu hangi işlemin kullandığını bulabiliriz.

sudo netstat -anp | grep ":22"

sudo netstat -anp | terminal penceresinde grep ": 22"

Bu zaman grep “: 22” hedef dizesini bulur ve bu bağlantı noktasını kullanan işlemin sshd arka plan programı, işlem kimliği 751.

Ağ Arayüzlerini Listeleme

-i (arayüzler) seçeneği ağ arayüzlerinin bir tablosunu netstat keşfedebilirsiniz.

sudo netstat -i

Terminal penceresindeki Çekirdek Arabirim tablosu

İşte çıktı daha okunaklı bir şekilde:

Kernel Interface table
Iface     MTU   RX-OK  RX-ERR  RX-DRP  RX-OVR    TX-OK   TX-ERR   TX-DRP   TX-OVR Flg
enp0s3   1500 4520671       0       0  0       4779773        0        0        0 BMRU
lo      65536   30175       0       0  0         30175        0        0        0 LRU

Sütunlar şu anlama gelir:

  • Arayüz: Arayüzün adı. enp0s3 arayüz ağ arayüzüdür dışarıda dünya ve lo arabirim geri döngü arabirimidir. Geri döngü arabirimi, işlemlerin iletişim kurmasını sağlar içinde bilgisayar bir ağa bağlı olmasa bile, ağ protokollerini kullanarak bilgisayarı.
  • MTU: Maksimum İletim Birimi (MTU). Bu gönderilebilecek en büyük “paket” tir. Yönlendirme ve protokol bayraklarını ve diğer meta verileri içeren bir başlıktan ve gerçekte aktarılan verilerden oluşur.
  • RX-OK: Hatasız alınan paket sayısı.
  • RX-ERR: Hatalı alınan paket sayısı. Bunun mümkün olduğunca düşük olmasını istiyoruz.
  • RX-DRP: Düşen paketlerin sayısı (yani kayıp). Bunun mümkün olduğunca düşük olmasını da istiyoruz.
  • RX-OVR: Alma sırasında taşmalar nedeniyle kaybedilen paket sayısı. Bu genellikle alıcı tamponun dolu olduğu ve daha fazla veri kabul edemediği, ancak daha fazla verinin alındığı ve atılması gerektiği anlamına gelir. Bu rakam ne kadar düşükse, o kadar iyi ve sıfır mükemmeldir.
  • TX-OK: İletilen paket sayısı, hatasız.
  • RX-ERR: Hatalı gönderilen paket sayısı. Bunun sıfır olmasını istiyoruz.
  • RX-DRP: İletim sırasında bırakılan paket sayısı. İdeal olarak, bu sıfır olmalıdır.
  • RX-OVR: Aktarım sırasında taşmalar nedeniyle kaybedilen paket sayısı. Bu genellikle gönderme arabelleğinin dolu olduğu ve daha fazla veri kabul edemediği anlamına gelir, ancak daha fazla veri iletilmeye hazırdı ve atılması gerekti.
  • Flg: Bayraklar. Bkz. bayraklar aşağıdaki tablo.

bayraklar aşağıdakileri temsil eder:

  • B: Bir yayın adresi kullanılıyor.
  • L: Bu arayüz geri döngü cihazıdır.
  • M: Tüm paketler alınıyor (örn. Karışık modda). Hiçbir şey filtrelenmez veya atılmaz.
  • Ö: Bu arabirim için Adres Çözümleme Protokolü (ARP) kapalı.
  • P: Bu bir Noktadan Noktaya (PPP) bağlantıdır.
  • R: Arayüz çalışıyor.
  • U: Arayüz bitti.

Çok Noktaya Yayın Grubu Üyeliklerini Listele

Basitçe söylemek gerekirse, çok noktaya yayın iletimi, alıcı sayısına bakılmaksızın bir paketin yalnızca bir kez gönderilmesini sağlar. Örneğin, video akışı gibi hizmetler için bu, gönderenin bakış açısından verimliliği büyük oranda artırır.

-g (gruplar) seçeneği yapar netstat Her arabirimdeki soketlerin çok noktaya yayın grubu üyeliğini listeler.

sudo netstat -g

sudo netstat -g bir terminal penceresinde

Sütunlar oldukça basittir:

  • Arayüz: Soketin üzerinden iletim yaptığı arabirimin adı.
  • RefCnt: Sokete bağlı işlemlerin sayısı olan referans sayısı.
  • Grup: Çok noktaya yayın grubunun adı veya tanımlayıcısı.

Bloktaki Yeni Çocuklar

Route, ip, ifconfig ve ss komutları, netstat size gösterme yeteneğine sahiptir. Hepsi harika komutlar ve kontrol etmeye değer.

Odaklandık netstat çünkü hangi Unix benzeri işletim sistemi üzerinde çalıştığınıza bakılmaksızın, belirsiz olanları bile evrensel olarak kullanılabilir.

LEAVE A REPLY

Please enter your comment!
Please enter your name here