- Dave McKay
@TheGurkha
- 17 februari 2020, 8:00am EDT
kommandot Linuxnetstat
ger dig en skattkista av information om dina nätverksanslutningar, de portar som används och de processer som använder dem. Lär dig hur du använder den.
portar, processer och protokoll
nätverksuttag kan antingen anslutas eller vänta på en anslutning., Anslutningarna använder nätverksprotokoll som Transport Control Protocol (TCP) eller User Datagram Protocol UDP. De använder Internetprotokolladresser och nätverksportar för att upprätta anslutningar.
ordet uttag kan frammana bilder av en fysisk anslutningspunkt för en ledning eller kabel, men i detta sammanhang, ett uttag är en programvara konstruktion som används för att hantera ena änden av en nätverks dataanslutning.,
uttag har två huvudtillstånd: de är antingen anslutna och underlättar en pågående nätverkskommunikation, eller de väntar på en inkommande anslutning för att ansluta till dem. Det finns andra stater, såsom staten när ett uttag är halvvägs genom att upprätta en anslutning på en fjärranordning, men att sätta transienta tillstånd åt sidan, kan du tänka på ett uttag som antingen är ansluten eller väntar (som ofta kallas att lyssna).
lyssningsuttaget kallas servern, och uttaget som begär anslutning till lyssningsuttaget kallas en klient., Dessa namn har inget att göra med hårdvara eller datorroller. De definierar helt enkelt rollen för varje uttag i varje ände av anslutningen.
kommandotnetstat
låter dig upptäcka vilka uttag som är anslutna och vilka uttag som lyssnar. Det betyder att det berättar vilka portar som används och vilka processer som använder dem. Det kan visa dig routingtabeller och statistik om dina nätverksgränssnitt och multicast-anslutningar.
funktionaliteten hosnetstat
har replikerats över tiden i olika Linux-verktyg, såsom ip och ss., Det är fortfarande värt att veta denna farfar av alla nätverksanalyskommandon, eftersom den är tillgänglig på alla Linux-och Unix-liknande operativsystem, och även på Windows och Mac.
Så här använder du det, komplett med exempelkommandon.
lista alla uttag
-a
(alla) alternativet görnetstat
visa alla anslutna och väntande uttag. Detta kommando kan producera en lång lista, så vi rör den till less
.,
netstat -a | less
listan innehåller TCP (IP), TCP6 (IPv6) och UDP-uttag.
omslaget i terminalfönstret gör det lite svårt att se vad som händer. Här är ett par avsnitt från den listan:
avsnittet ”aktivt Internet” listar de anslutna externa anslutningarna och lokala uttag som lyssnar på begäran om fjärranslutning. Det betyder att det listar de nätverksanslutningar som är (eller kommer att vara) etablerade till externa enheter.,
avsnittet ”UNIX domain” listar de anslutna och lyssnande interna anslutningarna. Med andra ord listar den de anslutningar som har etablerats i din dator mellan olika applikationer, processer och delar av operativsystemet.
kolumnerna ”Active Internet” är:
- Proto: protokollet som används av detta uttag (till exempel TCP eller UDP).
- Recv-Q: mottagningskön. Det här är inkommande byte som har tagits emot och buffras och väntar på den lokala processen som använder den här anslutningen för att läsa och konsumera dem.,
- skicka-Q: skicka kö. Detta visar de byte som är redo att skickas från sändningskön.
- Lokal adress: adressuppgifterna för den lokala änden av anslutningen. Standardvärdet är för att
netstat
ska visa det lokala värdnamnet för adressen och namnet på tjänsten för porten. - utländsk adress: adressen och portnumret för den fjärranslutna änden av anslutningen.
- tillstånd: tillståndet för det lokala uttaget. För UDP-uttag är detta vanligtvis tomt. Se tabellen nedan.,
för TCP-anslutningar kan statsvärdet vara ett av följande:
- lyssna: endast serversidan. Uttaget väntar på en anslutningsförfrågan.
- SYN-SENT: endast klientsidan. Detta uttag har gjort en anslutningsförfrågan och väntar på att se om det kommer att accepteras.
- SYN-RECEIVED: endast serversidan. Detta uttag väntar på en anslutning bekräftelse efter att ha accepterat en anslutning begäran.
- etablerad: Server och klienter. En fungerande anslutning har upprättats mellan servern och klienten, så att data kan överföras mellan de två.,
- FIN-VÄNTA-1: Server och klienter. Detta uttag väntar på en begäran om anslutningsavslutning från fjärruttaget, eller för en bekräftelse på en begäran om anslutningsavslutning som tidigare skickades från detta uttag.
- FIN-VÄNTA-2: Server och klienter. Detta uttag väntar på en begäran om anslutningsavslutning från fjärruttaget.
- stäng-vänta: Server och klient. Detta uttag väntar på en begäran om anslutningsavslutning från den lokala användaren.
- stängning: Server och klienter., Detta uttag väntar på en bekräftelse på anslutningsavslutning från fjärruttaget.
- LAST-ACK: Server och klient. Detta uttag väntar på en bekräftelse på begäran om anslutningsavslutning som skickas till fjärruttaget.
- TIME-WAIT: Server och klienter. Detta uttag skickade en bekräftelse till fjärrkontakten för att meddela att det fick fjärrkontaktens uppsägningsbegäran. Det väntar nu på att se till att bekräftelsen mottogs.
- stängd: det finns ingen anslutning, så uttaget har avslutats.,
kolumnerna ”Unix domain” är:
- Proto: protokollet som används av detta uttag. Det blir ”unix.”
- RefCnt: referensräkning. Antalet bifogade processer anslutna till detta uttag.
- flaggor: Detta är vanligtvis inställt på
ACC
, som representerarSO_ACCEPTON
, vilket betyder att uttaget väntar på en anslutningsförfrågan.SO_WAITDATA
, som visas somW
, betyder att det finns data som väntar på att läsas.,SO_NOSPACE
, som visas somN
, betyder att det inte finns något utrymme att skriva data till uttaget (dvs skicka bufferten är full). - Typ: uttagstypen. Se typtabellen nedan.
- tillstånd: tillståndet för uttaget. Se tabellen nedan.
- i-Node: filsystemet inod associerad med detta uttag.
- sökväg: filsystemet sökvägen till uttaget.
UNIX domain socket type kan vara en av följande:
- DGRAM: uttaget används i datagram-läge, med hjälp av meddelanden med fast längd., Datagram är varken garanterat att vara tillförlitliga, sekvenserade eller oduplicerade.
- ström: detta uttag är ett strömuttag. Detta är den vanliga ”normala” typen av uttagsanslutning. Dessa uttag är utformade för att ge tillförlitlig sekvenserad (i ordning) leverans av paket.
- RAW: detta uttag används som ett raw-uttag. Raw-uttag fungerar på nätverksnivå för OSI-modellen och refererar inte till TCP-och UDP-rubriker från transportnivån.
- RDM: detta uttag ligger i ena änden av en tillförlitligt levererad meddelandeanslutning.,
- SEQPACKET: detta uttag fungerar som ett sekventiellt paketuttag, vilket är ett annat sätt att tillhandahålla tillförlitlig, sekvenserad och oduplicerad paketleverans.
- PAKET: Raw-interface tillgång uttaget. Paketuttag används för att ta emot eller skicka raw-paket på enhetsdrivrutinen (dvs. Data link layer) – nivån på OSI-modellen.
tillståndet för UNIX domain socket kan vara något av följande:
- gratis: detta uttag är oallokerat.
- lyssna: det här uttaget lyssnar på inkommande anslutningsförfrågningar.,
- anslutning: detta uttag är i färd med att ansluta.
- ansluten: en anslutning har upprättats, och uttaget kan ta emot och överföra data.
- frånkoppling: anslutningen håller på att avslutas.
Wow, det är mycket information! Många av alternativennetstat
förfina resultaten på ett eller annat sätt, men de ändrar inte innehållet för mycket. Låt oss ta en titt.,
notering uttag efter typ
kommandotnetstat -a
kan ge mer information än du behöver se. Om du bara vill eller behöver se TCP-uttagen kan du använda alternativet -t
(TCP) för att begränsa displayen till att endast visa TCP-uttag.
netstat -at | less
displayen ut minskas kraftigt. De få socklarna som listas är alla TCP-uttag.,
alternativen-u
(UDP) och-x
(UNIX) beter sig på ett liknande sätt, vilket begränsar resultaten till den typ av uttag som anges på kommandoraden. Här är alternativet-u (UDP) som används:
netstat -au | less
endast UDP-uttag listas.
lista uttag efter tillstånd
för att se uttag som finns i lyssnings-eller vänteläge, använd alternativet-l
(lyssnande).
netstat -l | less
uttagen som listas är de som är i lyssningstillstånd.,
detta kan kombineras med-t (TCP, -u (UDP) och-x (UNIX) alternativ för att ytterligare hem i på uttag av intresse. Låt oss leta efter att lyssna på TCP-uttag:
netstat -lt | less
nu ser vi bara TCP-lyssningsuttag.
nätverksstatistik efter protokoll
netstat -st | less
en samling statistik för TCP-anslutningarna visas i less
.
visar processnamn och Pid
det kan vara användbart att se process-ID (PID) i processen med ett uttag, tillsammans med namnet på den processen., Alternativet-p
(program) gör just det. Låt oss se vad PIDs och processnamn är för processerna med ett TCP-uttag som är i lyssningstillstånd. Vi använder sudo
för att se till att vi får all information som är tillgänglig, inklusive all information som normalt skulle kräva root-behörigheter.
sudo netstat -p -at
här är den utmatningen i en formaterad TABELL:
Vi har en extra kolumn som heter ”PID / programnamn.”Den här kolumnen visar PID och namnet på processen med var och en av uttagen.,
lista numeriska adresser
ett annat steg vi kan ta för att ta bort viss tvetydighet är att visa lokala och fjärradresser som IP-adresser i stället för deras lösta domän och värdnamn. Om vi använder alternativet -n
(numerisk) visas IPv4-adresserna i prickat decimalformat:
sudo netstat -an | less
IP-adresserna visas som numeriska värden. Portnumren visas också, åtskilda av ett kolon ” :
” från IP-adressen.
en IP-adress på 127.0.0.,1 visar att uttaget är bundet till den lokala datorns loopback-adress. Du kan tänka dig en IP-adress på 0.0.0.0 som betyder ”standardrutt” för lokala adresser och” någon IP-adress ” för utländska adresser. IPv6-adresser som visas som ”::
” är också alla nolladresser.
de portar som listas kan enkelt kontrolleras för att se vad deras vanliga syfte är:
- 22: Det här är lyssningsporten för Secure Shell (SSH).
- 25: Detta Simple Mail Transfer Protocol (SMTP) lyssnande port.
- 53: det här är lyssningsporten för Domain Name System (DNS).,
- 68: det här är lyssningsporten för Dynamic Host Configuration Protocol (DHCP).
- 631: detta är den gemensamma Unix Printing System (CUPS) lyssningsport.
relaterat: Vad är skillnaden mellan 127.0.0.1 och 0.0.0.0?
Visa Routningstabellen
alternativet-r
(route) visar kärnruttningstabellen.,
sudo netstat -r
här är den utmatningen i ett snyggt bord:
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
och här är vad kolumnerna betyder:
- Destination: destinationsnätverket eller destinationsvärdenheten (om destinationen inte är ett nätverk).
- Gateway: gateway-adressen. En asterisk”
*
” visas här om en gateway-adress inte är inställd. - Genmask: nätmasken för rutten.
- flaggor: se tabellen flaggor nedan.,
- MSS: standard maximal Segmentstorlek för TCP—anslutningar över denna rutt-det här är den största mängden data som kan tas emot i ett TCP-segment.
- fönster: standardfönsterstorleken för TCP-anslutningar över denna rutt, vilket anger antalet paket som kan överföras och tas emot innan mottagningsbufferten är full. I praktiken förbrukas paketen av mottagningsansökan.
- irtt: den första tur och retur tid. Detta värde refereras av kärnan för att göra dynamiska justeringar av TCP-parametrar för fjärranslutningar som är långsamma att svara på.,
- Iface: nätverksgränssnittet från vilket paketen som skickas över denna rutt överförs.
flaggor värdet kan vara en av:
- u: rutten är upp.
- H: målet är en värd och den enda destinationen som är möjlig på denna rutt.
- G: använd porten.
- R: Återställ rutten för dynamisk routing.
- d: dynamiskt installerat av routingdemonen.
- m: modifierad av routingdemonen när den mottog ett Internet Control Message Protocol (ICMP) – paket.,
- a: installerad av
addrconf
, den automatiserade DNS-och DHCP-konfigurationsfilgeneratorn. - c: cache-post.
- !: Avvisa rutt.
hitta porten som används av en Process
om vi rör utsignalen frånnetstat
genomgrep
kan vi söka efter en process med namn och identifiera porten den använder. Vi använder -a
(alla), -n
(numerisk) och -p
(program) alternativ som används tidigare, och söka efter ”sshd.,”
sudo netstat -anp | grep "sshd"
grep
hittar målsträngen och vi ser att sshd
– demonen använder port 22.
naturligtvis kan vi också göra detta i omvänd ordning. Om vi söker efter”: 22 ” kan vi ta reda på vilken process som använder den porten, om någon.
sudo netstat -anp | grep ":22"
den här gången hittargrep
målsträngen ”:22”, och vi ser att processen med den här porten ärsshd
daemon, process ID 751.,
lista Nätverksgränssnitten
alternativet-i
(gränssnitt) visar en tabell över nätverksgränssnitten somnetstat
kan upptäcka.
sudo netstat -i
här är utmatningen på ett mer läsbart sätt:
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
det här är vad kolumnerna betyder:
- Iface: gränssnittets namn. Gränssnittet
enp0s3
är nätverksgränssnittet till omvärlden och gränssnittetlo
är loopback-gränssnittet., Loopback-gränssnittet gör det möjligt för processer att interkommunicera i datorn med hjälp av nätverksprotokoll, även om datorn inte är ansluten till ett nätverk. - mtu: den maximala överföringsenheten (MTU). Detta är det största ”paketet” som kan skickas. Den består av en rubrik som innehåller routing och protokoll flaggor, och andra metadata, plus de data som faktiskt transporteras.
- RX-OK: antalet mottagna paket, utan fel.
- RX-ERR: antalet mottagna paket, med fel. Vi vill att detta ska vara så lågt som möjligt.,
- RX-DRP: antalet paket sjönk (dvs förlorade). Vi vill också att detta ska vara så lågt som möjligt.
- RX-OVR: antal paket som förlorats på grund av överflöden vid mottagning. Detta innebär vanligtvis att den mottagande bufferten var full och kunde inte acceptera några fler data, men mer data mottogs och måste kasseras. Ju lägre denna siffra desto bättre och noll är perfekt.
- TX-OK: antalet överförda paket, utan fel.
- RX-ERR: antalet paket som överförs, med fel. Vi vill att detta ska vara noll.,
- RX-DRP: antalet paket sjönk vid sändning. Helst bör detta vara noll.
- RX-OVR: antalet paket som förlorats på grund av överflöden vid överföring. Detta innebär oftast skicka bufferten var full och kunde inte acceptera några fler data, men mer data var redo att överföras och måste kasseras.
- Flg: flaggor. Se tabellen flaggor nedan.
flaggorna representerar följande:
lista Multicast gruppmedlemskap
enkelt uttryckt, en multicast-överföring gör att ett paket kan skickas endast en gång, oavsett antalet mottagare., För tjänster som videostreaming ökar detta till exempel effektiviteten ur avsändarens synvinkel med en enorm mängd.
-g
(grupper) alternativet görnetstat
lista multicast gruppmedlemskap av uttag på varje gränssnitt.
sudo netstat -g
kolumnerna är ganska enkla:
- gränssnitt: namnet på gränssnittet över vilket uttaget sänder.
- RefCnt: referensantalet, vilket är antalet processer som är kopplade till uttaget.,
- grupp: namn eller identifierare för multicast-gruppen.
de nya barnen på Blocket
kommandona route, ip, ifconfig och ss kan ge mycket av vadnetstat
kan visa dig. De är alla bra kommandon och värt att kolla in.
Vi har fokuserat på netstat
eftersom det är universellt tillgängligt, oavsett vilket Unix-liknande operativsystem du arbetar med, även de dunkla.,
Dave McKay använde först datorer när stansade papperstejp var på modet, och han har programmerat sedan dess. Efter över 30 år i IT-branschen är han nu en heltidsjournalist inom teknik. Under sin karriär har han arbetat som frilansprogrammerare, chef för ett internationellt mjukvaruutvecklingsteam, en IT-tjänst projektledare och senast som dataskyddsansvarig. Dave är en Linux evangelist och öppen källkod förespråkare.Läs hela Bio ”