Table of Contents

13. Gestiunea rețelei

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ă.

Subiecte abordate

Utilitare folosite

Exerciții

Demo-uri

Investigare configurări de rețea

Configurare adrese de rețea

Folosirea netcat pe post de client/server

Folosire tcpdump

1. Comunicare în rețea cu ''netcat'' și vizualizare cu ''netstat''

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:

Î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:

Pentru a afla ce opțiune trebuie transmisă comenzii 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.

2. Folosire UDP

Rulați netcat pentru a permite comunicarea peste UDP.

Căutați în pagina de manual după șirul UDP și folosiți opțiunea corespunzătoare.

Verificați portul deschis pe UDP folosind netstat

3. Verificare lățime de bandă folosind iperf

Folosiți utilitarul iperf pentru a porni un client și un server și pentru a verifica lățimea de bandă pe localhost.

Descărcați pachetul pentru 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

Urmăriți sintaxa comenzii din pagina de manual pentru a afla cum se pornește un client, respectiv un server.

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ă.

4. Lucrul cu DNS

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?

5. tcpdump

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.