Linux'ta ss Komutu Nasıl Kullanılır

Yayınlanan: 2022-01-29
Linux dizüstü sistemindeki bir terminal penceresi.
Fatmawati Achmad Zaenuri/Shutterstock

ss komutu, klasik netstat modern bir alternatifidir. Ağ bağlantılarınız hakkında istatistik almak için Linux'ta kullanabilirsiniz. İşte bu kullanışlı araçla nasıl çalışacağınız.

ss Komutu netstat'a karşı

Kullanımdan kaldırılan netstat komutunun yerine geçen ss , bilgisayarınızın diğer bilgisayarlar, ağlar ve hizmetlerle nasıl iletişim kurduğu hakkında ayrıntılı bilgi verir.

ss , İletim Kontrol Protokolü (TCP), Kullanıcı Datagram Protokolü (UDP), Unix (işlemler arası) ve ham yuvalar için istatistikleri görüntüler. Ham soketler ağ OSI düzeyinde çalışır, bu da TCP ve UDP başlıklarının taşıma katmanı tarafından değil uygulama yazılımı tarafından ele alınması gerektiği anlamına gelir. İnternet Denetim İletisi Protokolü (ICMP) iletilerinin ve ping yardımcı programının her ikisi de ham yuvalar kullanır.

ss kullanma

Zaten güncel bir Linux dağıtımının parçası olduğu için ss yüklemeniz gerekmez. Ancak çıktısı çok uzun olabilir—630'dan fazla satır içeren sonuçlar elde ettik. Sonuçlar da çok geniş.

Bu nedenle, bir ekran görüntüsüne sığmayacağından elde ettiğimiz sonuçların metin temsillerini ekledik. Onları daha yönetilebilir hale getirmek için kırptık.

Ağ Bağlantılarını Listeleme

Komut satırı seçenekleri olmadan ss kullanmak, dinlemeyen soketleri listeler. Yani dinleme durumunda olmayan soketleri listeler.

Bunu görmek için aşağıdakini yazın:

 ss 

 Netid State Recv-Q Send-Q Yerel Adresi:Port Eş Adresi:Port İşlemi
u_str ESTAB 0 0 * 41826 * 41827
u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688
u_str ESTAB 0 0 * 35550 * 35551
...
u_str ESTAB 0 0 * 38127 * 38128
u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242
u_str ESTAB 0 0 * 19039 * 19040
u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 
u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
icmp6 UNCONN 0 0 *:ipv6-icmp *:*
udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

Sütunlar aşağıdaki gibidir:

  • Netid : Soket tipi. Örneğimizde, "u_str", bir Unix akışı, bir "udp" ve "icmp6", bir IP sürüm 6 ICMP soketi var. Linux kılavuz sayfalarında Linux soket türleri hakkında daha fazla açıklama bulabilirsiniz.
  • State : Soketin içinde bulunduğu durum.
  • Recv-Q : Alınan paketlerin sayısı.
  • Send-Q : Gönderilen paketlerin sayısı.
  • Yerel Adres: Bağlantı Noktası : Yerel adres ve bağlantı noktası (veya Unix yuvaları için eşdeğer değerler).
  • Eş Adres:Port : Uzak adres ve port (veya Unix soketleri için eşdeğer değerler).
Reklamcılık

UDP soketleri için “Durum” sütunu genellikle boştur. TCP soketleri için aşağıdakilerden biri olabilir:

  • DİNLE: Yalnızca sunucu tarafı. Soket bir bağlantı isteği bekliyor.
  • SYN-SENT: Yalnızca istemci tarafı. Bu soket bir bağlantı isteğinde bulundu ve kabul edilip edilmediğini görmek için bekliyor.
  • SYN-RECEIVED: Yalnızca sunucu tarafı. Bu soket, bir bağlantı talebini kabul ettikten sonra bir bağlantı onayı bekliyor.
  • KURULDU: Sunucu ve istemciler. Sunucu ve istemci arasında, ikisi arasında veri aktarımına izin veren çalışan bir bağlantı kuruldu.
  • FIN-WAIT-1: Sunucu ve istemciler. Bu soket, uzak soketten bir bağlantı sonlandırma talebi veya daha önce bu yuvadan gönderilen bir bağlantı sonlandırma talebinin onayını bekliyor.
  • FIN-WAIT-2: Sunucu ve istemciler. Bu soket, uzak soketten bir bağlantı sonlandırma talebi bekliyor.
  • YAKIN BEKLE: Sunucu ve istemci. Bu soket, yerel kullanıcıdan bir bağlantı sonlandırma talebi 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 bir onayını bekliyor.
  • ZAMAN-BEKLE: Sunucu ve istemciler. Bu soket, uzak soketin sonlandırma talebini aldığını bildirmek için uzak sokete bir alındı ​​bilgisi gönderdi. Şimdi onayın alındığından emin olmak için bekliyor.
  • KAPALI: Bağlantı yok, bu nedenle soket sonlandırıldı.

Dinleme Yuvalarını Listeleme

Dinleme soketlerini görmek için -l (dinleme) seçeneğini şu şekilde ekleyeceğiz:

 ss -l 

 Netid State Recv-Q Send-Q Yerel Adresi:Port Eş Adresi:Port İşlemi 
nl BAĞLANTISIZ 0 0 rtnl:NetworkManager/535 * 
nl UNCONN 0 0 rtnl:evrim-adresi/2987 * 
...
u_str DİNLE 0 4096 /run/systemd/private 13349 * 0 
u_seq DİNLE 0 4096 /run/udev/kontrol 13376 * 0 
u_str DİNLE 0 4096 /tmp/.X11-unix/X0 33071 * 0 
u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 
u_str DİNLE 0 4096 /run/systemd/fsck.progress 13362 * 0 
u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0

Bu soketlerin hepsi bağlantısız ve dinliyor. “rtnl”, çekirdek ve kullanıcı alanı süreçleri arasında bilgi aktarmak için kullanılan yönlendirme net bağlantısı anlamına gelir.

Tüm Soketleri Listeleme

Tüm soketleri listelemek için -a (tümü) seçeneğini kullanabilirsiniz:

 ss -a 

 Netid State Recv-Q Send-Q Yerel Adresi:Port Eş Adresi:Port İşlemi 
nl BAĞLANTISIZ 0 0 rtnl:NetworkManager/535 * 
nl UNCONN 0 0 rtnl:evrim-adresi/2987 * 
...
u_str DİNLE 0 100 genel/showq 23222 * 0 
u_str DİNLE 0 100 özel/hata 23225 * 0 
u_str DİNLE 0 100 özel/tekrar dene 23228 * 0 
...
udp BAĞLANTISIZ 0 0 0.0.0.0:631 0.0.0.0:* 
udp BAĞLANTISIZ 0 0 0.0.0.0:mdns 0.0.0.0:* 
...
tcp DİNLE 0 128 [::]:ssh [::]:* 
tcp DİNLE 0 5 [::1]:ipp [::]:* 
tcp DİNLE 0 100 [::1]:smtp [::]:*

Çıktı, durumdan bağımsız olarak tüm soketleri içerir.

TCP Soketlerini Listeleme

Ayrıca yalnızca eşleşen yuvaların görüntülenmesi için bir filtre uygulayabilirsiniz. -t (TCP) seçeneğini kullanacağız, bu nedenle yalnızca TCP soketleri listelenecektir:

ss -a -t

UDP Soketlerini Listeleme

-u (UDP) seçeneği, aynı tür filtreleme eylemini gerçekleştirir. Bu sefer sadece UDP soketlerini göreceğiz:

 ss -a -u 

 Durum Recv-Q Gönder-Q Yerel Adresi:Port Eş Adresi:Port İşlemi 
UNCONN 0 0 0.0.0.0:631 0.0.0.0:* 
UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* 
UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* 
UNCONN 0 0 127.0.0.53%lo:alan 0.0.0.0:* 
ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps 
BAĞLANTIYI 0 0 [::]:mdns [::]:* 
UNCONN 0 0 [::]:51193 [::]:*

Unix Soketlerini Listeleme

Yalnızca Unix soketlerini görmek için aşağıda gösterildiği gibi -x (Unix) seçeneğini dahil edebilirsiniz:

 ss -a -x 

 Netid State Recv-Q Send-Q Yerel Adresi:Port Eş Adresi:Port İşlemi 
u_str ESTAB 0 0 * 41826 * 41827 
u_str ESTAB 0 0 * 23183 * 23184 
u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 
...
u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 
u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306

Ham Yuvaları Listeleme

Ham yuvalar için filtre -w (ham) seçeneğidir:

 ss -a -w 

IP Sürüm 4 Soketlerini Listeleme

TCP/IP sürüm 4 protokolünü kullanan yuvalar -4 (IPV4) seçeneği kullanılarak listelenebilir:

 ss -a -4 

IP Sürüm 6 Soketlerini Listeleme

Eşleşen IP sürüm 6 filtresini -6 (IPV6) seçeneğiyle şu şekilde açabilirsiniz:

 ss -a -6 

Duruma Göre Soketleri Listeleme

Durum seçeneği ile soketleri bulundukları state göre listeleyebilirsiniz. Bu yerleşik, dinleme veya kapalı durumlarla çalışır. Ayrıca ağ adreslerini adlara ve bağlantı noktalarını protokollere dönüştürmeye çalışan çözümleme seçeneğini ( -r ) kullanacağız.

Reklamcılık

Aşağıdaki komut, kurulmuş TCP bağlantılarını arayacak ve ss , adları çözmeye çalışacaktır:

 ss -t -r durumu kuruldu 

Kurulu durumda olan dört bağlantı listelenir. Ana bilgisayar adı ubuntu20-04 çözüldü ve ikinci satırda SSH bağlantısı için 22 yerine “ssh” gösteriliyor.

Dinleme durumunda soket aramak için bunu tekrarlayabiliriz:

 ss -t -r durum dinleme 

 Recv-Q Gönder-Q Yerel Adresi:Port Eş Adresi:Port İşlemi 
0 128 yerel ana bilgisayar:5939 0.0.0.0:* 
0 4096 localhost%lo:alan 0.0.0.0:* 
0 128 0.0.0.0:ssh 0.0.0.0:* 
0 5 localhost:ipp 0.0.0.0:* 
0 100 yerel ana bilgisayar:smtp 0.0.0.0:* 
0 128 [::]:ssh [::]:* 
0 5 ip6-localhost:ipp [::]:* 
0 100 ip6-localhost:smtp [::]:*

Protokole Göre Soketleri Listeleme

Sırasıyla hedef ve kaynak bağlantı noktalarını temsil eden dport ve sport seçenekleriyle belirli bir protokolü kullanan soketleri listeleyebilirsiniz.

established bir bağlantıda HTTPS protokolünü kullanan soketleri listelemek için aşağıdakileri yazıyoruz (açılan parantezden sonraki ve kapanış parantezinden önceki boşluğa dikkat edin):

 ss -a devlet kuruldu '( dport = :https veya spor = :https )' 

Protokol adını veya genellikle bu protokolle ilişkilendirilen bağlantı noktasını kullanabiliriz. Secure Shell (SSH) için varsayılan bağlantı noktası 22 numaralı bağlantı noktasıdır.

Reklamcılık

Protokol adını bir komutta kullanacağız ve ardından port numarasını kullanarak tekrarlayacağız:

 ss -a '( dport = :ssh veya spor = :ssh )'
 ss -a '( dport = :22 veya spor = :22 )' 

Beklendiği gibi, aynı sonuçları alıyoruz.

Belirli Bir IP Adresine Bağlantıları Listeleme

dst (destination) seçeneği ile belirli bir hedef IP adresine olan bağlantıları listeleyebiliriz.

Aşağıdakileri yazıyoruz:

 ss -a dst 192.168.4.25 

Süreçleri Tanımlama

Soketleri hangi işlemlerin kullandığını görmek için, aşağıda gösterildiği gibi işlemler seçeneğini ( -p ) kullanabilirsiniz ( sudo kullanmanız gerektiğini unutmayın):

 sudo ss -t -p 

 Durum Recv-Q Gönder-Q Yerel Adresi:Port Eş Adresi:Port İşlemi 
ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https kullanıcıları:((("firefox",pid=3378,fd=151)) 
ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 kullanıcılar:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

Bu bize TCP soketlerinde kurulan iki bağlantının SSH arka plan programı ve Firefox tarafından kullanıldığını gösterir.

Değerli Bir Halef

ss komutu, daha önce netstat tarafından sağlanan bilgilerin aynısını, ancak daha basit, daha erişilebilir bir şekilde sağlar. Daha fazla seçenek ve ipucu için man sayfasına göz atabilirsiniz.

İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar