Hur man Använder netstat på Linux

0
418
Fatmawati Achmad Zaenuri/Shutterstock

Linux-kommandot netstat ger dig ett skattfynd av information om nätverksanslutningarna, de portar som är i bruk, och de processer som använder dem. Lär dig hur man använder det.

Portar, Processer och Protokoll

Nätverksuttag kan antingen anslutas eller väntar på en anslutning. Anslutningar använda nätverksprotokoll som Transport Control Protocol (TCP) eller UDP-User Datagram Protocol. De använder Internet Protocol-adresser och portar nätverk för att upprätta anslutningar.

Ordet uttag kan trolla fram bilder av en fysisk anslutning till en ledning eller kabel, men i detta sammanhang, en socket är en programvara för att bygga används för att hantera ena änden av en dataanslutning.

Uttag har två största staterna: De är anslutna till och underlätta en pågående kommunikationen på nätet, eller att de väntar på en inkommande anslutning för att ansluta till dem. Det finns andra stater, såsom när en socket är halvvägs genom att upprätta en anslutning på en fjärransluten enhet, men att sätta övergående stater åt sidan, kan du tänka på en socket som antingen är anslutna eller väntar (som ofta kallas att lyssna).

Lyssna uttaget kallas servern, och den socket som begär en anslutning med lyssna uttaget kallas för en klient. Dessa namn har ingenting att göra med hårdvara eller dator roller. De har helt enkelt definiera vilken roll varje uttag i vardera änden av anslutningen.

Netstat kommando låter dig upptäcka vilka uttag som är anslutna och som uttag är att lyssna. Mening, den talar om vilka portar som används och vilka processer kan använda dem. Det kan visa dig routing tabeller och statistik om ditt nätverkskort och multicast-anslutningar.

Funktionalitet netstat har upprepats över tid i olika Linux-verktyg, såsom ip-ss. Det är fortfarande värt att veta detta morfar av alla nätverk analys kommandon, eftersom den är tillgänglig på alla Linux-och Unix-liknande operativsystem, samt även för Windows och Mac.

Här är hur man använder det, komplett med exempel på kommandon.

Lista Alla Kontakter

Växeln-a (all) alternativet gör netstat visar alla anslutna och väntar uttag. Detta kommando är ansvarig för att producera en lång lista, så vi rör det inte i mindre.

netstat -a | mindre

Listan inkluderar TCP (IP), TCP6 (IPv6), och UDP-uttag.

Wrap-around i terminal-fönstret gör det lite svårt att se vad som pågår. Här är ett par av avsnitten från denna lista:

Aktiv Internet-anslutning (servrar och etablerade)
Proto Recv-Q-Skicka-Q Lokal Adress Utländsk Adress Staten
tcp 0 0 localhost:domän 0.0.0.0:* LYSSNA
tcp 0 0 0.0.0.0:ssh-0.0.0.0:* LYSSNA
tcp 0 0 localhost:ipp-0.0.0.0:* LYSSNA
tcp 0 0 localhost:smtp-0.0.0.0:* LYSSNA
tcp6 0 0 [::]:ssh [::]:* LYSSNA
tcp6 0 0 ip6-localhost:ipp [::]:* LYSSNA
.
.
.
Aktiv UNIX-domänen uttag (servrar och etablerade)
Proto RefCnt Flaggor Typ Stat I-Nod Väg
unix 24 [ ] DGRAM 12831 /run/systemd/tidning/dev-logga
unix 2 [ ACC ] STRÖM LYSSNA 24747 @/tmp/dbus-zH6clYmvw8
unix-2 [ ] DGRAM 26372 /run/user/1000/systemd/meddela
unix-2 [ ] DGRAM 23382 /run/user/121/systemd/meddela
unix 2 [ ACC ] SEQPACKET LYSSNA 12839 /run/udev/kontroll

Den “Aktiva Internet” avsnitt listar anslutna externa anslutningar och lokala uttag lyssna för anslutning önskemål. Som visas i nätverksanslutningar, som är (eller kommer att vara) etablerade på externa enheter.

Den “UNIX-domänen” listar anslutna och lyssna interna anslutningar. Med andra ord, den visas de anslutningar som har upprättats inom datorn mellan olika applikationer, processer och delar av operativsystemet.

Den “Aktiva Internet” kolumnerna är:

  • Proto: protokollet som används med detta uttag (till exempel TCP eller UDP).
  • Recv-Q: Det får kö. Dessa är inkommande byte som har tagits emot och är buffrad, väntar på att den lokala processen som använder denna anslutning för att läsa och konsumera dem.
  • Skicka-Q: skicka kö. Detta visar den byte som är redo att skickas från att skicka kö.
  • Lokal adress: adress detaljerna i den lokala änden av anslutningen. Standard är för netstat för att visa den lokala värdnamn för adressen och namnet på tjänsten för hamnen.
  • Utländsk adress: adressen och portnumret i avlägsna änden av anslutningen.
  • Staten: staten av det lokala uttaget. För UDP-uttag, detta är oftast tom. Se staten tabellen nedan.

För TCP-anslutningar, staten värde kan vara ett av följande :

  • LYSSNA: Server-sidan. Uttaget väntar en anslutningsbegäran.
  • SYN-SKICKAT: klientsidan. Detta uttag har gjort en förfrågan om anslutning och väntar för att se om det kommer att accepteras.
  • SYN-MOTTAGEN:på Server-sidan. Detta uttag är att vänta för en anslutning bekräftelse efter accepterar en anslutningsförfrågan.
  • ETABLERAD: Server och klienter. En fungerande anslutning har upprättats mellan servern och klienten, vilket gör att data kan överföras mellan de två.
  • FIN-VÄNTA-1: Server och klienter. Detta uttag är att vänta för en anslutning begäran om uppsägning från remote-uttaget, eller för en bekräftelse av en anslutning begäran om uppsägning som var tidigare som skickas från denna socket.
  • FIN-VÄNTA-2: Server och klienter. Detta uttag är att vänta för en anslutning begäran om uppsägning från remote-uttaget.
  • NÄRA-VÄNTA: klient och Server. Detta uttag är att vänta för en anslutning begäran om uppsägning från den lokala användaren.
  • STÄNGNING: Server och klienter. Detta uttag är att vänta för en anslutning uppsägning begära bekräftelse från remote-uttaget.
  • SISTA-ACK: klient och Server. Detta uttag väntar på en bekräftelse av den anslutning uppsägning begär det skickas till remote-uttaget.
  • TID-VÄNTA: Server och klienter. Detta uttag skickas en bekräftelse till remote-uttaget för att låta den veta att det fick remote uttaget s begäran om uppsägning. Det är nu som väntar på att se till att bekräftelse har mottagits.
  • STÄNGT: Det finns inget samband, så uttaget har upphört att gälla.

Den “Unix-domänen” kolumnerna är:

  • Proto: protokollet som används med detta uttag. Det kommer att vara “unix.”
  • RefCnt: Referens räknas. Antalet anslutna processer anslutits till detta uttag.
  • Flaggor: Detta är vanligtvis satt till ACC , som står SO_ACCEPTON, vilket innebär att uttaget väntar en anslutningsbegäran. SO_WAITDATA, som visas som W, innebär att det finns uppgifter som väntar på att läsas. SO_NOSPACE, som visas som N, betyder det att det inte finns något utrymme för att skriva data till uttaget (dvs, skicka bufferten är full).
  • Typ: uttaget typ. Se vilken typ tabellen nedan.
  • Staten: staten uttaget. Se staten tabellen nedan.
  • Jag-Nod: filsystemet inode i samband med detta uttag.
  • Sökväg: file system path till uttaget.

Unix-domänen uttag typ kan vara en av följande:

  • DGRAM: uttaget används i datagram läge, med hjälp av meddelanden av fast längd. Datagram är varken garanterad att vara pålitliga, sekvenseras, eller enskilda.
  • STRÖM: Detta uttag är en ström uttaget. Detta är den vanliga, “normala” typ av socket. Dessa uttag är utformade för att ge tillförlitliga analyserats (i ordning) leverans av paket.
  • RÅ: det Här uttaget används som en raw-uttaget. Raw sockets driva på nätet nivå i OSI-Modellen och hänvisa inte till TCP-och UDP-rubriker från transport-nivå.
  • RDM: Denna uttag ligger på ena änden av ett tillförlitligt meddelanden anslutning.
  • SEQPACKET: Detta uttag är att fungera som en sekventiell paket uttaget, vilket är ett annat sätt att tillhandahålla tillförlitlig, sekvenseras och enskilda paketleveranser.
  • PAKET: Raw-interface tillgång uttaget. Paket-uttag används för att sända eller ta emot raw-paket på drivrutinen (dvs. data link layer) nivå i OSI-modellen.

Unix-domänen socket staten kan vara en av följande:

  • GRATIS: Detta uttag är ej allokerade.
  • LYSSNA: Detta uttag är att lyssna efter inkommande anslutningsförsök.
  • ANSLUTNING: Detta uttag är i färd med att ansluta.
  • ANSLUTEN: EN anslutning har upprättats, och sockeln är i stånd att ta emot och överföra data.
  • KOPPLA ur: anslutningen är på väg att avslutas.

Wow, det är en hel del information! Många av de netstat alternativ förfina resultaten på ett eller annat sätt, men de behöver inte ändra innehållet för mycket. Låt oss ta en titt.

Notering Uttag av Typ

Netstat -ett kommando kan ge mer information än du behöver för att se. Om du bara vill eller behöver se TCP-sockets, kan du använda de -t (TCP) alternativ för att begränsa visningen till att visa endast TCP-sockets.

netstat -i | mindre

Displayen ut är kraftigt reducerad. De få uttag som anges är alla TCP-sockets.

-U (UDP) och x (UNIX) alternativ beter sig på ett liknande sätt, begränsa resultaten till den typ av uttag som anges på kommandoraden. Här är den -u (UDP) alternativ användning:

netstat -au | mindre

Bara UDP-uttag är listade.

Notering Uttag av Staten

För att se de uttag som finns i att lyssna eller vänteläge, använd-l (lyssna) alternativ.

netstat -l | mindre

De uttag som visas är de som finns i att lyssna staten.

Detta kan kombineras med de-t (TCP, u (UDP) och x (UNIX) alternativ för att ytterligare hem för uttag av intresse. Låt oss titta för att lyssna TCP-sockets:

netstat -lt | mindre

Nu ser vi bara till TCP lyssna uttag.

Nätverket Statistik per Protokoll

För att se statistik för ett protokoll, använda växeln-s (statistik) och pass i -t (TCP), -u (UDP), eller -x (UNIX) alternativ. Om du bara använda-s (statistik) alternativet på egen hand, du kommer att se statistik för alla protokoll. Låt oss kolla statistiken för TCP-protokollet.

netstat -st | mindre

En insamling av statistik för TCP-anslutningar visas i mindre.

Visar Processen Namn och Ris

Det kan vara nyttigt att se på vilket process-ID (PID) av processen med hjälp av en sockel, tillsammans med namnet på denna process. -P (program) – alternativet gör just det. Låt oss se vad Pid och process namn för de processer som använder en TCP-socket som ligger i att lyssna staten. Vi använder sudo för att se till att vi får all information som är tillgänglig, inklusive information som normalt kräver root-behörighet.

sudo netstat -p -i

Här är produktionen i en överskådlig tabell:

Aktiv Internet-anslutning (servrar och etablerade)
Proto Recv-Q-Skicka-Q Lokal Adress Utländsk Adress Staten PID – /Program-namn
tcp 0 0 localhost:domän 0.0.0.0:* LYSSNA 6927/systemd-resolv
tcp 0 0 0.0.0.0:ssh-0.0.0.0:* LYSSNA 751/sshd
tcp 0 0 localhost:ipp-0.0.0.0:* LYSSNA 7687/cupsd: s
tcp 0 0 localhost:smtp-0.0.0.0:* LYSSNA 1176/master
tcp6 0 0 [::]:ssh [::]:* LYSSNA 751/sshd
tcp6 0 0 ip6-localhost:ipp [::]:* LYSSNA 7687/cupsd: s
tcp6 0 0 ip6-localhost:smtp [::]:* LYSSNA 1176/master

Vi har fått en extra kolumn som heter “PID – /program-namn.” Denna kolumn listar PID och namn på processen med hjälp av varje uttag.

Notering Numeriska Adresser

Ett annat steg vi kan ta för att ta bort en viss tvetydighet är att visa den lokala och fjärr-adresser IP-adresser i stället för löst domän och värdnamn. Om vi använder-n (numeriska) alternativet IPv4-adresser visas i punktdecimalform format:

sudo netstat -an | mindre

IP-adresser visas som numeriska värden. Portnummer visas också, separerade med ett kolon ” : “från den IP-Adressen.

En IP-adressen 127.0.0.1 visar att uttaget är bundna till loopback-adressen till den lokala datorn. Kan du tänka dig en IP-adress 0.0.0.0 som betyder “default route” för lokala adresser, och “IP-adress” för utländska adresser. IPv6-adresser som visas som “::” är också alla noll-adresser.

De hamnar som finns kan lätt kontrolleras för att se vad deras vanliga ändamål är:

  • 22: Detta är Secure Shell (SSH) lyssnande port.
  • 25: Detta Simple Mail Transfer Protocol (SMTP) lyssnande port.
  • 53: Detta är DNS (Domain Name System) lyssnande port.
  • 68: Detta är Dynamic Host Configuration Protocol (DHCP) lyssnande port.
  • 631: Detta är Common UNIX Printing System (CUPS) lyssnande port.

RELATERAT: Vad är Skillnaden Mellan 127.0.0.1 och 0.0.0.0?

Visa Routing-Tabellen

-R (rutt) alternativet visas kärnan routing-tabellen.

sudo netstat -r

Här är produktionen i en snygg tabell:

Kärnan IP-routningstabellen
Destination Gateway Genmask Flaggor MSS Fönster irtt Iface
standard Kraft.router 0.0.0.0 UG 0 0 0 enp0s3
länk-lokal 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
192.168.4.0 255.255.255.0 0.0.0.0 U 0 0 0 enp0s3

Och här är vad de kolumner menar:

  • Destination: Den destination nätverk eller destination värd-enheten (om destinationen är inte ett nätverk).
  • Gateway: Den gateway-adress. En asterisk “*” visas här om en gateway-adress är inte inställd.
  • Genmask: nätmasken för rutten.
  • Flaggor: Se flaggorna tabellen nedan.
  • MSS: Standard Maximum Segment Size för TCP-anslutningar över denna rutt—detta är den största mängden data som kan tas emot i en TCP-segment.
  • Fönster: standard storlek för TCP-anslutningar över denna väg, som anger antalet paket som kan överföras och tas emot före den mottagande bufferten är full. I praktiken är de paket som konsumeras av det mottagande programmet.
  • irtt: Den Första rundtur Tid. Detta värde är som refereras av kärnan för att göra dynamiska justeringar till TCP-parametrar för fjärranslutningar som är långsamma på att svara.
  • Iface: nätverket för gränssnittet från vilket paket som skickas över denna väg överförs.

Flaggorna värde kan vara något av följande:

  • U: vägen är upp.
  • H: Målet är en värd och den enda destination möjligt på denna rutt.
  • G: Använder en gateway.
  • R: Återinföra vägen för dynamiska ruttningsändamål.
  • D: Dynamiskt installeras av routing-demonen.
  • M: Ändrad av routing-daemon när det fått en Internet Control Message Protocol (ICMP) paket.
  • A: Installerad av addrconf, den automatiska DNS-och DHCP-config-fil-generator.
  • C: Cache-post.
  • !: Avvisa rutt.

Att hitta den Port som Används av en Process

Om vi rör produktionen av netstat genom grep, kan vi söka efter en process med namn och identifiera den port som den är att använda. Vi använda växeln-a (all), -n (numeriskt) och p (program) som tidigare använts, och sök efter “sshd.”

sudo netstat -anp | grep “sshd”

grep hittar målet sträng, och vi ser att sshd-demon är med port 22.

Vi kan naturligtvis också göra detta i omvänd. Om vi söker på “:22”, vi kan ta reda på vilken process som använder den porten, om någon.

sudo netstat -anp | grep “:22”

Den här gången grep finner “:22” target sträng, och vi ser att processen och använda denna port är sshd-demon, process-ID 751.

Lista Nätverksgränssnitt

-Jag (gränssnitt) alternativ kommer att visa en tabell över de nätverksgränssnitt som netstat kan upptäcka.

sudo netstat -jag

Här är produktionen på ett mer läsbart sätt:

Kärnan Gränssnitt tabell
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

Detta är vad kolumner menar:

  • Iface: namnet på gränssnittet. Den enp0s3 gränssnittet är nätverksgränssnittet till omvärlden, och lo-gränssnittet är ett loopback-gränssnitt. Loopback-gränssnitt gör det möjligt processer för att kommunicera inom dator-nätverk med hjälp av protokoll, även om datorn inte är ansluten till ett nätverk.
  • MTU: Maximum Transmission Unit (MTU). Detta är den största “paket” som kan skickas. Det består av ett sidhuvud som innehåller routing och protokoll flaggor och andra metadata, plus de data som faktiskt transporteras.
  • RX-OK: antalet paket som mottagits, med inga fel.
  • RX-ERR: antalet paket som mottagits med fel. Vi vill att detta ska vara så låg som möjligt.
  • RX-DRP: antalet paket som sjunkit (dvs, lost). Vi vill också att detta ska vara så låg som möjligt.
  • RX-OVR: Antal paket förloras på grund av svämmar över när du tar emot. Detta betyder vanligtvis att ta emot buffert var full och inte kunde ta emot mer data, men mer data tas emot, och fick kasseras. Den lägre siffran är, desto bättre, och noll är perfekt.
  • TX-OK: antalet paket som överförs, utan fel.
  • RX-ERR: antalet paket som överförs, med fel. Vi vill att detta ska vara noll.
  • RX-DRP: antalet paket som sjönk när den sänder. Helst bör detta vara noll.
  • RX-OVR: antalet paket förloras på grund av svämmar över när den sänder. Detta innebär vanligtvis att skicka buffert var full och inte kunde ta emot mer data, men mer data som var redo att sändas och fick kasseras.
  • Flg: Flaggor. Se flaggorna tabellen nedan.

Flaggorna representerar följande:

  • B: En broadcast-adressen är i bruk.
  • L: Detta gränssnitt är ett loopback-enheten.
  • M: Alla paket tas emot (dvs, i promiscuous mode). Ingenting är filtrerade eller kasseras.
  • O: Address Resolution Protocol (ARP) är avstängd för detta gränssnitt.
  • S: Detta är en Punkt-till-Punkt (PPP) – anslutning.
  • R: gränssnittet är körklart.
  • U: gränssnittet är upp.

Listan Multicast-Grupp Medlemskap

Enkelt uttryckt, en multicast-överföring gör att ett paket ska skickas bara en gång, oavsett antalet mottagare. För tjänster såsom video, till exempel, detta ökar effektiviteten från avsändarens synpunkt av en enorm mängd.

-G (grupper) alternativet gör netstat lista multicast-gruppen medlemskap uttag på varje gränssnitt.

sudo netstat -g

Kolumnerna är ganska enkel:

  • Gränssnitt: namnet på det gränssnitt som uttaget sänder.
  • RefCnt: referens räknas, vilket är det antal processer som är ansluten till uttaget.
  • Grupp: namn eller identifierare för multicast-gruppen.

New Kids on The Block

Rutten, ip, ifconfig, och ss-kommandon kan ge en hel del av vad netstat kan visa dig. De är alla bra kommandon och värt att kolla in.

Vi har fokuserat på netstat eftersom det är allmänt tillgänglig, oavsett vilken Unix-liknande operativsystem som du arbetar på, även obskyra sådana.

LÄS NÄSTA

  • “Hur Stream Daytona 500 Utan Kabel
  • “Vad Gör “HMU” Betyder, och Hur Använder Man Det?
  • “Hur man Aktiverar ett Enda Klick för att Öppna Ikoner på Windows-10
  • “Hur du Felsöker Vanliga Problem med Apple AirPods
  • “Hur man Lägger till “Flytta till” eller “Kopia till” Windows 10 Sammanhangsberoende Meny