Sistemele de calcul moderne sunt conectate la Internet. Sunt utile cunoștințe legate de rețea: investigare, configurare, depanare, multe dintre care pot fi ușor rulate de la nivelul liniei de comandă.
ip
ping
, traceroute
, host
netstat
, ss
netcat
iperf
tcpdump
Investigare configurări de rețea
Configurare adrese de rețea
Folosirea netcat pe post de client/server
Folosire tcpdump
Utilitarul netcat
este folosit pentru a crea conexiuni server-client. Acesta poate îndeplini atât rolul de server, cât și de client.
Pentru a crea un server care ascultă conexiuni pe portul TCP 2024
rulăm comanda
root@host:~# netcat -l 2024
Parametrul -l
înseamnă că netcat
este în modul listen (server), iar 2024
este portul pe care ascultă: netcat
va crea un socket de tip server și va aștepta conexiuni pe portul 2024
. Terminalul va rămâne în așteptare, pentru ca un client să se conecteze serverul deschis cu netcat
. NU închideți terminalul.
Dorim să verificăm faptul că pe stația host
un serviciu ascultă pe portul 2024
. Deschidem un nou terminal către stația host
și rulăm comanda
root@host:~# netstat -tlnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name [...] tcp 0 0 0.0.0.0:2024 0.0.0.0:* LISTEN 4958/netcat [...]
Comanda netstat
afișează serviciile TCP care așteaptă conexiuni pe stația locală. Observăm că programul netcat
ascultă pe portul 2024
. Opțiunile comenzii netstat
sunt:
t
- afișează conexiuni TCPl
- afișează serviciile care așteaptă (listen) conexiunin
- dezactivează rezolvare de nume pentru adrese IP și porturi; de obicei dezactivăm rezolvarea numelor pentru a elimina latența procesului de rezolvare;p
- afișează numele și PID-ul procesului de tip serviciu de rețea care așteaptă conexiuni pe portul dat. În afișare construcția 0.0.0.0:2024
din coloana Local Address
înseamnă că serviciul ascultă conexiuni pe toate adresele IP/interfețele disponibile sistemului pe portul 2024
.
În terminalul nou deschis către stația host
conectați-vă la serviciul prospăt creat. Folosiți pentru aceasta tot comanda netcat
în modul client:
root@host:~# netcat localhost 2024
Comanda a creat un socket de tip client și s-a conectat la serviciul de mai sus (conexiune TCP pe portul 2024
). În continuare comanda așteaptă intrare de la utilizator. Mesajele pe care le scriem vor fi transmise serverului care le va afișa la ieșirea standard. Scrieți câteva linii și observați afișarea acestora pe partea serverului. Închideți folosind combinația de taste Ctrl+d
. Se închide și serverul.
Pe stația host
, realizați pașii de mai sus pentru UDP:
host
;
netcat
pentru a porni un server sau client UDP, consultați pagina de manual a comenzii și căutați șirul UDP
.
La fel, pentru a afla ce opțiune trebuie transmisă comenzii netstat
pentru a afișa sockeții UDP, consultați pagina de manual a comenzii și căutați șirul udp
.
Rulați netcat
pentru a permite comunicarea peste UDP.
UDP
și folosiți opțiunea corespunzătoare.
Verificați portul deschis pe UDP
folosind netstat
Folosiți utilitarul iperf
pentru a porni un client și un server și pentru a verifica lățimea de bandă pe localhost
.
iperf
de la adresa de aici: http://swarm.cs.pub.ro/~razvan/store/
Copiați-l pe mașina virtuală și instalați-l folosind comanda
sudo dpkg -i iperf_2.0.5+dfsg1-2_i386.deb
Porniți întâi serverul.
Ca argument pentru client (pentru conectare la server) folosiți localhost
(stația locală). Durează circa 10
secunde de comunicare între client și server pentru stabilirea lățimii de bandă.
Aflați serverul de e-mail și de nume pentru domeniul cs.pub.ro folosind comanda host
.
Aflați serverul de e-mail și de nume pentru domeniul cs.pub.ro folosind comanda host
interogând serverul 8.8.8.8
.
Configurați /etc/hosts
astfel încât comanda ping google.com
să întoarcă adresa 1.2.3.4
. Rulați comanda host google.com
. Ce observați?
Afișați toate conexiunile ce au ca port destinație 80 și adresa IP sursă adresa mașinii voastre. Accesați un site pentru a observa pachetele capturate.
Afișați toate ce au ca port destinație 80 și adresa IP destinație 8.8.8.8
. Folosiți telnet 8.8.8.8 53
pentru a simula o conexiune.
Extindeți comanda de mai sus, limitând și tipul protocolului (UDP vs TCP).
Creați o conexiune server-client folosind netcat pe port 1234
în 2 terminale separate. În al treilea terminal, rulați tcpdump
pentru a captura aceste pachete. Adăugați opțiunea relevantă la tcpdump
pentru a arăta și conținutul pachetelor.