Sockstat je všestranný nástroj příkazového řádku používaný pro zobrazení síťových a systémových otevřených soketů ve FreeBSD. Příkaz sockstat je ve FreeBSD nainstalován ve výchozím nastavení a běžně se používá pro zobrazení názvu procesů, které otevřely určitý síťový port v systému FreeBSD.
Nicméně sockstat může také vypsat otevřené sokety na základě verze protokolu (obě verze IP), stavu připojení a portů, na kterých se démon nebo program váže a na kterých naslouchá.
Přečtěte si také :20 užitečných příkladů příkazů „netstat“ ke kontrole síťových připojení
Může také zobrazit meziprocesové komunikační sokety, typicky známé jako unixové doménové sokety nebo IPC. Příkaz Sockstat v kombinaci s filtrem grep nebo pomocí nástroje awk se ukazuje jako mocný nástroj pro zásobník lokálních sítí.
Může zmenšit výsledky pro otevřené připojení na základě uživatele, který vlastní soket, deskriptoru souboru síťového soketu nebo PID procesu, který soket otevřel.
V této příručce uvedeme některé běžné příklady použití, ale také velmi výkonné, síťového nástroje příkazového řádku sockstat ve FreeBSD.
Požadavky
- Instalační příručka FreeBSD 11.1
1. Seznam všech otevřených portů ve FreeBSD
Příkaz sockstat, který se jednoduše provede bez jakýchkoli voleb nebo přepínačů, zobrazí všechny otevřené zásuvky v systému FreeBSD, jak je znázorněno na obrázku níže.
# sockstat
Hodnoty zobrazené na výstupu sockstatu jsou popsány jako:
- UŽIVATEL :Vlastník (uživatelský účet) zásuvky.
- PŘÍKAZ :Příkaz, který otevřel soket.
- PID :ID procesu příkazu, který vlastní soket.
- FD :Číslo deskriptoru souboru soketu.
- PROTO :Transportní protokol (obvykle TCP/UDP) spojený s otevřeným soketem nebo typem soketu v případě soketů unixové domény (datagram, stream nebo seqpac) pro sokety UNIX.
- MÍSTNÍ ADRESA :Představuje místní IP adresu pro sokety založené na IP. V případě Unixových soketů představuje název koncového bodu připojený k soketu.
“??”
zápis znamená, že koncový bod soketu nemohl být rozpoznán nebo vytvořen. - ZAHRANIČNÍ ADRESA :Vzdálená adresa IP, ke které je zásuvka připojena.
2. Seznam naslouchaných nebo otevřených portů ve FreeBSD
Spouští se pomocí -l
příznak, příkaz sockstat zobrazí všechny naslouchající sokety otevřené v síťovém zásobníku a všechny otevřené unixové doménové sokety nebo pojmenované kanály zapojené do nějakého druhu místního zpracování dat v systému.
# sockstat -l
3. Seznam otevřených portů IPv4 ve FreeBSD
Zobrazení všech otevřených soketů pro IPv4 pouze protokol, zadejte příkaz s -4
flag, jak je navrženo v níže uvedeném příkladu.
# sockstat -4
4. Seznam otevřených portů IPv6 ve FreeBSD
Podobně jako u verze IPv4 můžete také zobrazit otevřené síťové zásuvky pro IPv6 pouze zadáním příkazu, jak je uvedeno níže.
# sockstat -6
5. Seznam otevřených portů TCP nebo UDP ve FreeBSD
Chcete-li zobrazit síťové sokety pouze na základě zadaného síťového protokolu, jako je TCP nebo UDP , použijte -P
příznak následovaný názvem argumentu protokolu.
Názvy protokolů lze zjistit kontrolou obsahu /etc/protocols soubor. V současné době není protokol ICMP nástrojem sockstat podporován.
Zobrazit pouze sokety TCP
# sockstat -P tcp
Zobrazit pouze sokety UDP
# sockstat -P udp
Zřetězení obou protokolů.
# sockstat –P tcp,udp
6. Vypsat specifická čísla portů TCP a UDP
Pokud chcete zobrazit všechny otevřené sokety TCP nebo UDP IP na základě čísla místního nebo vzdáleného portu, použijte níže uvedené příznaky a syntaxi příkazů, jak je znázorněno na níže uvedeném snímku obrazovky.
# sockstat -P tcp -p 443 [Show TCP HTTPS Port] # sockstat -P udp -p 53 [Show UDP DNS Port] # sockstat -P tcp -p 443,53,80,21 [Show Both TCP and UDP]
7. Seznam otevřených a připojených portů ve FreeBSD
Chcete-li zobrazit všechny otevřené a připojené zásuvky, použijte -c
vlajka. Jak je ukázáno v níže uvedených ukázkách, můžete uvést všechny HTTPS připojené sokety nebo všechny sokety připojené TCP vydáním příkazů.
# sockstat -P tcp -p 443 -c # sockstat -P tcp -c
8. Seznam portů pro poslech sítě ve FreeBSD
Chcete-li vypsat všechny otevřené TCP sokety ve stavu naslouchání, přidejte -l
a -s
příznaky, jak ukazuje níže uvedený příklad. Protože jde o protokol bez připojení, UDP neuchovává žádné informace o stavu připojení.
Otevřené sokety UDP nelze zobrazit pomocí jejich stavu, protože protokol udp používá datagramy k odesílání/přijímání dat a nemá žádný vestavěný mechanismus pro určení stavu připojení.
# sockstat -46 -l -s
9. Vypsat Unix Sockets a Named Pipes
Unixové doménové sokety, stejně jako další formy místní meziprocesové komunikace, jako jsou pojmenované kanály, lze zobrazit příkazem sockstat pomocí -u
příznak, jak je znázorněno na obrázku níže.
# sockstat -u
10. Seznam portů otevřených aplikací ve FreeBSD
Výstup příkazu Sockstat lze filtrovat pomocí nástroje grep, aby se zobrazil seznam portů otevřených konkrétní aplikací nebo příkazem.
Předpokládejme, že chcete vypsat všechny zásuvky spojené s Nginx webový server, můžete k provedení úkolu zadat následující příkaz.
# sockstat -46 | grep nginx
Chcete-li zobrazit pouze připojené sokety spojené s webovým serverem Nginx, zadejte následující příkaz.
# sockstat -46 -c| grep nginx
11. Seznam protokolů připojených k HTTPS
Můžete vypsat všechny připojené zásuvky spojené s HTTPS protokol vedle stavu každého připojení spuštěním níže uvedeného příkazu.
# sockstat -46 -s -P TCP -p 443 -c
12. Vypsat vzdálené zásuvky HTTP
Chcete-li vypsat všechny vzdálené sokety přidružené k protokolu HTTP, můžete spustit jednu z následujících kombinací příkazů.
# sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr # sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr
13. Najít nejvyšší požadavky HTTP podle IP adres
V případě, že chcete zjistit, kolik připojení HTTP vyžaduje každá vzdálená IP adresa, zadejte níže uvedený příkaz. Tento příkaz může být velmi užitečný v případě, že chcete zjistit, zda je váš webový server pod nějakým typem útoku DDOS. V případě podezření byste měli prozkoumat IP adresy s nejvyšší četností žádostí.
# sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr
14. Seznam otevřených soketů DNS
Pokud jste ve své provozovně nakonfigurovali server DNS pro ukládání do mezipaměti a předávání DNS pro obsluhu interních klientů prostřednictvím transportního protokolu TCP a chcete zobrazit seznam všech soketů
otevřených překladačem spolu se stavem každého připojení soketu, proveďte následující příkaz.
# sockstat -46 -P tcp –p 53 -s
15. Dotaz TCP DNS na místní doméně
Pokud v síti není žádný provoz DNS, můžete ručně spustit dotaz DNS na soket TCP z konzoly místního počítače spuštěním následujícího příkazu dig. Poté zadejte výše uvedený příkaz a vypište všechny sokety resolveru.
# dig +tcp www.domain.com @127.0.0.1
To je vše! Spolu s nástroji příkazového řádku netstat a lsof je příkazový řádek sockstat mocným nástrojem používaným pro získávání informací o síti a odstraňování problémů s mnoha aspekty síťového zásobníku FreeBSD a procesů a služeb souvisejících se sítí.
Protějšek příkazu FreeBSD sockstat v Linuxu je reprezentován netstat nebo nově ss příkaz. Věřte tomu nebo ne, na základě nástroje sockstat můžete najít podobnou aplikaci vyvinutou pro OS Android s názvem SockStat – Simple Netstat GUI.