User Tools

Site Tools


linux-admin:capitole:capitol-13

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux-admin:capitole:capitol-13 [2016/10/10 10:37]
mihaic
linux-admin:capitole:capitol-13 [2016/10/10 17:33] (current)
mihaic [Comunicare în rețea cu ''netcat'' și vizualizare cu ''netstat'']
Line 32: Line 32:
 Folosire tcpdump ​ Folosire tcpdump ​
  
 +==== 1. Comunicare în rețea cu ''​netcat''​ și vizualizare cu ''​netstat''​ ====
  
-==== 1. Comunicare în rețea folosind ​netcat ​====+Utilitarul ''​netcat''​ este folosit pentru a crea conexiuni server-client. Acesta poate îndeplini atât rolul de server, cât și de client.
  
-Folosiți ''​netcat''​ pentru ​porni, pe un tab de terminal, ​un server ​și pe alt tab de  +Pentru ​crea un server ​care ascultă conexiuni ​pe portul TCP ''​2024'' ​rulăm comanda<​code bash> 
-terminal un client conectat la acel server, ​pe ''​localhost'' ​(''​127.0.0.1''​).+root@host:​~#​ netcat -l 2024 
 +</​code>​
  
-<note+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. 
-''​netcat'' ​este un utilitar ​care permite deschiderea ​de clienți și servere ​de comunicare în rețea. + 
-</note>+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<code bash
 +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 
 +[...] 
 +</​code>​ 
 + 
 + 
 +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 TCP 
 +  * ''​l''​ - afișează serviciile ​care **așteaptă** (//​listen//​) conexiuni 
 +  * ''​n''​ - dezactivează rezolvare ​de nume pentru adrese IP ș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:<​code bash> 
 +root@host:​~#​ netcat localhost 2024 
 +</code> 
 +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: 
 +  * creați un server care ascultă pachete UDP pe portul 2024; 
 +  * listați serviciile care ascultă pachete UDP pe stația ''​host'';​ 
 +  * porniți un client UDP și comunicați cu serverul de mai sus.
  
 <note tip> <note tip>
-Urmăriți sintaxa clientul ​și a serverului în primele linii ale paginii ​de manual.+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 ​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''​.
 </​note>​ </​note>​
  
-=== 2. Folosire UDP ===+==== 2. Folosire UDP ====
  
 Rulați ''​netcat''​ pentru a permite comunicarea peste UDP. Rulați ''​netcat''​ pentru a permite comunicarea peste UDP.
Line 53: Line 82:
 Căutați în pagina de manual după șirul ''​UDP''​ și folosiți opțiunea corespunzătoare. Căutați în pagina de manual după șirul ''​UDP''​ și folosiți opțiunea corespunzătoare.
 </​note>​ </​note>​
 +
 +Verificați portul deschis pe ''​UDP''​ folosind netstat
  
 ==== 3. Verificare lățime de bandă folosind iperf ==== ==== 3. Verificare lățime de bandă folosind iperf ====
Line 58: Line 89:
 Folosiți utilitarul ''​iperf''​ pentru a porni un client și un server și pentru a verifica lățimea de bandă pe ''​localhost''​. Folosiți utilitarul ''​iperf''​ pentru a porni un client și un server și pentru a verifica lățimea de bandă pe ''​localhost''​.
  
 +<note tip>
 +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
 +<​code>​
 +sudo dpkg -i iperf_2.0.5+dfsg1-2_i386.deb
 +</​code>​
 +</​note>​
 +
 +<note tip>
 +Urmăriți sintaxa comenzii din pagina de manual pentru a afla cum se pornește un client, respectiv un server.
 +</​note>​
 +
 +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.
linux-admin/capitole/capitol-13.1476085054.txt.gz · Last modified: 2016/10/10 10:37 by mihaic