Linux Tutorial – Puntata 21

di jolek78

Care/i fruitrici e fruitori del blog, in questi post – ogni domenica mattina – si parlerà del sistema operativo GNU/Linux e degli strumenti per utilizzarlo al massimo delle potenzialità. Cercheremo di spiegare come funziona, cosa è il kernel, come costruirsi una vpn, come settare un firewall e giocare col terminale, usare adb e altro. Se il capitalismo della sorveglianza ci vuole passivi consumatori-consumatrici di servizi noi si risponde con un po’ di “cultura informatica” e un MARAMEO (quasi affettuoso). Buona lettura!

RTFM non è un caloroso invito ad andare… ma è un caloroso invito a leggere un manuale. RTFM infatti significa letteralmente “Read The Fucking Manual“, ovvero, in italiano, “vatti a leggere il fottuto manuale”. Si, non è esattamente la cosa più gradevole da dire, ne’ la cosa più piacevole da sentirsi dire, ma in fondo è la verità. Il tempo perso per spiegare il proprio problema a qualcuno, leggendo e imparando può diventare tempo guadagnato per imparare qualcosa. Qual’e’ il problema pero’? Che è una affermazione classista e settaria, che mette una barriera fra chi, per hobby passione o mestiere sa qualcosa di più e chi, per attitudine o altro, ne sa di meno. Linux pero’ ha un’anima popolare, socialista, aperta e inclusiva, e fornisce al suo interno tutti i manuali per tutti i programmi. Si, avete letto bene, tutti ma proprio tutti. Ogni manuale è scritto in informatichese – ed è questo il motivo del tutorial: diffondere conoscenza – ed è strutturato in una maniera piuttosto standard. In questa puntata pertanto si proverà a spiegare come e’ strutturato un manuale, come è formattato, dove si trova e come si può richiamare da terminale. Quindi, se qualcuno domani vi dovesse dire RTFM, fategli un pernacchione e ditegli che sapete come fare. Bentornati 🙂


MAN
Partiamo dunque dai fondamentali: per invocare un manuale basta scrivere man e aggiungere il nome del programma che si vuole investigare. In tutta la puntata utilizzeremo l’esempio del manuale per ss, un tool che ha rimpiazzato netstat per visualizzare le connessioni e le porte in uso del sistema. ss fa parte del pacchetto iproute2 che, nel corso del tempo, sta rimpiazzando quasi tutti i tool per l’analisi del network che c’erano su Linux.

bottega@bottegadelbarbieri  ~  man ss

 

SS(8) System Manager's Manual SS(8)

NAME
ss - another utility to investigate sockets

SYNOPSIS
ss [options] [ FILTER ]

DESCRIPTION
ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and state information than other tools.

OPTIONS
When no option is used ss displays a list of open non-listening sockets (e.g. TCP/UNIX/UDP) that have established connection.
[...]

USAGE EXAMPLES
[....]

SEE ALSO
ip(8),
RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (TCP states)

AUTHOR
ss was written by Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>.
This manual page was written by Michael Prokop <mika@grml.org> for the Debian project (but may be used by others).

Per sommi capi descriviamo le sezioni di cui si compone un manuale.

– NAME
nome del programma

– SYNOPSIS
sinossi – ovvero come va utilizzato il programma e quali sono i parametri da inserire.

– DESCRIPTION
Qual’e’ lo scopo del programma, cosa fa e perché va utilizzato.

– OPTIONS
Questa e’ ovviamente la sezione più corposa perché spiega tutte le opzioni per ottenere il risultato – l’output – desiderato

– SEE ALSO
Fonti in rete da leggere per approfondire il suo utilizzo

– AUTHOR
I crediti dell’autore, e come fare per contattarlo per segnalazioni

Dunque. La sezione della sinossi ci dice che il programma va utilizzato invocandolo da terminale con ss e aggiungendo successivamente le opzioni che poi troviamo nella sezione options. Eccone alcune:

-a, --all
Display both listening and non-listening (for TCP this means established connections) sockets.

-l, --listening
Display only listening sockets (these are omitted by default).
[....]
 -p, --processes
Show process using socket.
[...]

-t, --tcp
Display TCP sockets.

-u, --udp
Display UDP sockets.

-d, --dccp
Display DCCP sockets.

-w, --raw
Display RAW sockets.

-x, --unix
Display Unix domain sockets (alias for -f unix).

-p, --processes
Show process using socket.

-s, --summary
Print summary statistics. This option does not parse socket lists obtaining summary from various sources. It is useful when amount of sockets is so huge that parsing /proc/net/tcp is painful.

Per una questione di spazio, dopo il comando inseriremo “| head” in modo da visualizzare solo le prime 10 linee dell’output.

-a, –all
Dunque, per visualizzare tutte le connessioni in entrata, in uscita, in ascolto e quelle non in ascolto:

bottega@bottegadelbarbieri  ~  ss -a |head
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
nl UNCONN 0 0 rtnl:NetworkManager/576 * 
nl UNCONN 0 0 rtnl:avahi-daemon/568 * 
nl UNCONN 0 0 rtnl:whoopsie/757 * 
nl UNCONN 0 0 rtnl:kernel * 
nl UNCONN 0 0 rtnl:systemd-resolve/539 * 
nl UNCONN 0 0 rtnl:whoopsie/757 * 
nl UNCONN 0 0 rtnl:NetworkManager/576 * 
nl UNCONN 0 0 rtnl:avahi-daemon/568 * 
nl UNCONN 0 0 rtnl:systemd-resolve/539 *

-t, –tcp
Per visualizzare soltanto quelle che viaggiando con protocollo tcp:

bottega@bottegadelbarbieri  ~  ss -t |head
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
ESTAB 0 0 192.168.0.11:ssh 192.168.0.14:45630

-u, –udp
Per visualizzare soltanto quelle che viaggiano con protocollo udp:

bottega@bottegadelbarbieri  ~  ss -u |head
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
0 0 192.168.0.11%enp0s3:bootpc 192.168.0.1:bootps 

-l, –listening
Per visualizzare soltanto quelle in ascolto:

bottega@bottegadelbarbieri  ~  ss -l |head
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
nl UNCONN 0 0 rtnl:NetworkManager/576 * 
nl UNCONN 0 0 rtnl:avahi-daemon/568 * 
nl UNCONN 0 0 rtnl:whoopsie/757 * 
nl UNCONN 0 0 rtnl:kernel * 
nl UNCONN 0 0 rtnl:systemd-resolve/539 * 
nl UNCONN 0 0 rtnl:whoopsie/757 * 
nl UNCONN 0 0 rtnl:NetworkManager/576 * 
nl UNCONN 0 0 rtnl:avahi-daemon/568 * 
nl UNCONN 0 0 rtnl:systemd-resolve/539 *

-x, –unix
Per visualizzare soltanto i socket unix

bottega@bottegadelbarbieri  ~  ss -x |head
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
u_str ESTAB 0 0 * 29535 * 29536 
u_str ESTAB 0 0 * 25582 * 26432 
u_str ESTAB 0 0 * 31386 * 31387 
u_str ESTAB 0 0 /run/dbus/system_bus_socket 29833 * 29525 
u_str ESTAB 0 0 * 29438 * 29439 
u_str ESTAB 0 0 * 29754 * 29755 
u_str ESTAB 0 0 * 23094 * 25682 
u_str ESTAB 0 0 /run/dbus/system_bus_socket 31351 * 31350 
u_str ESTAB 0 0 /run/user/114/bus 29433 * 29432

-s, –summary
Per visualizzare le statistiche:

bottega@bottegadelbarbieri  ~  ss -s |head
Total: 315
TCP: 8 (estab 1, closed 0, orphaned 0, timewait 0)

Transport Total IP IPv6
RAW 1 0 1 
UDP 9 6 3 
TCP 8 5 3 
INET 18 11 7 
FRAG 0 0 0

-l, –listening + -t, –tcp
Le opzioni pero’ possono essere anche mixate fra loro. E quindi, per esempio, se vogliamo filtrare tutte le connessioni tcp ma soltanto quelle in ascolto:

 bottega@bottegadelbarbieri  ~  ss -tl |head
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
LISTEN 0 4096 0.0.0.0:sunrpc 0.0.0.0:* 
LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:* 
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* 
LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:* 
LISTEN 0 4096 [::]:sunrpc [::]:* 
LISTEN 0 128 [::]:ssh [::]:* 
LISTEN 0 5 [::1]:ipp [::]:*

-l, –listening + -u, –udp
Stessa cosa facciamo per quelle che viaggiano con protocollo udp:

bottega@bottegadelbarbieri  ~  ss -tu |head
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process 
udp ESTAB 0 0 192.168.0.11%enp0s3:bootpc 192.168.0.1:bootps 
tcp ESTAB 0 0 192.168.0.11:ssh 192.168.0.14:45630

 

Ovviamente per leggere il manuale basterà premere le freccette in alto e in basso sulla tastiera. E poi per concludere un piccolo trick. Immaginate d’invocare il manuale e di voler cercare soltanto una parola. C’e’ un metodo molto comodo, invece che scrollare in alto e in basso:

/ + <parola da cercare>

Nella fattispecie, se per esempio cerchiamo la parola udp scriveremo:

/udp

 

Alla prossima settimana!
jolek78

>> Indice <<
Puntata 20 < > Puntata 22

Il logo “tux-linux-by-deiby-ybied” e’ stato realizzato da laboratoriolinux in licenza Creative Commons BY-NC-SA 2.0

jolek78
Un tizio che pensava di essere uno scienziato. Si ritrovò divulgatore scientifico. Poi si addormentò e si svegliò informatico. Ma era sempre lui.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *