Bir komutun ağ etkinliğini nasıl izleyebilirim?


14

Bir komutun ağ etkinliğini izlemek istiyorum, tcpdump ve strace'yi başarılı olmadan denedim.

Örneğin, bir paket yüklüyorsanız veya bir siteye ulaşmaya çalışan herhangi bir komutu kullanıyorsanız, bu ağ etkinliğini (ulaşmak istediği site) görüntülemek istiyorum.

Sanırım bunu tcpdump kullanarak yapabiliriz. Denedim ama sistemimin tüm ağ etkinliğini izliyor. Diyelim ki birden fazla ağ bağlantılı komünom çalıştırırsam ve yalnızca belirli komut ağ etkinliğini izlemek istersem, o zaman kesin çözümü bulmak zordur.

Bunu yapmanın bir yolu var mı?

GÜNCELLEME:

Ağ arayüzümde olan her şeyi izlemek istemiyorum. Sadece komut (örneğin #yum install -y vim) ağ etkinliğini izlemek istiyorum. Site gibi ulaşmaya çalışıyor.


1
Uygulamayı bir ağ ad alanına koyun, ardından tcpdump / wireshark kullanın. Örneğin buraya bakınız .
dirkt

Yanıtlar:


17

basitlik için netstat

netstatPID veya işlem adının kullanılması ve kullanılması :

# netstat -np --inet | grep "thunderbird"
tcp        0      0 192.168.134.142:45348   192.168.138.30:143      ESTABLISHED 16875/thunderbird
tcp        0      0 192.168.134.142:58470   192.168.138.30:443      ESTABLISHED 16875/thunderbird

watchDinamik güncellemeler için de kullanabilirsiniz :

watch 'netstat -np --inet | grep "thunderbird"'

İle:

  • -n: Sembolik ana bilgisayar, bağlantı noktası veya kullanıcı adlarını belirlemeye çalışmak yerine sayısal adresleri göster
  • -p: Her soketin ait olduğu programın PID'sini ve adını gösterir.
  • --inet: Yalnızca ham, udp ve tcp protokol soketlerini göster.

ayrıntı düzeyi

straceAracı denediğinizi söylediniz , ancak seçeneği denediniz trace=networkmi? Çıktının oldukça ayrıntılı olabileceğini unutmayın, bu nedenle biraz selamlamanız gerekebilir. "Sin_addr" ile başlayarak başlayabilirsiniz.

 strace -f -e trace=network <your command> 2>&1 | grep sin_addr

Veya zaten çalışan bir işlem için PID'yi kullanın:

 strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr

+1 için netstatIMHO en basit ve en güzel çözümdür.
dr01

@ Gohu Aynı şeyi dnf için de yaptım. ama şans yok. Dnf kullanarak bazı paketleri yüklemeyi denedim, sonra dnf işleminin çalıştığını görüyorum (işlem adı: üst ve ps aux komutuna göre dnf). Ne yazık ki, netstat -np --inet herhangi bir çıktı alamadım | grep "dnf".
Buvanesh Kumar

Strace için +1. Sorunum çözüldü. IP adreslerini alabiliyorum. Cevabınız için çok teşekkür ederim :) @Gohu. Sanırım ağ üzerinden ulaştığı tüm IP adreslerini veriyor (örn. Yönlendirici IP'si ve diğer IP'ler). Biliyorsanız, yalnızca hedef IP'yi izlemek mümkün müdür?
Buvanesh Kumar

straceÇıkışı biraz daha deneyebilir , yalnızca connectsistem çağrılarını tutarak ve dnsistekleri (bağlantı noktası 53) | grep connect | grep -v 'sin_port=htons(53)'
yöntemlerle kaldırabilirsiniz



5

sysdig ağ etkinliğini de içeren ve bunlarla sınırlı olmayan çekirdeğin veya sisteminizde çalışan birkaç komutun tüm etkinliğini izlemenizi sağlar.

Çıktı büyük olabileceğinden, filtreler oluşturmanız gerekir, en temel filtreler için varsayılan sayfa oldukça anlaşılır.

Ayrıca, olduğu gibi bir uygulama sarıcı olarak kullanılmaması avantajına sahiptir ve straceoldukça güçlü olabilir.

Gönderen Sysdig Örnekler

Ağ bant genişliği kullanımı açısından en iyi süreçlere bakın

sysdig -c topprocs_net 

Ana bilgisayarla değiştirilen ağ verilerini göster 192.168.0.1

İkili olarak:

sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1   

ASCII olarak:

sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1 

En iyi yerel sunucu bağlantı noktalarına bakın:

Kurulu bağlantılar açısından:

sysdig -c fdcount_by fd.sport "evt.type=accept"   

Toplam bayt cinsinden:

sysdig -c fdbytes_by fd.sport 

En iyi istemci IP'lerine bakın

Yerleşik bağlantılar açısından

sysdig -c fdcount_by fd.cip "evt.type=accept"   

Toplam bayt cinsinden

sysdig -c fdbytes_by fd.cip 

Apache tarafından sunulmayan tüm bağlantıları listeleyin.

sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

1

Bir ağ arabiriminin tüm giriş ve çıkış trafiğini koklamak için wireshark kullanabilirsiniz. GUI'siz bir seçeneğe ihtiyacınız varsa tshark kullanabilirsiniz.

Her iki seçenekle tüm ağ trafiğini görebilir ve daha sonra kurulan tüm bağlantıları analiz etmek için kaydedebilirsiniz.


1
Daha önce de söylediğim gibi, ağ ile ilgili birden fazla komut çalıştırırsam, hangi komutun hangi siteye ulaştığını nasıl bilebilirim?
Buvanesh Kumar

Bu daha genel bir cevaptır. Bir ağ arayüzünün ağ etkinliğini izleyebildiğimizi zaten biliyorum :). Belirli bir komut ağı istatistiklerini izlemek için arıyorum.
Buvanesh Kumar

Komutun hangi portları kullandığını biliyorsanız sniff'i istediğiniz komuta sınırlamak için filtreleyebilirsiniz. Ancak bu durum sizin durumunuzda yapılamayabilir.
Ricard Molins
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.