Differences

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

Link to this comparison view

uso:laboratoare:laborator-08 [2017/11/15 20:49]
elena.stoican [Resurse laborator]
uso:laboratoare:laborator-08 [2022/11/23 01:24] (current)
liza_elena.babu
Line 1: Line 1:
-====== Laborator 08 - Configurări de rețea ======+====== Laborator 08 - Dezvoltarea aplicațiilor  ​======
  
-===== Suport ​laborator ​=====+{{page>​uso:​laboratoare:​laborator-08:​git-intro&​nofooter&​noeditbutoon}} 
 +{{page>​uso:​laboratoare:​laborator-08:​git-first-commits&​nofooter&​noeditbutoon}} 
 +{{page>​uso:​laboratoare:​laborator-08:​git-branches&​nofooter&​noeditbutoon}} 
 +{{page>​uso:​laboratoare:​laborator-08:​git-first-pull-request&​nofooter&​noeditbutoon}}
  
-  * [[http://​books.google.ro/​books?​id=_JFGzyRxQGcC&​lpg=PP1&​hl=ro&​pg=PA217#​v=onepage&​q&​f=false|8. Configurări de rețea]] 
-  * [[http://​books.google.ro/​books?​id=_JFGzyRxQGcC&​lpg=PP1&​hl=ro&​pg=PA293#​v=onepage&​q&​f=false|10.3.1 Monitorizarea sistemului (Monitorizarea serviciilor de rețea)]] 
-  * [[https://​www.linux.com/​learn/​working-network-configurations-command-line|Linux.com:​ Working with Network Configurations in Command Line]] 
  
-Link-uri utile ''​iproute2'':​+==== Cuprins ====
  
-  * [[http://​baturin.org/​docs/​iproute2/​|Iproute2 docs]] +{{page>​uso:laboratoare:laborator-08:nav&​noheader&​nofooter&​noeditbutton}}
-  * [[http://​www.humbug.in/​2012/​iproute2-primer-for-ifconfig-arp-route-users/​|Iproute2 simple tutorial]] +
-  * [[https://​wiki.gentoo.org/​wiki/​Iproute2|Gentoo Iproute2 docs]] +
-  * [[http://​www.cyberciti.biz/​faq/​linux-ip-command-examples-usage-syntax/​|Linux ip Command Examples]]+
  
-Extra: Motivații pentru care suita ''​ifconfig''​ nu se mai folosește: 
- 
-  * [[https://​www.archlinux.org/​news/​deprecation-of-net-tools/​|''​net-tools''​ has been deprecated]] 
-  * [[http://​www.linuxfoundation.org/​collaborate/​workgroups/​networking/​net-tools|Linux Foundation: Please keep in mind that most net-tools programs are obsolete]] 
-  * [[http://​wiki.centos.org/​Manuals/​ReleaseNotes/​CentOS7|CentOS 7 release notes]]: //Commonly used utilities such as ifconfig/​netstat have been marked as deprecated for some considerable time and the '​net-tools'​ package is no longer part of the @core group so will not be installed by default.// 
- 
-===== Resurse laborator ===== 
- 
-  * [[http://​repository.grid.pub.ro/​cs/​uso/​2015-2016/​lab08/​dvorak.ova|Mașina virtuală ''​dvorak''​]] 
-  * Mașinile virtuale [[http://​repository.grid.pub.ro/​cs/​uso/​2015-2016/​lab08/​vivaldi.ova|''​vivaldi''​]] și [[http://​repository.grid.pub.ro/​cs/​uso/​2015-2016/​lab08/​verdi.ova|''​verdi''​]]. 
- 
- 
-<​note>​ 
-Pentru rezolvarea exercițiilor aveți nevoie de cele trei mașini virtuale ce se găsesesc, pe calculatoarele din EG306 
-pe partiția de 10 GB.  
- 
-Mașinile virtuale se pot descărca și din repository-ul facultății:​ [[http://​repository.grid.pub.ro/​cs/​uso/​2015-2016/​lab08/​]] 
- 
-Credențialele de autentificare pentru toate maşinile virtuale sunt: utilizator ''​student'',​ parola ''​student''​. 
-</​note>​ 
- 
-<note warning> 
-Verificați existența lor pe mașina de lucru in directorul ''/​mnt/​unfrozen/​uso/​mv''​. Dacă nu există, chemați asistentul sau descărcați-le chiar voi pe parcursul demo-ului: 
- 
-<code bash> 
-student@uso:​~$ ls -lah /​mnt/​unfrozen/​uso/​mv 
-</​code>​ 
-</​note>​ 
- 
-====== Demo ====== 
- 
-===== 1. Formatul comenzii ''​ip''​ ===== 
- 
- 
-<note tip> 
-În acest laborator vom folosi suita ''​iproute2'',​ respectiv comanda ''​ip''​. Sintaxa generală este:  
- 
-<code bash> 
-ip OBJECT COMMAND 
-ip [options] OBJECT COMMAND 
-ip OBJECT help 
-</​code>​ 
- 
-Obiectele cu care vom lucra în general la USO sunt:  
- 
-^ OBJECT ​            ^ Forma abreviată ​ ^ Descriere ^ 
-| ''​link'' ​ |  ''​l'' ​ | Network device și stadiul legăturii | 
-| ''​address''​ |  ''​addr''​ sau ''​a'' ​ | adresă IPv4 sau IPv6 | 
-| ''​route''​ |  ''​r'' ​ | Rută (gateway) | 
- 
-Observați că obiectele au și o formă abreviată pentru a ne face comenzile mai scurte. De exemplu comanda ''​ip address show''​ se transformă,​ spre exemplu, în ''​ip a s''​. ​ 
- 
-</​note>​ 
- 
-==== 2. Sumar al comenzilor importante ==== 
- 
-    * Cum adaug o adresă IP pe o interfață?​ 
- 
-<code bash> 
-ip address add 192.168.1.1/​24 dev eth0 
-</​code>​ 
- 
-Pentru modificare se pot folosi ''​{add | change | replace}''​ 
- 
-    * Cum șterg o adresă IP pe o interfață?​ 
-<code bash>ip address del IFADDR dev STRING</​code>​ 
- 
-    * Cum afișez adresa IP a unei interfațe? 
-<code bash> ip address show dev eth0 </​code>​ 
- 
-    * Cum afișez informații despre toate interfețele?​ 
-        * Toate interfețele:​ ''​ip address show''​ 
-        * Doar cele active: ''​ip address show up''​ sau ''​ip link show up''​ 
- 
-    * Cum adaug default gateway? 
-<code bash> ip route add default via 10.10.10.1 </​code>​ 
- 
-    * Cum șterg default gateway? 
-<code bash> ip route delete 10.0.1.0/25 via 10.10.10.1 </​code> ​ 
- 
-    * Cum afișez default gateway-ul? 
-<code bash> ip route show </​code>​ 
- 
-    * Cum actualizez server-ul DNS? 
-        * O variantă: editare ''/​etc/​resolv.conf''​ 
-        * Altă variantă: ''/​etc/​network/​interfaces''​ (pe sisteme Debian-based,​ opțiunea ''​dns-nameservers''​) 
- 
-    * Cum activez o interfață de rețea? 
-<code bash>ip link set eth0 up</​code>​ 
- 
- 
-===== 3. Configurarea rețelei în Linux ===== 
- 
-==== 3.1. Interfețe de rețea ==== 
- 
-Interfețele de rețea reprezintă dispozitivele prin intermediul cărora un host se poate conecta la o rețea de calculatoare. Cele mai întâlnite sunt plăcile de rețea Ethernet care sunt nelipsite din aproape orice calculator. Alte exemple de interfețe de rețea sunt adaptoarele WiFi sau interfețele virtuale care, chiar dacă nu conectează fizic un calculator la o rețea, pot participă la interconectarea calculatoarelor (ex: interfețe folosite în virtualizare sau pentru tunelare). 
- 
-Cel mai simplu mod de a determina interfețele de rețea prezente pe un host este de a rula comanda ''​ip address show'':​ 
- 
-<code bash> 
-student@uso:​~$ ip address show 
-[...] 
-2: eth0: <​BROADCAST,​MULTICAST,​UP,​LOWER_UP>​ mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 
-    link/ether bc:​ae:​c5:​1c:​06:​81 brd ff:​ff:​ff:​ff:​ff:​ff 
-    inet 192.168.1.103/​24 brd 192.168.1.255 scope global eth0 
-       ​valid_lft forever preferred_lft forever 
-    inet6 fe80::​beae:​c5ff:​fe1c:​681/​64 scope link  
-       ​valid_lft forever preferred_lft forever 
-[...] 
-</​code>​ 
- 
-Ce informații (din curs) observați în output-ul de mai sus? 
- 
-Pentru a vedea informații **doar** despre o interfață de rețea: 
- 
-<code bash> 
-student@uso:​~$ ip address show eth0 
-student@uso:​~$ ip address show dev eth0 
-</​code>​ 
- 
-Comanda de mai sus afișează absolut toate interfețele de rețea din sistem (inclusiv cele neconfigurate/​inactive). Pentru a vedea doar interfețele de rețea funcționale (cu legătură activă) folosim comanda: ​ 
- 
-<code bash> 
-student@uso:​~$ ip link show up 
-[...] 
- 
-student@uso:​~$ ip address show up 
-[...] 
-2: eth0: <​BROADCAST,​MULTICAST,​UP,​LOWER_UP>​ mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 
-    link/ether bc:​ae:​c5:​1c:​06:​81 brd ff:​ff:​ff:​ff:​ff:​ff 
-[...] 
-</​code>​ 
- 
-Ce diferență este între output-ul celor două comenzi? Notă: am folosit două obiecte diferite (''​link''​ vs. ''​address''​). ​ 
- 
-Inspectarea tabelei de rutare (pentru gateway) se face folosind: 
- 
-<code bash> 
-student@uso:​~$ ​ ip route show 
-default via 192.168.1.1 dev eth0  proto static ​ 
-192.168.1.0/​24 dev eth0  proto kernel ​ scope link  src 192.168.1.103 ​ metric 1  
-[...] 
-</​code>​ 
- 
-Observați pe a doua linie, prima coloană cum este specificată rețeaua din care face parte gateway-ul. ​ 
- 
- 
-==== 3.2. Configurări temporare ==== 
- 
-Configurările inițiale de rețea ale unei interfețe pot fi modifcate în diferite moduri: prin schimbarea adresei IP și/sau a măștii de rețea, prin schimbarea rutei implicite sau a serverului DNS. Dacă modificările nu persistă după un restart al sistemului spunem că aveam de-a face cu o **//​configurare temporară//​**. 
- 
-Acest tip de configurare este util în momentul în care se experimentează cu diferite opțiuni sau atunci când apare o situație neobișnuită și configurarea implicită a interfețelor trebuie schimbată, de exemplu, dacă gateway-ul obișnuit (provider-ul de Internet) este inaccesibil temporar și avem la dispoziție un gateway alternativ (conexiunea 3G) am dori să schimbăm ruta implicită (//default gateway//) pentru a restabili conexiunea cu Internetul. 
- 
-=== 3.2.1 Statice === 
- 
-Sintaxa generală folosind iproute2 este: 
- 
-<code bash> 
-ip address add {ip_addr/​mask} dev {interface} 
-</​code>​ 
- 
-Pentru a configura static și temporar interfața ''​eth0''​ cu adresa ''​192.168.1.12''​ și masca de rețea ''​24''​ (''​255.255.255.0''​) folosim comanda următoare: 
- 
-<code bash> 
-student@uso:​~$ sudo ip address add 192.168.1.12/​24 dev eth0 
-</​code>​ 
- 
-<note important>​ 
-Observați că modificarea configurației unei interfețe trebuie făcută ca root prin prefixarea comenzii cu ''​sudo'',​ în vreme ce pentru inspectarea configurațiilor o puteam face și fără privilegii. 
-</​note>​ 
- 
- 
-O altă comandă care poate fi folosită pentru configurări temporare este ''​route''​. Cu ajutorul acesteia putem modifica //default gateway// (ruta implicită) a unei rețele astfel: 
- 
-<​code>​ 
-student@uso:​~$ sudo ip route add default via 192.168.2.2 
-</​code>​ 
- 
-<note important>​ 
-Se observă că și modificarea //default gateway// necesită privilegii de root și trebuie prefixată cu ''​sudo''​. 
-</​note>​ 
- 
-<note warning> 
- 
-Un //default gateway// trebuie să se afle întotdeauna în aceeași rețea cu host-ul. Cu alte cuvinte ambele trebuie să aibă aceeași mască de rețea. În caz contrar se va obține un mesaj de eroare care ne atenționeză că rețeaua gateway-ului nu este accesibilă:​ 
- 
-<​code>​ 
-student@uso:​~$ sudo ip route add 192.168.1.0/​24 via 10.0.0.15 
-RTNETLINK answers: Network is unreachable 
-</​code>​ 
-</​note>​ 
- 
-=== 3.2.2 Dinamice === 
- 
-Spre deosebire de comenzile anterioare, care foloseau valori statice (constante) pentru parametrii de configurare,​ o configurare dinamică presupune că aceste valori se determină automat prin diferite mecanisme. Un astfel de mecanism este protocolul //DHCP// (//Dynamic Host Configuration Protocol//​). Configurarea automată a unei interfețe de rețea prin DHCP poate fi făcută cu utilitarul ''​dhclient''​. Acesta primește ca parametru numele interfeței care se vrea a fi configurată:​ 
- 
-<​code>​ 
-student@uso:​~$ sudo dhclient eth0 
-</​code>​ 
- 
-Configurările obișnuite care se obțin prin DHCP sunt: adresa IP și masca de rețea, //default gateway//, precum și server DNS. 
- 
-==== 3.3. Configurări permanente ==== 
- 
-Configurarea permanentă presupune că setările interfețelor de rețea vor fi disponibile și după un restart al sistemului. Acest efect se obțiune prin salvarea configurațiilor în cadrul unor fișiere. Sistemele bazate pe Ubuntu/​Debian folosesc în mod convențional fișierul ''/​etc/​network/​interfaces''​ pentru salvarea configurațiilor de adresă IP, mască de rețea și //default gateway// ​ și fișierul ''/​etc/​resolv.conf''​ pentru salvarea adresei serverului DNS. 
- 
-<note important>​ 
-Pentru a activa o configurație persistentă a unei interfețe folosim comanda 
-<​code>​ 
-sudo ifup <​INTERFACE_NAME>​ 
-</​code>​ 
-unde ''<​INTERFACE_NAME>''​ este numele interfeței. De exemplu, pentru a activa o configurație persistentă a interfeței ''​eth0''​ folosimd comanda 
-<​code>​ 
-sudo ifup eth0 
-</​code>​ 
- 
-La fel, pentru dezactivarea unei configurații persisente a unei interfețe folosim comanda 
-<​code>​ 
-sudo ifup <​INTERFACE_NAME>​ 
-</​code>​ 
-</​note>​ 
- 
-<​note>​ 
-Pe unele sisteme Linux configurarea interfețelor de rețea este administrată de un serviciu de background numit //​NetworkManager//​. Acest daemon ne oferă o configurare facilă a interfețelor de rețea, în special a adaptoarelor WiFi și a diferitelor modem-uri 3G/4G. Este posibil însă ca el să interfereze cu modul convențional de configurare a interfețelor:​ comenzi temporare și fișiere de configurare. Acesta poate fi oprit, în caz de probleme, prin comanda: ​ 
- 
-<code bash> 
-student@uso:​~$ sudo service network-manager stop 
-</​code>​ 
- 
-</​note>​ 
- 
-=== 3.3.1. Statice === 
- 
-Pentru a configura o interfață în mod permanent, static, trebuie să adăugăm în fișierul ''/​etc/​network/​interfaces''​ o intrare similară cu: 
- 
-<​code>​ 
-auto eth0 
-iface eth0 inet static 
-    address 192.168.0.2 
-    netmask 255.255.255.0 
-    gateway 192.168.0.1 
-</​code>​ 
- 
-Linia ''​iface eth0 inet static''​ specifică interfața de configurat (''​eth0''​) și metoda de configurare (statică), linia ''​address 192.168.0.2''​ specifică adresa pe care sa o primească interfața, linia ''​netmask 255.255.255.0.''​ specifică ce mască de rețea să primească interfața, iar linia ''​gateway 192.168.0.1''​ specifică care este adresa default gateway-ului. 
- 
-Ștergerea completă și sigură a configurațiilor interfeței se face folosind perechea de comenzi 
-<​code>​ 
-sudo ip address flush dev eth0 
-sudo ip link set dev eth0 down 
-</​code>​ 
- 
-<​code>​ 
-student@uso:​~$ ip address show 
-lo        Link encap:Local Loopback  ​ 
-          inet addr:​127.0.0.1 ​ Mask:​255.0.0.0 
-          [...] 
-          ​ 
-student@uso:​~$ ip route show 
- 
-student@uso:​~$ sudo ip link set dev eth0 up 
- 
-student@uso:​~$ ​ ip address show          
-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 
-[...] 
-2: eth0: <​BROADCAST,​MULTICAST,​UP,​LOWER_UP>​ mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 
-    link/ether bc:​ae:​c5:​1c:​06:​81 brd ff:​ff:​ff:​ff:​ff:​ff 
-    inet 192.168.0.2/​24 brd 192.168.0.255 scope global eth0 
-[...] 
- 
- 
-student@uso:​~$ ip route show 
-default via 192.168.0.1 ​ dev eth0  proto static ​ 
-192.168.1.0/​24 dev eth0  proto kernel ​ scope link  src 192.168.0.2 ​ metric 1  
- 
-student@uso:​~$ sudo ip link set dev eth0 down 
-student@uso:​~$ ip address show up 
-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 
-[...] 
- 
-</​code>​ 
- 
-Pentru a configura un server DNS, lucru posibil doar în mod permanent, trebuie să adăugăm în fișierul ''/​etc/​resolv.conf''​ o linie de forma: 
- 
-<​code>​ 
-nameserver 8.8.8.8 
-</​code>​ 
- 
-Linia conține cuvântul cheie ''​nameserver''​ și adresa acestuia. ​ 
- 
-<note tip> 
-''​8.8.8.8''​ și ''​8.8.4.4''​ sunt două server-e DNS publice puse la dispoziție de către Google. 
-</​note>​ 
- 
-=== 3.3.2. Dinamice === 
- 
-Pentru a configura o interfață în mod permanent, dinamic, trebuie să adăugăm în fișierul ''/​etc/​network/​interfaces''​ o intrare de forma: 
- 
-<​code>​ 
-auto eth0 
-iface eth0 inet dhcp 
-</​code>​ 
- 
-Linia specifică numele interfeței ce vrem să o configurăm (''​eth0''​) și tipul de configurare (dinamică, prin DHCP). Le fel ca înainte pentru a activa sau dezactiva configurarea folosim comenzile ''​ifup'',​ respectiv ''​ifdown'',​ urmate de numele interfeței. 
- 
- 
-<note tip>O documentație completă a sintaxei fișierului de configurare ''/​etc/​network/​interfaces''​ se găsește pe [[https://​wiki.debian.org/​NetworkConfiguration|wiki-ul Debian]]. 
- 
-Rețineți că acest fișier îl găsiți doar pe distribuții derivate din Debian: Debian, Ubuntu, Linux Mint etc. Pe distribuții precum Fedora sau Arch Linux există alte abordări. ​ 
-</​note>​ 
-==== 4. Comenzi de verificare ==== 
- 
-Sunt trei comenzi foarte importante pentru verificarea permanentă a configurațiilor de rețea: 
- 
-  * Afișarea tuturor interfețelor 
- 
-<code bash> 
-ip addr show 
-</​code>​ 
- 
-  * Afișarea tuturor interfețelor **active** (în starea **LINK UP**) 
- 
-<code bash> 
-ip link show 
-</​code>​ 
- 
-  * Afișarea tabelei de rutare (e.g. pentru default gateway) 
- 
-<code bash> 
-ip route show 
-</​code>​ 
- 
-<note tip>​Prima formă de troubleshooting când ceva nu merge este afișarea tabelei de rutare (''​**ip route show**''​ sau prescurtat ''​**ip r s**''​). Acolo vedem majoritatea celor mai frecvente greșeli: ​ 
-  * omiterea ridicării interfeței 
-  * folosirea unei adrese greșite ​ 
-  * folosirea unei măști greșite 
-  * omiterea configurării default gateway-ului 
-  * folosirea unui gateway greșit 
-</​note>​ 
- 
-==== 5. Calculul adresei de rețea. Calculul adresei de broadcast ==== 
-<note important>​ 
-**Calculul adresei de rețea.** 
-Fie stația cu adresa IP 192.168.0.1 și masca de subrețea 255.255.0.0(/​16). 
-{{:​uso:​laboratoare:​screen_shot_2017-11-15_at_14.54.52.png?​600|}} 
-</​note>​ 
- 
-<note important>​ 
-**Calculul adresei de broadcast** 
-Fie stația cu adresa IP 192.168.0.1 și masca de subrețea 255.255.0.0(/​16). 
-{{:​uso:​laboratoare:​calcul_broadcast.png?​600|}} 
-</​note>​ 
- 
-====== Exerciții ====== 
- 
-<note warning> 
-La fiecare exercițiu citiți cu atenție care parte a exercițiului trebuie rezolvată **pe mașina fizică**, care trebuie rezolvată pe mașina virtuală **dvorak**, **vivaldi** sau **verdi**. ​ 
- 
-Credențialele de autentificare pentru toate maşinile virtuale sunt: utilizator ''​student'',​ parola ''​student''​. 
-</​note>​ 
- 
-<note tip> 
-Mai jos sunt indicații generale, nu rulați aceste comenzi, țineți cont de ele pentru mai târziu. 
- 
-Dezactivarea/​deconfigurarea completă a unei interfețe, utilă pentru orice configurare de la zero (dinamică sau statică, temporară sau permanentă) se face cu ajutorul comenzilor: 
- 
-<code bash> 
-sudo ip address flush dev <​INTERFACE_NAME>​ 
-sudo ip link set dev <​INTERFACE_NAME>​ down 
-</​code>​ 
- 
-unde ''<​INTERFACE_NAME>''​ este numele interfeței. De exemplu, dacă dorim să dezactivăm complet interfața ''​eth0''​ vom folosi comenzile 
-<code bash> 
-sudo ip address flush dev eth0 
-sudo ip link set dev eth0 down 
-</​code>​ 
- 
-E recomandat **să executați aceste comenzi** înainte de a vă apuca efectiv de exercițiile de configurare **pe orice interfață** ​ 
-</​note>​ 
- 
-<note warning> 
-Dacă pe parcursul laboratorului,​ primiți mesaje de forma: 
-<​code>​ 
-sudo: unable to resolve host ... 
-</​code>​ 
-ignorați-le. Sunt niște avertismente ale comenzii ''​sudo''​ care nu au afectează de fapt comanda rulată. Comanda a rulat cu succes dacă vă apare **doar** un mesaj precum cel de mai sus. 
-</​note>​ 
- 
-<note important>​ 
-Orice configurare care necesită editarea unui fișier se va face folosind ''​**vim**''​ (sau ''​nano''​ dacă vă e mult mai ușor așa). Configurările făcute în editoare GUI nu vor fi punctate. 
-</​note>​ 
- 
-<​hidden>​ 
-Puneți accentul pe a citi enunțul ca să nu se apuce să rezolve exercițiile pe mașina greșită. De asemenea, comenzile ip a f dev eth0 si ip l set dev eth0 down **TREBUIE MEREU EXECUTATE DE STUDENTI LA INCEPUTUL UNUI EXERCITIU**. 
- 
-**INSISTAȚI VĂ IMPLOR**: să facă configurările în VIM (sau hai NANO dacă nu vor vim deloc). ​ 
- 
-</​hidden>​ 
- 
-==== 1. Pregătirea setup-ului (1.5p) ==== 
- 
-<note warning>​De rezolvarea acestui exercițiu depind toate celelalte. Chemați asistentul de fiecare dată când întâmpinați probleme majore. La final asigurați-vă,​ pentru o bună funcționare a calculatoarelor,​ că cele trei mașini virtuale au 256 MB RAM. </​note>​ 
- 
-Deschideți VirtualBox și importați cele **trei fișiere ''​.ova''​**. ​ 
- 
-<note important>​ 
-**Atenție**:​ când importați mașina în VirtualBox, să bifați opțiunea **//​Reinitialize the MAC address of all network cards//**! 
-</​note>​ 
- 
- 
-De asemenea, pentru mașina virtuală ''​dvorak''​ avem nevoie de o [[https://​www.virtualbox.org/​manual/​ch06.html#​network_hostonly|interfață host-only]]. E posibil ca atunci când importăm mașina virtuală să primim eroarea ''​Invalid settings detected''​. Soluția este că trebuie să adăugăm o interfață virtuală de rețea care să conecteze mașina fizică de cea virtuală. Din VirtualBox mergem la ''​File''​ --> ''​Preferences''​ --> ''​Network''​. Mergem la tab-ul ''​Host-only Networks''​ și apăsăm butonul de ''​add''​. Urmăriți detalii din poza de mai jos: 
- 
-{{http://​ocw.cs.pub.ro/​courses/​_media/​uso/​laboratoare/​3dxym.png?​direct&​500|}} 
- 
-Porniți mașinile virtuale. După ce le porniți, observați că pe sistemul fizic aveți configurată acum interfața ''​vboxnext0''​. Inspectați informațiile despre aceasta **pe sistemul fizic**: 
- 
-<code bash> 
-student@uso:​~$ ip address show dev vboxnet0 
-</​code>​ 
- 
-<note important>​ 
-Notați adresa IP și masca de rețea. Vom avea nevoie de acestea. 
-</​note>​ 
- 
-Interfața ''​vboxnet0''​ de pe sistemul fizic este conectată cu interfața ''​eth1''​ a fiecărei mașini virtuale. Pentru a vă putea conecta prin SSH pe o mașină virtuală veți folosi de pe sistemul fizic o comandă de forma 
-<​code>​ 
-ssh student@<​adresa_IP_VM_eth1>​ 
-</​code>​ 
-unde ''<​adresa_IP_VM_eth1>''​ este adresa IP de pe interfața ''​eth1''​ a mașinii virtuale. 
-==== 2. Configurare dinamică temporară (0.5p) ==== 
- 
-<note important>​Exercițiul are loc pe mașina virtuală **vivaldi**. </​note>​ 
- 
-**Pe mașina virtuală ''​vivaldi''​** configurați interfața ''​eth0''​ în mod dinamic, temporar. ​ 
- 
-După ce ați observat că ping-ul funcționează corect, afișați tabela de routare. Identificați **default gateway**. Testați conectivitatea către gateway, respectiv către ''​8.8.8.8''​. Testați conectivitatea la Internet (către ''​google.com''​). ​ 
- 
- 
-După ce ați demonstrat asistentului că aveți conectivitate la internet resetați mașina (comanda ''​sudo reboot''​) mașina și rulați comanda ''​ping google.com''​ din nou. Observați că după reboot nu mai avem conectivitate la internet. Afișați din nou tabela de routare. 
- 
-<note tip>​Prima formă de troubleshooting când ceva nu merge este afișarea tabelei de rutare (''​ip route show''​). Acolo vedem majoritatea greșelilor de configurare: ​ 
- 
-  * omiterea ridicării interfeței 
-  * folosirea unei adrese greșite 
-  * folosirea unei măști greșite 
-  * omiterea configurării default gateway-ului 
-  * folosirea unui gateway greșit. 
- 
-De asemenea, conectivitatea trebuie testată între host și gateway (validarea link-ului către gateway), între host și un IP din Internet (validarea configurărilor de rețea: IP + default gateway) și între host și o adresă web (validarea configurărilor de DNS) 
-</​note>​ 
- 
-<​hidden>​ 
-Nu mai merge ''​sudo service networking restart'',​ si nici ''​sudo service network-manager restart''​ în Ubuntu 14.04. Dacă găsiți o variantă mai elegantă, fără reboot, vă rog sa mă anunțați. 
-</​hidden>​ 
- 
-<​solution>​ 
-<​code>​ 
-student@vivaldi:​~$ sudo dhclient eth0 
-student@vivaldi:​~$ ping -c 2 google.com 
-</​code>​ 
-</​solution>​ 
- 
-==== 3. Configurare statică temporară (0.5p) ==== 
- 
-Inspectați configurațiile de rețea a interfeței ''​vboxnet0''​ **de pe mașina fizică**. ​ 
- 
-<​solution>​ 
-<code bash> 
-ip addr show dev vboxnet0 
-</​code>​ 
-</​solution>​ 
- 
-<note important>​ 
-Exercițiul are loc pe mașina virtuală **dvorak**. 
-</​note>​ 
- 
-Rulați comenzile de ștergere a configurațiilor de pe interfața ''​eth1''​. 
- 
-<note tip> 
-Este posibil să fie deja șterse configurațiile pe interfața ''​eth1'',​ caz în care nu mai trebuie să faceți nimic. 
-</​note>​ 
- 
-<​solution>​ 
-<code bash> 
-sudo ip addr flush dev eth1 
-sudo ip link set dev eth1 down 
-</​code>​ 
-</​solution>​ 
- 
-Apoi, configurați pe interfața de rețea ''​eth1''​ a mașinii virtuale **dvorak** o adresă asignabilă din spațiul adresei IP+netmask ale interfeței ''​vboxnet0''​ de pe mașina fizică. Apoi //​ridicați//​ interfața de rețea. 
- 
-<note tip> 
-Adică dacă adresa IP a interfeței ''​vboxnet0''​ a **sistemului fizic** este ''​192.168.56.1'',​ puneți adresa IP ''​192.168.56.2/​24''​ pe interfața ''​eth1''​ a mașinii virtuale **dvorak**. 
-</​note>​ 
- 
-<note important>​ 
-Dupa ce ati realizat configuratia,​ trebuie sa faceti bring-up interfetei ''​eth1''​ astfel (verificati apoi ca are stadiul link up si IP configurat):​ 
- 
-<code bash> 
-student@dvorak:​~$ sudo ip link set dev eth1 up 
-</​code>​ 
- 
-</​note>​ 
- 
-Testați conectivitatea cu ''​vboxnet0''​ (dați ''​ping''​ în adresa IP de pe aceasta). 
- 
-<note important>​ 
-Nu reporniți mașina virtuală și nu ștergeți configurația de pe ''​eth1''​.. 
-</​note>​ 
- 
-<​solution>​ 
-Se ruleaza urmatoarele comenzi autentificat ca ''​root''​ (sau prefixate cu ''​sudo''​) 
-<code bash> 
-ip addr add 192.168.56.101/​24 dev eth1 
-ip link set dev eth1 up 
-</​code>​ 
-</​solution>​ 
-==== 4. ssh via host-only (0.5p) ==== 
- 
-<note important>​Exercițiul are loc pe mașina virtuală ''​**dvorak**''</​note>​ 
- 
-O altă metodă de a testa conectivitatea de la punctul anterior este de a face ''​ssh''​ în mașina virtuală ''​dvorak''​. Pentru aceasta avem nevoie de IP-ul de pe ''​eth1''​. Testați legătura dintre mașina fizică și mașina virtuală ''​dvorak''​ autentificându-vă prin ''​ssh''​ ca ''​student''​ și folosind ca host adresa IP de pe ''​eth1''​. ​ 
- 
-==== 5. Configurare statică temporară completă (2p) ==== 
- 
-<note important>​ 
-Exercițiul are loc pe mașina virtuală ''​**dvorak**''​. 
-</​note>​ 
- 
-Configurați interfața de rețea ''​eth0''​ de pe ''​dvorak''​ static cu adresa ip ''​10.0.2.15/​24''​. Ridicați interfața. Testați conectivitatea la internet: ''​ping google.com''​. Observați că nu funcționează! Mai avem nevoie de //default gateway// și de DNS.  
- 
-Adăugați o rută implicită (''​default''​) prin adresa IP ''​10.0.2.2''​. Apoi configurați ca server DNS ''​8.8.4.4''​. Testați din nou conectivitatea la internet: ''​ping google.com''​. ​ 
- 
-<​solution>​ 
-<code bash> 
-student@dvorak:​~$ sudo ip address add 10.0.2.15/​24 dev eth0 
-student@dvorak:​~$ sudo ip link set dev eth0 up 
-student@dvorak:​~$ sudo ip route add default via 10.0.2.2 
-student@dvorak:​~$ sudo su -  
-root@dvorak ~ % echo "​nameserver 8.8.8.8"​ > /​etc/​resolv.conf 
-root@dvorak ~ % exit 
-student@dvorak:​~$ ping -c 2 www.google.com 
-</​code>​ 
-</​solution>​ 
- 
-==== 6. Configurare permanentă pe sistem (2.5p) ==== 
- 
-<note important>​Exercițiul se desfășoară pe mașina virtuală ''​**dvorak**''</​note>​ 
- 
-**[1p]** Configurați //dinamic, permanent//,​ interfața ''​eth0''​ de pe ''​dvorak''​. Activați interfața și testați conectivitatea la Internet cu comanda ''​ping google.com''​. 
- 
-<note warning> 
-Rețineți să activați interfața după ce ați făcut configurările. Ele ar putea fi corecte dar interfața să fie doar inactivă. Comenzile pentru activarea/​dezactivarea unei intefețe sunt ''​ip link set dev IFNAME up''/''​ip link set dev IFNAME down''​. 
-</​note>​ 
- 
-<​solution>​ 
-<​code>​ 
-student@dvorak:​~$ sudo su 
-root@dvorak:/​home/​student#​ echo -e "​\niface eth0 inet dhcp" >> /​etc/​network/​interfaces 
-root@dvorak:/​home/​student#​ exit 
-student@dvorak:​~$ sudo ip link set dev eth0 up 
-student@dvorak:​~$ ping google.com 
-</​code>​ 
-</​solution>​ 
- 
-**[1p]** Configurați //static, permanent//,​ interfața ''​eth1''​ cu adresa IP și masca de rețea folosite la exercițiul 3. Testați conectivitatea dând ''​ping''​ către IP-ul interfeței ''​vboxnet0''​ de pe mașina fizică. 
- 
-<note important>​ 
-Când configurați //static, permanent// interfața ''​eth1'',​ **NU** configurați și ''​gateway''​. Gateway-ul este configurat din interfața ''​eth0''​ și nu mai trebuie să îl configurați aici. 
-</​note>​ 
- 
-După ce ați făcut ambele configurații restartați mașina virtuală ''​dvorak''​ și re-verificați configurațiile de pe ''​eth0''​ și ''​eth1''​ precum și conectivitatea la internet și către mașina fizică prin ''​vboxnet0''​. ​ 
- 
-<​solution>​ 
- 
-Trebuie in fisierul ''/​etc/​network/​interfaces''​ de pe masina ''​dvorak''​ linii de forma 
- 
-<code bash> 
-auto eth1 
-iface eth1 inet static 
-        address 192.168.56.101 
-        netmask 255.255.255.0 
-</​code>​ 
- 
-Reluarea configuratiilor se poate face fara reboot ruland comanda: 
- 
-<code bash> 
-sudo service networking restart 
-</​code>​ 
- 
-</​solution>​ 
- 
-**[0.5p]** Afișați configurațiile DNS obținute de către mașina virtuală după reboot. ​ 
- 
-<​solution>​ 
-<code bash> 
-cat /​etc/​resolv.conf 
-</​code>​ 
-</​solution>​ 
- 
-<note tip>​Întotdeauna după configurări de rețea realizate prin fișiere trebuie făcute două lucruri: 
-  * restartarea serviciului de networking (''​sudo service networking restart''​) sau reboot la mașină dacă acest restart nu funcționează 
-  * validarea configurațiilor,​ afișând informații despre interfețe, tabela de routare și stadiul link-urilor:​ 
- 
-<code bash> 
-student@uso:​~$ ip addr show 
-student@uso:​~$ ip route show 
-student@uso:​~$ ip link show 
-</​code>​ 
-</​note>​ 
-==== 7. Probleme de configurare (2.5p) ==== 
- 
-<note important>​Exercițiul se desfășoară pe mașinile virtuale ''​**verdi**''​ și ''​**vivaldi**''</​note>​ 
- 
-<note warning>​**Aveți în vedere că prima adresă dintr-o rețea(adresa rețelei) și ultima adresă dintr-o rețea(adresa de broadcast) NU pot fi asignate stațiilor!**</​note>​ 
- 
-<note tip>​Pentru rețeau 192.168.0.0/​24,​ prima adresă configurabilă este 192.168.0.1,​ iar ultima adresă configurabilă este 192.168.0.254 .</​note>​ 
- 
-Ambele mașini virtuale ''​**verdi**''​ și ''​**vivaldi**''​ mai au o interfață de rețea, ''​eth1''​. Scopul nostru este ca ele să poată comunica între ele prin această interfață (cum fac ''​dvorak''​ cu mașina fizică prin interfața host-only). ​ 
- 
-Considerând că IP_A este adresa IP a interfeței ''​eth1''​ de pe mașina ''​vivaldi''​ și IP_B este adresa IP a interfeței ''​eth1''​ de pe mașina ''​verdi'',​ dorim să putem da ping de pe o mașină pe alta: de pe ''​vivaldi''​ să rulăm ''​ping IP_B''​ și de pe ''​verdi''​ să rulăm ''​ping IP_A''​. Din păcate aceste interfețe sunt configurate greșit, și nu pot comunica între ele. Reparați greșeala de configurare astfel încât să meargă cele două comenzi ''​ping''​. ​ 
- 
-<note tip>​Ambele interfețe sunt configurate în mod static, permanent. Pentru ca mașinile să poată comunica între ele prin interfețele ''​eth1''​ trebuie ca acestea să aibă IP-uri din aceeași rețea. 
-</​note>​ 
- 
-<note tip> 
-După ce schimbați configurația unei interfețe, dezactivați-o si reactivați-o pentru a încărca noile configurații. 
-</​note>​ 
- 
-<​solution>​ 
- 
-Pe ''​verdi'':​ 
-<code bash> 
-root@verdi:​~#​ ip link set dev eth1 down 
-root@verdi:​~#​ ip addr add 192.168.50.1/​23 dev eth1 
-root@verdi:​~#​ ip link set dev eth1 up 
-</​code>​ 
- 
-Pe ''​vivaldi'':​ 
- 
-<code bash> 
-root@verdi:​~#​ ip link set dev eth1 down 
-root@verdi:​~#​ ip addr add 192.168.51.254/​23 dev eth1 
-root@verdi:​~#​ ip link set dev eth1 up 
-</​code>​ 
- 
-</​solution>​ 
-==== Bonus 1. Asocierea unui nume cu un IP (1 karma WoUSO) ==== 
- 
-**Pe mașina ''​verdi''​** faceți configurările necesare în fișierul ''/​etc/​hosts''​ astfel încât să vă puteți conecta prin ssh la mașina virtuală ''​vivaldi''​ prin comanda ''​ssh student@antonio.vivaldi''​ (în loc să specificați adresa IP a mașinii scrieți numele ''​antonio.vivaldi''​). 
- 
-<​solution>​ 
-<​code>​ 
-student@lab8-vm-B:​~$ sudo su 
-root@lab8-vm-B:/​home/​student#​ echo "IP_A antonio.vivaldi"​ >> /etc/hosts 
-</​code>​ 
- 
-unde IP este IP-ul mașinii ''​vivaldi''​ de pe ''​eth1''​ 
-</​solution>​ 
- 
-==== Bonus 2. Nsswitch (2 karma WoUSO) ==== 
- 
-**Pe mașina fizică** verificați că ''​ping google.com''​ merge. Adăugați linia ''​1.2.3.4 google.com''​ în fișierul ''/​etc/​hosts''​. Rulați ''​ping google.com''​. Nu mai merge. Fără a mai modifica fișierul ''/​etc/​hosts'',​ faceți configurările necesare astfel încât să meargă din nou comanda ''​ping google.com''​ 
- 
-<note tip> 
-Căutați în browser pe google.ro ''​linux change dns search order''​. Hint: ''​nsswitch''​. ​ 
-</​note>​ 
- 
-<​solution>​ 
-<​code>​ 
-student@uso:​~$ ping -c 1 google.com 
-student@uso:​~$ sudo su 
-root@uso:/​home/​student#​ echo "​1.2.3.4 google.com"​ >>/​etc/​hosts 
-root@uso:/​home/​student#​ exit 
-student@uso:​~$ ping -c 1 google.com 
-student@uso:​~$ sudo sed -i '​s/​hosts:​\( *\)files/​hosts:​\1/​g'​ /​etc/​nsswitch.conf 
-student@uso:​~$ ping -c 1 google.com 
-</​code>​ 
-</​solution>​ 
uso/laboratoare/laborator-08.1510771764.txt.gz · Last modified: 2017/11/15 20:49 by elena.stoican
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