This is an old revision of the document!


Curs 08 - Utilizatori

Demo

Cuvantul utilizator defineste in primul rand persoana fizica care dorește să acceseze resursele și funcționalitățile unui sistem de calcul. Din punct de vedere al sistemului de operare însă, utilizatorul presupune existența unui cont de utilizator prin intermediul căruia sunt accesate resursele puse acestuia la dispozitie în sistem (de exemplu fișierele) si care poate crea procese.

Clasificare:

  • Utilizatori de sistem – permit crearea de procese si detin resurse precum fisiere
  • Utilizatori de aplicatii – permit accesul la resursele gestionate de aplicatii si nu de sistemul de operare

Un prompt BASH default arată utilizatorul care s-a logat pe sesiunea shell curentă. În acest caz, utilizatorul este student.

student@uso:~$

Informațiile despre utilizatori sunt stocate in fișierul /etc/passwd

student@uso:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
mihai:x:1001:1001:/home/mihai:/bin/bash
maria:x:1002:1002:/home/maria:/bin/bash

Fiecare utilizator este identificat în mod unic în funcție de UID (User Identifier). De asemenea, un utilizator are atribuit si un director home. Pentru a accesa directorul home, folosim caracterul ~, acesta substituind calea către directorul home al utilizatorului curent:

student@uso:~$ cd ~
student@uso:~$ pwd
/home/student

Observăm că directorul home al utilizatorului student este /home/student. Utilizatorul root (utilizatorul privilegiat in Unix) are UID-ul 0 si home-ul in /root.

Pentru ușurința în realizarea unor configurații in sistem, utilizatorii pot fi organizați în grupuri. Un grup poate contine mai multi utilizatori, iar un utilizator poate face parte din mai multe grupuri. Fiecare grup folosește un identificator unic numit GID (Group Identifier). GID-ul 0 este rezervat grupului utilizatorului root.

Fisierul /etc/group conține informatii despre toate grupurile din sistem.

Mai jos este un demo unde vor fi prezentate comenzile menționate în curs, alături de exemple de folosire a acestora.

Comanda su

Comanda su (substitute user) este folosita pentru a schimba utilizatorul current.

student@uso:~$ su mihai
Password:
mihai@uso:/home/student$

De cele mai multe ori, comanda su este folosita alaturi de sudo (substitute usor do) pentru a accesa un shell cu drepturi privilegiate. Daca dupa utilitarul su nu se da un nume de utilizator atunci se va considera ca se doreste accesarea utilizatorului root.

student@uso:~$ sudo su
[sudo] password for student:
root@uso:/home/student#

Se mai poate folosi si comanda sudo bash pentru a obtine un astfel de shell. Aceasta comanda va schimba directorul current în home-ul root-ului.

student@uso:~$ sudo bash
[sudo] password for student:
root@uso:~#

Utilizatorul care executa comanda cu sudo trebuie sa aiba drept de sudo. Altfel se va obtine urmatorul rezultat.

mihai@uso:~$ sudo su
[sudo] password for mihai:
mihai is not in the sudoers file.  This incident will be reported.
mihai@uso:~$

Comenzile id și finger

Comenzile id si finger se folosesc pentru a afla informatii despre un anumit utilizator.

student@uso:~$ id mihai
uid=1001(mihai) gid=1001(mihai) groups=1001(mihai)
student@uso:~$ finger mihai
Login: mihai      		Name: Mihai Popescu
Directory: /home/mihai		Shell: /bin/bash
Office: 101
Never logged in.
No mail.
No Plan.

Comenzile w, who și pinky

Aceste comenzi ofera informatii despre userii logati in sistem.

student@uso:~/Documents$ w
 12:18:08 up 2 days, 18:27,  3 users,  load average: 0,26, 0,19, 0,08
USER 	TTY      FROM         	LOGIN@   IDLE   JCPU   PCPU WHAT
student  :0       :0           	11:57   ?xdm?   7:05   0.01s /usr/lib/gdm3/gdm-x-session --run-script
maria	tty2     -            	12:18	8.00s  0.05s  0.05s -bash
mihai	:1       :1           	12:15   ?xdm?   7:05   0.01s /usr/lib/gdm3/gdm-x-session --run-script
student@uso:~/Documents$ who
student  :0           2020-10-13 11:57 (:0)
maria	tty2         2020-10-13 12:18
mihai	:1           2020-10-13 12:15 (:1)

Comanda pinky poate produce si un output asemanator cu finger.

student@uso:~$ pinky -l student
Login name: student                 	In real life:  Student User
Directory: /home/student 	        Shell:  /bin/bash

Comanda whoami

Comanda whoami afiseaza username-ul utilizatorului current.

student@uso:~$ whoami
student
student@uso:~$

Comenzile users și groups

Comanda users afiseaza userii logati in system.

mihai@uso:/home/student$ users
student
mihai@uso:/home/student$

Comanda groups afiseaza grupurile din care face parte un utilizator dat ca parametru comenzii. Daca nu se da niciun utilizator, atunci se va lua utilizatorul current.

student@uso:~$ groups
student adm cdrom sudo dip plugdev lpadmin sambashare
student@uso:~$ groups root
root : root
student@uso:~$ groups student
student : student adm cdrom sudo dip plugdev lpadmin sambashare
student@uso:~$ groups mihai
mihai : mihai

Comanda passwd

Comanda passwd este folosita pentru a schimba parola unui utilizator. Un utilizator neprivilegiat trebuie sa foloseasca sudo pentru a schimba parola altui utilizator.

student@uso:~$ sudo passwd mihai
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
mihai@uso:/home/student$ passwd mihai
Changing password for mihai.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Comenzile useradd și adduser

Ambele comenzi sunt folosite pentru a adauga un user in sistem. Comanda adduser se foloseste de useradd, dar este mai user friendly.

student@uso:~$ sudo useradd marcela
student@uso:~$ id marcela
uid=1003(marcela) gid=1003(marcela) groups=1003(marcela)
student@uso:~$ sudo adduser marcela
Adding user `marcela' ...
Adding new group `marcela' (1003) ...
Adding new user `marcela' (1003) with group `marcela' ...
Creating home directory `/home/marcela' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for marcela
Enter the new value, or press ENTER for the default
    	Full Name []:
    	Room Number []:
    	Work Phone []:
    	Home Phone []:
    	Other []:
Is the information correct? [Y/n]
student@uso:~$

Comenzile userdel si deluser

Ambele comenzi sunt folosite pentru a sterge un utilizator. Comanda deluser este considerate mai interactive.

student@uso:~$ sudo deluser marcela
Removing user `marcela' ...
Warning: group `marcela' has no more members.
Done.
student@uso:~$ finger marcela
finger: marcela: no such user.
student@uso:~$ sudo userdel marcela
student@uso:~$ finger marcela
finger: marcela: no such user.

Comenzile groupadd, addgroup, groupdel si delgroup

Groupadd si addgroup se folosesc pentru a adauga noi grupuri in system. Nu este o mare diferenta intre aceste comenzi, addgroup fiind doar mai user friendly.

student@uso:~$ sudo groupadd colegi1
student@uso:~$ sudo addgroup colegi2
Adding group `colegi2' (GID 1004) ...
Done.
student@uso:~$ cat /etc/group | grep colegi
colegi1:x:1003:
colegi2:x:1004:
student@uso:~$ sudo delgroup colegi1
Removing group `colegi1' ...
Done.
student@uso:~$ sudo groupdel colegi2
student@uso:~$

Groupdel si delgroup se folosesc pentru a sterge grupuri din sistem. La fel ca la comenzile anterioare, rezultatul lor nu difera foarte mult, delgroup fiind mai interactive si acceptand mai multe optiuni.

Comenzile usermod si groupmod

Comanda usermod este folosita pentru a modifica un cont de utilizator. In functie de optiunile date acestei comenzi, putem schimba mai multe lucruri la un cont de utilizator. Spre exemplu, putem schimba home directory-ul unui user.

student@uso:~$ finger marcela
Login: marcela    	                            	Name:
Directory: /home/marcela        	  	Shell: /bin/bash
Never logged in.
No mail.
No Plan.
student@uso:~$ sudo usermod -d /home/marcela_dir marcela
student@uso:~$ finger marcela
Login: marcela    	                            	Name:
Directory: /home/marcela_dir       	Shell: /bin/bash
Never logged in.
No mail.
No Plan.
student@uso:~$

Pentru a adauga un user la un grup se procedeaza in felul urmator:

student@uso:~$ groups marcela
marcela : marcela
student@uso:~$ sudo addgroup studenti
Adding group `studenti' (GID 1004) ...
Done.
student@uso:~$ sudo usermod -a -G studenti marcela
student@uso:~$ groups marcela
marcela : marcela studenti
student@uso:~$

Comanda groupmod este folosita pentru a modifica un grup din system. De exemplu, putem modifica numele unui grup:

student@uso:~$ sudo groupmod -n absolventi studenti
student@uso:~$ cat /etc/group | grep absolventi
absolventi:x:1004:marcela
student@uso:~$

Comanda chsh

Comanda chsh este folosita pentru a schimba shell-ul de login al utilizatorului.

student@uso:~$ finger marcela | grep Shell
Directory: /home/marcela        	  	Shell: /bin/bash
student@uso:~$ sudo chsh marcela
Changing the login shell for marcela
Enter the new value, or press ENTER for the default
    	Login Shell [/bin/bash]: /bin/sh
student@uso:~$ finger marcela | grep Shell
Directory: /home/marcela        	  	Shell: /bin/sh

Comanda chfn

Comanda chfn ofera posibilitatea de a schimba informatii legate de contul de utilizator.

student@uso:~$ sudo chfn marcela
Changing the user information for marcela
Enter the new value, or press ENTER for the default
    	Full Name []: Marcela Popescu
    	Room Number []: 120
    	Work Phone []: 074234324
    	Home Phone []: 025543455
    	Other []: info
student@uso:~$ finger marcela
Login: marcela    	                  Name: Marcela Popescu
Directory: /home/marcela        	  Shell: /bin/bash
Office: 120, 074234324                    Home Phone: 025543455
Never logged in.
No mail.
No Plan.
student@uso:~$

Comanda chpasswd

Comanda chpasswd este folosita pentru a schimba parolele mai multor useri in cadrul unei singure comenzi. Odata ce este rulata comanda, pe urmatoarele linii trebuie sa completam informatiile sub forma user:parola. Pentru a salva parolele se tasteaza combinatia CTRL+D.

 
student@uso:~$ sudo chpasswd
marcela:1234
mihai:4321
maria:mihai
student@uso:~$

Comanda chown

Comanda chown este folosita pentru a schimba utilizatorul care este owner pentru un fisier.

student@uso:/home/dode$ ls -l | grep terminus
-rw-rw-r-- 1 dode dode	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chown student terminus
student@uso:/home/dode$ ls -l | grep terminus
-rw-rw-r-- 1 student dode	0 oct 14 13:17 terminus

Se poate observa mai sus ca am schimbat utilizatorul care este owner din dode in student.

Comanda chgrp

Comanda chgrp se foloseste pentru a schimba grupul unui fisier.

student@uso:/home/dode$ ls -l | grep terminus
-rw-rw-r-- 1 dode dode	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chgrp student terminus
student@uso:/home/dode$ ls -l | grep terminus
-rw-rw-r-- 1 dode student	0 oct 14 13:17 terminus

Mai sus am schimbat grupul care este owner din dode in student.

Comanda chmod

Comanda chmod este folosita pentru a schimba permisiunile pe care le detine un user sau un grup pentru un fisier. In urmatorul exemplu se executa o serie de operatii folosind comanda chmod, rezultatul lor putand fi observat cu comanda ls -l folosita impreuna cu grep.

student@uso:/home/dode$ ls -l | grep terminus
-rw-rw-r-x 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod o-x terminus
student@uso:/home/dode$ ls -l | grep terminus
-rw-rw-r-- 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod u+x terminus
student@uso:/home/dode$ ls -l | grep terminus
-rwxrw-r-- 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod g+x terminus
student@uso:/home/dode$ ls -l | grep terminus
-rwxrwxr-- 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod o+x terminus
student@uso:/home/dode$ ls -l | grep terminus
-rwxrwxr-x 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod o+w terminus
student@uso:/home/dode$ ls -l | grep terminus
-rwxrwxrwx 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod g-w terminus
student@uso:/home/dode$ ls -l | grep terminus
-rwxr-xrwx 1 dode student	0 oct 14 13:17 terminus
student@uso:/home/dode$ sudo chmod a-w terminus
student@uso:/home/dode$ ls -l | grep terminus
-r-xr-xr-x 1 dode student	0 oct 14 13:17 terminus

Demo-uri

Pentru rularea demo-urilor de mai jos folosim mașina virtuală USO Demo. Mașina virtuală (în format OVA) poate fi importată în VirtualBox. Comenzile le vom rula în cadrul mașinii virtuale.

Mașina virtuală deține două interfețe de rețea:

  • eth0 pentru accesul la Internet (interfață de tipul NAT)
  • eth1 pentru comunicarea cu sistemul fizic (gazdă, host) (interfață de tipul Host-only Adapter)

Pentru a rula demo-ul avem două opțiuni:

  1. Folosim direct consola mașinii virtuale.
  2. Aflăm adresa IP de pe interfața eth1 a mașinii virtuale și ne conectăm prin SSH, de pe sistemul fizic, folosind comanda
    ssh student@<adresa-IP-vm-eth1>

    unde <adresa-IP-vm-eth1> este adresa IP a interfeței eth1 din cadrul mașinii virtuale.

Pentru conectarea la mașina virtuală folosim numele de utilizator student cu parola student. Contul student are permsiuni de sudo. Folosind comanda

sudo su -

obținem permisiuni privilegiate (de root) în shell.

Dacă dorim să ne conectăm pe SSH iar mașina virtuală nu are adresă IP configurată pe interfața eth1 atunci folosim comanda

sudo dhclient eth1

pentru a obține o adresă IP.

Dacă optăm pentru rularea prin SSH iar sistemul fizic rulează Windows, putem folosi Putty pe post de client SSH pe sistemul fizic.

Comenzile folosite sunt de uz general. Actualizând adresele IP cu adrese potrivite, putem rula cu succes comenzile pe orice sistem sau mașină virtuală Linux.

Toate comenzile de mai jos au loc pe mașina virtuală, accesibilă la acest link.

În mod tradițional, configurarea rețelei în sistemele Linux/Unix s-a făcut cu ajutorul comenzilor ifconfig și route. Aceste comenzi sunt încă active; pe Linux, însă, se recomandă folosirea comenzii ip din suita/pachetul iproute2, o comandă mai puternică și mai flexibilă.

În demo vom folosi comanda ip; pentru folosirea comenzilor ifconfig și route putem consulta tutoriale pe Internet; modul de folosire este apropiat comenzii ip.

Vizualizarea interfețelor de rețea

Interfața în linia de comandă ne ajută pentru vizualizarea rapidă a interfețelor de rețea prin rularea comenzii

student@uso-demo:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:f1:16:da brd ff:ff:ff:ff:ff:ff

Comanda ip link show afișează interfețele de rețea ale sistemului și tipul acestora.

Comanda ip, folosită în configurarea rețelei în Linux are argumente care pot fi prescurtate. Astfel, forma uzuală în care rulăm comanda de mai sus este

student@uso-demo:~$ ip l s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:f1:16:da brd ff:ff:ff:ff:ff:ff

În urma rulării ne sunt afișate cele trei interfețe ale sistemului:

  1. interfața virtuală lo (numită și interfață de loopback – indicat de șirul link/loopback în output)
  2. interfața fizică (din perspectiva mașinii virtuale) eth0 (de tip Ethernet – indicat de șirul link/ether în output)
  3. interfața fizică (din perspectiva mașinii virtuale) eth1 (de tip Ethernet – indicat de șirul link/ether în output)

Interfața virtuală lo este o interfață virtuală specială. Ea referă sistemul curent (o auto-referință) și este utilă atunci când dorim să pornim servicii de rețea accesibile doar local sau pentru testare. Interfața este activă și atunci când nu avem conexiune la Internet.

În cazul interfețelor fizice eth0 și eth1 observăm că avem indicatorul UP deci cele două interfețe sunt active.

Vizualizarea adresei IP și adresei MAC pe interfețele sistemului

Prin rularea comenzii ip address show (sau, mai uzual, ip a s) putem afla informații despre interfețele sistemului precum adresa MAC și adresa IP:

student@uso-demo:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feea:9b3f/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:f1:16:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.100/24 brd 192.168.56.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fef1:16da/64 scope link
       valid_lft forever preferred_lft forever

Observăm că aceleași informații pe care le-a afișat comanda ip l s sunt acum vizibile și aici împreună cu alte informații. Din acest motiv, este mai rar folosită comanda ip l s; adesea folosim comanda ip a s pentru a afișa interfețele sistemului și informații despre acestea.

  1. Interfața virtuală lo are adresa IP 127.0.0.1 (pe linia cu inet) și adresa MAC 00:00:00:00:00:00 (pe linia cu link/loopback).
  2. Interfața fizică (din perspectiva mașinii virtuale) eth0 (de tip Ethernet) are adresa IP 10.0.2.15 și adresa MAC 08:00:27:ea:9b:3f. Adresa pot diferi la rularea mașinii virtuale pe un alt sistem.
  3. Interfața fizică (din perspectiva mașinii virtuale) eth1 (de tip Ethernet) are adresa IP 192.168.56.100 și adresa 08:00:27:f1:16:da. Adresele pot diferi la rularea mașinii virtuale pe un alt sistem.

În output-ul comenzii sunt indicate și adresle IPv6, dar nu vom insista pe acestea.

Verificarea funcționării serviciului DNS

Pentru a verifica funcționarea serviciului DNS putem folosi, simplist, comanda ping care verifică dacă avem conectivitate:

student@uso-demo:~$ ping google.com
PING google.com (80.96.255.110) 56(84) bytes of data.
64 bytes from cache.google.com (80.96.255.110): icmp_seq=1 ttl=63 time=47.9 ms
64 bytes from cache.google.com (80.96.255.110): icmp_seq=2 ttl=63 time=57.0 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 47.961/52.499/57.038/4.544 ms

Prima linie din output-ul comenzii ne indică faptul că aceasta a translatat numele google.com în adresa 80.96.255.110 interogând în spate, transparent utilizatorului, serviciul DNS.

Când rulăm comanda ping pe Linux aceasta trimite în mod continuu pachete. Ca să oprim comanda/procesul folosim combinația de taste Ctrl+c.

Totuși, modul recomandat de verificare a funcționării serviciului DNS este folosirea unei comenzi de tip client DNS. O astfel de comandă este comanda host:

student@uso-demo:~$ host google.com
google.com has address 80.96.255.109
google.com has address 80.96.255.95
google.com has address 80.96.255.82
google.com has address 80.96.255.123
google.com has address 80.96.255.116
google.com has address 80.96.255.102
google.com has address 80.96.255.103
google.com has address 80.96.255.117
google.com has address 80.96.255.89
google.com has address 80.96.255.96
google.com has address 80.96.255.88
google.com has address 80.96.255.110
google.com has IPv6 address 2a00:1450:401b:801::200e
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.

student@uso-demo:~$ host cs.curs.pub.ro
cs.curs.pub.ro is an alias for ha-webserver-01-pub.curs.pub.ro.
ha-webserver-01-pub.curs.pub.ro has address 141.85.241.51

student@uso-demo:~$ host ocw.cs.pub.ro
ocw.cs.pub.ro has address 141.85.227.65
ocw.cs.pub.ro mail is handled by 10 ocw.cs.pub.ro.

În output-ul comenzii am identificat adresele IP corespunzătoare pentru google.com; sunt, în mod așteptat, mai multe adrese IP; un singur server nu ar rezista la multitudinea de cereri din Internet către engine-ul Google. Am identificat adresa IP pentru cs.curs.pub.ro și pentru ocw.cs.pub.ro.

Atunci când comanda host întoarce succes pentru un nume comun (precum google.com) înseamnă că serviciul DNS funcționează.

Latența DNS în Internet

You know it's love when you memorize her IP number to skip DNS overhead.

Atunci când folosim o aplicație de rețea, în general folosim nume, nu adrese IP. În spate aplicația va interoga serviciul DNS care va întoarce adresa IP dorită și apoi aplicația se va conecta la serviciul stației identificată cu acea adresă IP. Procesul de interogare a serviciului DNS are latență (întârziere) și acest lucru poate fi important. Din acest motiv, când folosim în special comenzi de diagnosticare și depanare a rețelei (troubleshooting), dorim să evităm overhead-ul dat de serviciul DNS.

De exemplu, dacă dorim să afișăm conexiunile active în sistem, folosim comanda netstat ca mai jos:

student@uso-demo:~$ time netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.56.100:ssh      192.168.56.1:34692      ESTABLISHED

real	0m0.097s
user	0m0.000s
sys	0m0.004s
student@uso-demo:~$ time netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.56.100:22       192.168.56.1:34692      ESTABLISHED

real	0m0.007s
user	0m0.000s
sys	0m0.000s

Am folosit comanda time pentru a măsura durata comenzii transmisă ca argument. Observăm că a doua comandă netstat, cu opțiunea suplimentară -n durează mai puțin (timpul real de execuție este de 7 milisecunde față de 97 de milisecunde). Opțiunea -n dezactivează interogarea serviciului DNS și de aceea este mai rapidă.

În general, în comenzile de diagnosticare și depanare a rețelei vom folosi opțiunea -n pentru a obține comenzi mai rapide care să nu țină cont de latența serviciului DNS.

Afișarea serviciilor active și a conexiunilor active

Pentru a ști ce aplicații de rețea (de tip client sau de tip server) rulează pe sistemul nostru, folosim comanda netstat (de le network statistics).

Dacă vrem să afișăm serviciile TCP din sistem folosim comanda

student@uso-demo:~$ netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:44292           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp6       0      0 :::35042                :::*                    LISTEN
tcp6       0      0 :::111                  :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN

student@uso-demo:~$ sudo netstat -tlpn
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:44292           0.0.0.0:*               LISTEN      482/rpc.statd
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      473/rpcbind
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      498/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      771/exim4
tcp6       0      0 :::35042                :::*                    LISTEN      482/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      473/rpcbind
tcp6       0      0 :::22                   :::*                    LISTEN      498/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      771/exim4

Am folosit următoarele opțiuni ale comenzii netstat:

  • -t afișează informații despre TCP
  • -l afișează procesele în starea listening, adică serviciile sistemului
  • -n dezactivează interogarea serviciului DNS pentru o rulare mai bună a comenzii
  • -p afișează PID-ul și numele procesului aferent

Atunci când folosim opțiunea -p pentru afișarea PID-ului și numelui procesului aferent trebuie să rulăm cu drepturi privilegiate. De aceea am folosit sudo în fața comenzii netstat -tlpn.

În output-ul de mai sus observăm serviciile TCP ale sistemului, printre care serverul de SSH (procesul sshd) care ascultă conexiuni pe portul 22 și serverul de e-mail (procesul exim4) care ascultă conexiunie pe portul 25.

Dacă dorim să afișăm conexiunile active TCP din sistem (adică nu aplicații de tip server care ascultă, ci conexiuni realizate între o aplicație client și o aplicație server) folosim comanda

student@uso-demo:~$ sudo netstat -tpn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 192.168.56.100:22       192.168.56.1:34692      ESTABLISHED 896/sshd: student [

Față de comanda anterioară, am scos opțiunea -l (pentru servicii). Observăm că, în cazul de față, avem o conexiune realizată către serviciul local SSH (adresa IP 192.168.56.100 este adresa interfeței locale eth1, iar portul 22 este portul pe care asculă serviciul SSH) de la o aplicație client care s-a conectat de la adresa 192.168.56.1 de pe portul 34692. Această conexiune apare întrucât, în situația curentă, există o conexiune SSH de pe sistemul fizic pe mașina virtuală; pe această conexiune noi rulăm de fapt comenzile.

Pornirea unui serviciu

Dacă dorim să pornim un serviciu de test, putem folosi comanda netcat (sau forma sa prescurtată nc). De exemplu, dacă dorim să pornim un serviciu pe portul 12345 vom folosi comanda

student@uso-demo:~$ nc -l -p 12345

În urma rulării consola nu mai afișează prompt, întrucât serviciul proaspăt pornit așteaptă cereri de conectare. Putem verifică pornirea serviciului cu ajutorul comenzii netstat:

student@uso-demo:~$ sudo netstat -tlpn
[...]
tcp        0      0 0.0.0.0:12345           0.0.0.0:*               LISTEN      1017/nc
[...]

Observăm procesul nc cu PID-ul 1017 care ascultă conexiuni pe portul 12345.

Pentru a realiza o conexiune la acest serviciu, pe o altă consolă, putem folosi tot comanda netcat/nc dar în modul client:

student@uso-demo:~$ nc localhost 12345

Cu ajutorul comezii de mai sus am inițiat o conexiune către serviciul pornit local (localhost este un alias pentru adresa 127.0.0.1, stația locală) pe portul 12345. Din nou, nu se afișează prompt, pentru că se așteaptă comunicarea de informații către server.

Pentru a verifica realizarea cu succes a conexiunii rulăm, pe o altă consolă, comanda

student@uso-demo:~$ sudo netstat -tnp
Active Internet connections (w/o servers)
[...]
tcp        0      0 127.0.0.1:12345         127.0.0.1:52791         ESTABLISHED 1039/nc
tcp        0      0 127.0.0.1:52791         127.0.0.1:12345         ESTABLISHED 1040/nc

Observăm că avem o conexiune între cele două procese nc. Apare de două ori aceeași conexiune pentru că e afișată din perspectiva ambelor procese: procesul server lucrează pe stația locală, adresa IP 127.0.0.1 pe portul 12345, iar procesul client lucrează pe stația locală, adresa 127.0.0.1 pe portul 52791.

Ce scriem acum în consola clientului va ajunge la server și invers.

Pentru a închide comunicația putem folosi

  • combinația de taste Ctrl+c pentru a închide unul dintre procese și, în felul acesta, și pe celălalt care nu mai are cu cine să comunice
  • combinația de taste Ctrl+d în client pentru a transmite EOF (end of file) și a închide astfel canalul de comunicație

Vizualizarea adresei de broadcast pe o interfață

Adresa de broadcast a unei interfețe este vizibilă folosind comanda ip a s. Mai sus, am rulat comanda ip a s și am putut vedea adresele de broadcast de pe cele două interfețe fizice ale sistemului: eth0 și eth1. Aceste adrese de broadcast sunt:

  • adresa de broadcast 10.0.2.255 pe interfața eth0
  • adresa de broadcast 192.168.56.255 pe interfața eth1

Interfața lo nu are adresă de broadcast pentru că este o interfață locală și are nevoie să comunice cu toate stațiile din rețeaua sa (semnificația adresei de broadcast); pentru că nu există alte stații în rețeau sa :-)

Vizualizarea gateway-ului într-un sistem Linux

Pentru a vizualiza gateway-ului într-un sistem Linux folosim comanda ip route show sau forma scurtă a acesteia ip r s

student@uso-demo:~$ ip r s
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100

În vreme ce comanda ip a s ne afișa informații despre adresele interfețelor, comanda ip r s ne afișează informații despre rute și despre default gateway.

Nu vom discuta despre ultimele două intrări; pe scurt, o interfață configurată va conduce la o rută; avem două interfețe configurate (eth0 și eth1) deci avem două rute. Ne interesează prima linie, care conține șirul default și care, deci, indică (default) gateway-ul. Acesta are adresa 10.0.2.2.

Putem testa conectivitatea la gateway cu ajutorul comenzii ping:

student@uso-demo:~$ ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=63 time=0.370 ms
64 bytes from 10.0.2.2: icmp_seq=2 ttl=63 time=0.258 ms
^C
--- 10.0.2.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.258/0.314/0.370/0.056 ms

Așa cum era de așteptat, avem conectivitate la gateway. Dacă nu am fi avut, nu am fi putut folosi ping pentru testa conectivitatea la google.com, cum am făcut mai sus.

Vizualizarea ruterelor către o stație din Internet

Pentru a vedea ruterele prin care trecem ca să ajungem la o destinație în Internet folosimd comanda traceroute. Comanda este utilă în special pentru depanare, când ne propunem să vedem unde (în ce ruter) se estompează pachetele.

student@uso-demo:~$ traceroute -n hotnews.ro
traceroute to hotnews.ro (91.195.7.1), 30 hops max, 60 byte packets
 1  10.0.2.2  0.364 ms  0.148 ms  0.299 ms
 2  * * *
 3  10.252.247.2  58.589 ms  58.430 ms  58.263 ms
 4  172.19.29.92  58.000 ms  57.879 ms  57.710 ms
 5  172.22.23.245  57.555 ms  57.363 ms  57.185 ms
 6  * * *
 7  * * *
 8  93.186.132.13  58.498 ms  58.209 ms  58.006 ms
 9  * * *
10  * * *
11  91.195.7.1  49.132 ms  59.467 ms  60.004 ms

În output-ul de mai sus vedem că avem 10 rutere intermediare până la destinația finală (hotenews.ro), care are index-ul 11 și adresa IP 91.195.7.1. Dacă ar fi fost probleme într-un punct din Internet pachetele s-ar fi oprit acolo, nu ar fi trecut mai departe. Așa cum este de așteptat primul punct intermediar este chiar gateway-ul cu adresa IP 10.0.2.2.

Cu cât o stație destinație este mai departe în Internet cu atât numărul de rutere intermediare (numite și hop-uri) este mai mare.

Output-ul de mai sus diferă de la caz la caz. În funcție de unde vă aflați în Internet (în ce rețea de ISP – Internet Service Provider) ruterele intermediare vor fi altele.

Vizualizarea unei comunicații DHCP

Pentru interfața eth0 adresa IP a fost obținută prin DHCP. Putem vizualiza acest lucru urmărind fișierele de jurnal

student@uso-demo:~$ sudo grep DHCP /var/log/syslog
[...]
Nov 22 21:23:19 uso-demo networking[241]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
Nov 22 21:23:19 uso-demo networking[241]: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Nov 22 21:23:19 uso-demo networking[241]: DHCPOFFER from 10.0.2.2
Nov 22 21:23:19 uso-demo networking[241]: DHCPACK from 10.0.2.2
[...]

Putem observa din mesaje că la o cerere a stației curente, serverul DHCP (adresa IP 10.0.2.2) i-a oferit adresa IP stației curente pe interfața eth0.

Observăm că serverul DHCP este și gateway-ul rețelei locale. Este uzual ca sistemul care este gateway să ruleze și un server DHCP care să ofere adrese IP în rețeaua locală.

Preambul pentru configurarea accesului la Internet

Pentru exercițiile de configurare care urmează vom folosi interfața eth0. În demo-urile curente interfața eth0 are adresa IP distribuită prin DHCP 10.0.2.15. Pentru configurările statice, vom folosi adresa IP 10.0.2.16.

Înainte de orice configurare vom "curăța" configurația curentă pe interfață prin rularea comenzii ip address flush eth0 (sau forma uzuală ip a f eth0):

student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feea:9b3f/64 scope link
       valid_lft forever preferred_lft forever
student@uso-demo:~$ sudo ip a f eth0
student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff

Observăm că după rularea comenzii sudo ip a f eth0 (este nevoie de permisiuni privilegiate), configurările de adresă IP pe interfața eth0 au dispărut.

Pentru configurarea conexiunii la Internet trebuie să configurăm trei componente:

  1. adresă IP și macă de (sub)rețea
  2. gateway
  3. server DNS

Pentru configurarea serverului de DNS, indiferent de tipul de configurare, trebuie să edităm fișierul /etc/resolv.conf. Dacă dorim să schimbăm conținutul său putem face acest lucru:

student@uso-demo:~$ cat /etc/resolv.conf
nameserver 93.122.135.198
nameserver 62.217.213.71
student@uso-demo:~$ vi /etc/resolv.conf
student@uso-demo:~$ sudo vi /etc/resolv.conf
student@uso-demo:~$ cat /etc/resolv.conf
nameserver 8.8.8.8

În comanda de mai sus am schimbat serverele DNS transmise de ISP-ul din care face parte stația locală în serverele DNS de la Google. Folosim comanda host pentru a verifica funcționarea corectă a serverelor de DNS

student@uso-demo:~$ host ocw.cs.pub.ro
ocw.cs.pub.ro has address 141.85.227.65
ocw.cs.pub.ro mail is handled by 10 ocw.cs.pub.ro.

Configurarea temporară statică a unei interfețe de rețea

Configurarea temporară statică a unei interfețe de rețea se realizează cu ajutorul comenzii ip address (pentru configurarea adresei) și ip route (pentru configurarea gateway-ului). Folosim adresa 10.0.2.16/24 pentru interfața eth0 și adresa 10.0.2.2 (ca și până acum) pentru gateway.

Înainte de configurare curățăm configurația interfeței eth0:

student@uso-demo:~$ sudo ip a f eth0

și verificăm faptul că nu avem configurație activă pe interfața eth0:

student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
student@uso-demo:~$ ip r s
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100

Întrucât totul este OK (nu avem configurație activă), adăugăm adresa 10.0.2.16/24 pe interfața eth0 și adăugăm adresa 10.0.2.2 ca gateway:

student@uso-demo:~$ sudo ip address add 10.0.2.16/24 dev eth0
student@uso-demo:~$ sudo ip link set eth0 up
student@uso-demo:~$ sudo ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.16/24 scope global eth0
       valid_lft forever preferred_lft forever

student@uso-demo:~$ sudo ip route add default via 10.0.2.2
student@uso-demo:~$ ip r s
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.16
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100

Comanda sudo ip link set eth0 up este folosită pentru a garanta că interfața va fi activă.

O greșeală frecventă este omiterea măștii în momentul în care se adaugă o adresa IP. De avut grijă ca masca să fie mereu prezentă la configurarea adresei IP pe o interfață.

O altă greșeală frecventă este omiterea activării interfeței. O interfață permite adăugarea de adrese IP fără a fi activată. Activarea unei interfețe se face cu ajutorul comenzii:

sudo ip link set <ifname> up

unde <ifname> este numele interfeței pe care dorim să o activăm.

Configurările necesită privilegii: fie rulăm ca root fie prefixăm comenzile de configurare cu sudo.

După configurare folosim ping pentru a testa conectivitatea la google.com

student@uso-demo:~$ ping google.com
PING google.com (80.96.255.117) 56(84) bytes of data.
64 bytes from cache.google.com (80.96.255.117): icmp_seq=1 ttl=63 time=48.9 ms
64 bytes from cache.google.com (80.96.255.117): icmp_seq=2 ttl=63 time=35.8 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 35.864/42.422/48.980/6.558 ms

Configurarea temporară dinamică a unei interfețe de rețea

Configurarea dinamică înseamnă interogarea serverului de DHCP al rețelei locale.

Presupunând că am curățat configurația interfeței eth0, configurarea temporară dinamică a interfeței eth0 o realizăm cu ajutorul comenzii

student@uso-demo:~$ sudo dhclient eth0
student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
student@uso-demo:~$ ip r s
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100
student@uso-demo:~$ ping google.com
PING google.com (80.96.255.102) 56(84) bytes of data.
64 bytes from cache.google.com (80.96.255.102): icmp_seq=1 ttl=63 time=37.1 ms
^C
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 37.144/37.144/37.144/0.000 ms

După configurarea temporară de mai sus am afișat configurația curentă și am testat conectivitatea la google.com.

Configurarea persistentă statică a unei interfețe de rețea

Pentru configuarea persistentă, avem nevoie de un fișier de configurare. Pe distribuțiile Debian-based, acest fișier de configuare este /etc/network/interfaces.

În acest fișier modificăm configurația pentru interfața eth0 într-o configurația statică pentru a avea adresa IP 10.0.2.16/24 pe interfața eth0 și gateway-ul 10.0.2.2:

student@uso-demo:~$ cat /etc/network/interfaces
[...]
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
student@uso-demo:~$ sudo vi /etc/network/interfaces
student@uso-demo:~$ cat /etc/network/interfaces
[...]
# The primary network interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
	address 10.0.2.16
	netmask 255.255.255.0
	gateway 10.0.2.2

În configurația de mai sus am precizat că avem o configurație statică (prin folosirea cuvântului static) și am precizat adresa IP, masca de (sub)rețea și gateway-ul. Linia auto eth0 garantează că interfața eth0 va fi configurată la pornirea sistemului.

Pentru a fi siguri că am curățat orie configurație temporară și persistentă pe interfața eth0 rulăm comenzile aferente

student@uso-demo:~$ sudo ip a f eth0
student@uso-demo:~$ sudo ifdown eth0
RTNETLINK answers: No such process
RTNETLINK answers: No such process

Comanda ifdown eth0 este folosită pentru a curăța configurația persistentă pe interfața eth0.

Pentru a activa configurația statică fie repornim mașina virtuală, fie rulăm comanda

student@uso-demo:~$ sudo ifup eth0

Comanda ifup este apelată și la pornirea sistemului pentru a activa interfețele configurate persistent.

După rularea comenzii, verificăm configurația și testăm conectivitatea la Internet

student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.16/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feea:9b3f/64 scope link
       valid_lft forever preferred_lft forever
student@uso-demo:~$ ip r s
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.16
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100

Dacă dorim să curățăm configurația de pe interfață, rulăm comanda

student@uso-demo:~$ sudo ifdown eth0

În urma rulării comenzii de mai sus, configurația pe interfața eth0 dispare

student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
student@uso-demo:~$ ip r s
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100

Configurarea persistentă dinamică a unei interfețe de rețea

Pentru configurarea persistentă dinamică (prin DHCP) folosim, la fel, fișierul /etc/network/interfaces:

student@uso-demo:~$ sudo vi /etc/network/interfaces
student@uso-demo:~$ cat /etc/network/interfaces
[...]
# The primary network interface
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

Prin precizarea liniei iface eth0 inet dhcp precizăm configurația dinamică (prin DHCP).

Înainte de a activa configurația ne asigurăm că am curățat configurațiile temporare și persistente anterioare:

student@uso-demo:~$ sudo ip a f eth0
student@uso-demo:~$ sudo ifdown eth0
ifdown: interface eth0 not configured

Apoi activăm configurația persistentă dinamică

student@uso-demo:~$ sudo ifup eth0
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/08:00:27:ea:9b:3f
Sending on   LPF/eth0/08:00:27:ea:9b:3f
Sending on   Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 10.0.2.15 -- renewal in 38026 seconds.

și verificăm configurația obținută

student@uso-demo:~$ ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ea:9b:3f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
student@uso-demo:~$ ip r s
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.100
student@uso-demo:~$ ping google.com
PING google.com (80.96.255.88) 56(84) bytes of data.
64 bytes from cache.google.com (80.96.255.88): icmp_seq=1 ttl=63 time=47.4 ms
64 bytes from cache.google.com (80.96.255.88): icmp_seq=2 ttl=63 time=35.0 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 35.082/41.277/47.472/6.195 ms

Observăm mai sus procesul DHCP și primirea adresei 10.0.2.15 de la serverul DHCP (cu adresa 10.0.2.2, adică exact gateway-ul).

La fel ca mai sus, dacă dorim să curățăm configurația persistentă curentă, folosim comanda

student@uso-demo:~$ sudo ifdown eth0
Killed old client process
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/08:00:27:ea:9b:3f
Sending on   LPF/eth0/08:00:27:ea:9b:3f
Sending on   Socket/fallback
DHCPRELEASE on eth0 to 10.0.2.2 port 67

Observăm că se anunță serverul DHCP de eliberarea adresei IP curente prin transmiterea unui mesaj de tip DHCPRELEASE.

uso/cursuri/curs-08.1638658671.txt.gz · Last modified: 2021/12/05 00:57 by ebru.resul
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0