Jak korzystać z polecenia ss w systemie Linux
Opublikowany: 2022-01-29 Polecenie ss
jest nowoczesnym zamiennikiem klasycznego netstat
. Możesz go użyć w Linuksie, aby uzyskać statystyki dotyczące połączeń sieciowych. Oto jak pracować z tym poręcznym narzędziem.
Polecenie ss kontra netstat
Zamiennik przestarzałego polecenia netstat
, ss
, zapewnia szczegółowe informacje o tym, jak komputer komunikuje się z innymi komputerami, sieciami i usługami.
ss
wyświetla statystyki dla protokołu kontroli transmisji (TCP), protokołu datagramów użytkownika (UDP), Unix (międzyprocesowy) i gniazd surowych. Gniazda surowe działają na poziomie sieciowego OSI, co oznacza, że nagłówki TCP i UDP muszą być obsługiwane przez oprogramowanie aplikacji, a nie przez warstwę transportową. Komunikaty protokołu ICMP (Internet Control Message Protocol) i narzędzie ping używają gniazd surowych.
Korzystanie z ss
Nie musisz instalować ss
, ponieważ jest już częścią aktualnej dystrybucji Linuksa. Jego dane wyjściowe mogą być jednak bardzo długie — otrzymaliśmy wyniki zawierające ponad 630 wierszy. Wyniki są również bardzo szerokie.
Z tego powodu dołączyliśmy tekstowe reprezentacje uzyskanych wyników, ponieważ nie zmieściłyby się one na zrzucie ekranu. Przycięliśmy je, aby były łatwiejsze w zarządzaniu.
Wyświetlanie listy połączeń sieciowych
Użycie ss
bez opcji wiersza polecenia wyświetla listę gniazd, które nie nasłuchują. Oznacza to, że zawiera listę gniazd, które nie są w stanie nasłuchiwania.
Aby to zobaczyć, wpisz następujące polecenie:
SS
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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
Kolumny są następujące:
- Netid : typ gniazda. W naszym przykładzie mamy „u_str”, strumień Unix, „udp” i „icmp6”, gniazdo ICMP IP w wersji 6. Więcej opisów typów gniazd Linuksa można znaleźć na stronach podręcznika Linuksa.
- Stan : stan, w którym znajduje się gniazdo.
- Recv-Q : Liczba odebranych pakietów.
- Send-Q : Liczba wysłanych pakietów.
- Local Address:Port : Lokalny adres i port (lub równoważne wartości dla gniazd Unix).
- Peer Address:Port : Zdalny adres i port (lub równoważne wartości dla gniazd Unix).
W przypadku gniazd UDP kolumna „Stan” jest zwykle pusta. W przypadku gniazd TCP może to być jedno z następujących:
- SŁUCHAJ: tylko po stronie serwera. Gniazdo czeka na żądanie połączenia.
- SYN-SENT: tylko po stronie klienta. To gniazdo wysłało żądanie połączenia i czeka na akceptację.
- SYN-RECEIVED: Tylko po stronie serwera. To gniazdo czeka na potwierdzenie połączenia po zaakceptowaniu żądania połączenia.
- USTANOWIONO: Serwer i klienci. Działające połączenie zostało ustanowione między serwerem a klientem, umożliwiając przesyłanie danych między nimi.
- FIN-WAIT-1: Serwer i klienci. To gniazdo oczekuje na żądanie zakończenia połączenia ze zdalnego gniazda lub potwierdzenie żądania zakończenia połączenia, które zostało wcześniej wysłane z tego gniazda.
- FIN-WAIT-2: Serwer i klienci. To gniazdo oczekuje na żądanie zakończenia połączenia ze zdalnego gniazda.
- ZAMKNIJ-CZEKAJ: Serwer i klient. To gniazdo oczekuje na żądanie zakończenia połączenia od użytkownika lokalnego.
- ZAMKNIĘCIE: Serwer i klienci. To gniazdo oczekuje na potwierdzenie żądania zakończenia połączenia ze zdalnego gniazda.
- LAST-ACK: serwer i klient. To gniazdo oczekuje na potwierdzenie żądania zakończenia połączenia wysłanego do gniazda zdalnego.
- TIME-WAIT: Serwer i klienci. To gniazdo wysłało potwierdzenie do gniazda zdalnego, aby poinformować je, że odebrało żądanie zakończenia zdalnego gniazda. Teraz czeka, aby upewnić się, że potwierdzenie zostało odebrane.
- ZAMKNIĘTE: Brak połączenia, więc gniazdo zostało zakończone.
Lista gniazd odsłuchowych
Aby zobaczyć gniazda nasłuchowe, dodamy opcję -l
(nasłuchiwanie), tak jak poniżej:
ss-l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str SŁUCHAJ 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str SŁUCHAJ 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /uruchom/użytkownik/1000/systemd/notify 32303 * 0
Wszystkie te gniazda są niepodłączone i nasłuchują. „rtnl” oznacza routing netlink, który jest używany do przesyłania informacji między procesami jądra i przestrzeni użytkownika.
Lista wszystkich gniazd
Aby wyświetlić wszystkie gniazda, możesz użyć opcji -a
(wszystkie):
ss-a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str SŁUCHAJ 0 100 public/showq 23222 * 0 u_str SŁUCHAJ 0 100 prywatny/błąd 23225 * 0 u_str SŁUCHAJ 0 100 prywatne/ponów próbę 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:*
Wyjście zawiera wszystkie gniazda, niezależnie od stanu.
Wyświetlanie listy gniazd TCP
Możesz również zastosować filtr, aby wyświetlane były tylko pasujące gniazda. Użyjemy opcji -t
(TCP), więc zostaną wyświetlone tylko gniazda TCP:
ss -a -t
Wyświetlanie listy gniazd UDP
Opcja -u
(UDP) wykonuje ten sam typ akcji filtrującej. Tym razem zobaczymy tylko gniazda UDP:
ss -a -u
Stan Recv-Q Send-Q Adres lokalny:Adres równorzędny portu:Proces portu 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:domena 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Wyświetlanie listy gniazd Unix
Aby zobaczyć tylko gniazda Unix, możesz dołączyć opcję -x
(Unix), jak pokazano poniżej:
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 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
Wyświetlanie listy gniazd surowych
Filtrem dla gniazd surowych jest opcja -w
(surowe):
ss -a -w
Wyświetlanie listy gniazd IP w wersji 4
Gniazda korzystające z protokołu TCP/IP w wersji 4 można wyświetlić za pomocą opcji -4
(IPV4):
ss -a -4
Wyświetlanie listy gniazd IP w wersji 6
Możesz włączyć pasujący filtr IP w wersji 6 za pomocą opcji -6
(IPV6), na przykład:
ss -a -6
Wyświetlanie listy gniazd według stanu
Możesz wyświetlić listę gniazd według stanu, w którym się znajdują, za pomocą opcji state
. Działa to ze stanami ustalonymi, nasłuchiwania lub zamkniętymi. Użyjemy również opcji resolve ( -r
), która próbuje rozwiązać adresy sieciowe z nazwami, a porty z protokołami.
Następujące polecenie wyszuka ustanowione połączenia TCP, a ss
spróbuje rozwiązać nazwy:
ss -t -r stan ustalony
Wymienione są cztery połączenia, które są w stanie ustanowionym. Nazwa hosta, ubuntu20-04, została rozwiązana i zamiast 22 dla połączenia SSH w drugiej linii wyświetlany jest „ssh”.
Możemy to powtórzyć, aby wyszukać gniazda w stanie nasłuchiwania:
ss -t -r stan nasłuchiwania
Recv-Q Send-Q Adres lokalny:Adres równorzędny portu:Proces portu 0 128 Lokalny Gospodarz:5939 0.0.0.0:* 0 4096 localhost%lo:domena 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 host lokalny:ipp 0.0.0.0:* 0 100 localhost:smtp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:smtp [::]:*
Wyświetlanie listy gniazd według protokołu
Możesz wyświetlić listę gniazd używających konkretnego protokołu za pomocą opcji dport
i sport
, które reprezentują odpowiednio port docelowy i port źródłowy.
Wpisujemy następujące polecenie, aby wyświetlić gniazda korzystające z protokołu HTTPS w established
połączeniu (zwróć uwagę na spację po nawiasie otwierającym i przed nawiasem zamykającym):
ss -ustanowiony stan '( dport = :https lub sport = :https )'
Możemy użyć nazwy protokołu lub portu zwykle kojarzonego z tym protokołem. Domyślny port dla Secure Shell (SSH) to port 22.
Użyjemy nazwy protokołu w jednym poleceniu, a następnie powtórzymy ją, używając numeru portu:
ss -a '( dport = :ssh lub sport = :ssh )'
ss -a '( dport = :22 lub sport = :22 )'
Zgodnie z oczekiwaniami uzyskujemy te same wyniki.
Wyświetlanie listy połączeń z określonym adresem IP
Dzięki opcji dst
(miejsce docelowe) możemy wyświetlić listę połączeń z określonym docelowym adresem IP.
Wpisujemy:
ss -a dst 192.168.4.25
Identyfikacja procesów
Aby zobaczyć, które procesy używają gniazd, możesz użyć opcji procesów ( -p
), jak pokazano poniżej (pamiętaj, że musisz użyć sudo
):
sudo ss -t -p
Stan Recv-Q Send-Q Adres lokalny:Adres równorzędny portu:Proces portu ESTAB 0 0 192.168.4.28:57650 54.218.19.119:użytkownicy https:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 użytkownicy:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
To pokazuje nam, że dwa ustanowione połączenia na gniazdach TCP są używane przez demona SSH i Firefoksa.
Godny następca
Polecenie ss
udostępnia te same informacje, które wcześniej dostarczał netstat
, ale w prostszy i bardziej przystępny sposób. Więcej opcji i wskazówek znajdziesz na stronie podręcznika.
Polecenia Linuksa | ||
Pliki | tar · pv · kot · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · dysk testowy · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · ogon · stat · ls · fstab · echo · mniej · chgrp · chown · rev · wygląd · stringi · typ · zmiana nazwy · zip · rozpakuj · montuj · umount · zainstaluj · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konwertuj · rclone · shred · srm | |
Procesy | alias · ekran · top · ładne · renice · postęp · strace · systemd · tmux · chsh · historia · w · wsad · free · co · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · ściana · tak · kill · sen · sudo · su · czas · groupadd · usermod · grupy · lshw · zamknij · restart · halt · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Sieć | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów