This shows you the differences between two versions of the page.
uso:laboratoare:new:08-net:need-to-know [2018/11/20 19:57] razvan.deaconescu created |
uso:laboratoare:new:08-net:need-to-know [2018/11/26 09:36] (current) liza_elena.babu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Need to Know ===== | ===== Need to Know ===== | ||
+ | |||
+ | Pe parcursul acestei secțiuni și a următoarelor vom folosi următoarele termene pentru a identifica sistemul pe care rulăm comenzi: | ||
+ | * **sistemul fizic** sau **mașina fizică** sau **stația locală** se referă la sistemul din laborator | ||
+ | * **sistemul ''tom''** sau **mașina virtuală ''tom''** se referă la mașina virtuală ''tom'' | ||
+ | * **sistemul ''tom''** sau **mașina virtuală ''jerry''** se referă la mașina virtuală ''jerry'' | ||
+ | |||
+ | ==== 1. Dezactivare interfețe. DHCP ==== | ||
+ | |||
+ | Sunt situații în care am realizat o configurare greșită și vrem să dezactivăm acea configurare de pe o interfață. În mod normal, resetarea completă a configurației unei interfețe presupune doi pași: | ||
+ | * eliberarea (//flush//) configurației acelei interfețe | ||
+ | * dezactivarea acelei interfețe | ||
+ | |||
+ | <note important> | ||
+ | **Nu** rulați comenzile de mai jos pe o conexiune SSH pe mașina virtuală ''tom''. Vă veți dezactiva legătura fizică și veți pierde și conexiune SSH. Rulați comenzile direct în interfața CLI (alb pe negru) a aplicației VirtualBox. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Dacă vă rămâne o conexiune SSH "agățată" (nu mai primește comenzi) înseamnă că s-a pierdut conexiunea și terminalul rămâne blocat. Pentru a debloca terminalul folosiți secvența ''%%<Enter> ~ .%%'', adică apăsați pe rând tasta //Enter>// apoi tasta //tildă// (''%%~%%'') apoi tasta //punct// (''%%.%%'') | ||
+ | |||
+ | Vedeți și răspunsul de [[https://askubuntu.com/a/29952|aici]]. | ||
+ | </note> | ||
+ | |||
+ | Mai jos eliberăm și dezactivăm interfața ''enp0s8'' de pe mașina virtuală ''tom'': | ||
+ | <code bash> | ||
+ | student@tom:~$ ip a s enp0s8 | ||
+ | 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | ||
+ | link/ether 08:00:27:71:db:21 brd ff:ff:ff:ff:ff:ff | ||
+ | inet 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8 | ||
+ | valid_lft forever preferred_lft forever | ||
+ | inet6 fe80::a00:27ff:fe71:db21/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | student@tom:~$ sudo ip address flush enp0s8 | ||
+ | [sudo] password for student: | ||
+ | student@tom:~$ sudo ip link set dev enp0s8 down | ||
+ | student@tom:~$ ip a s enp0s8 | ||
+ | 3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 | ||
+ | link/ether 08:00:27:71:db:21 brd ff:ff:ff:ff:ff:ff | ||
+ | </code> | ||
+ | |||
+ | Mai sus am folosit: | ||
+ | * comanda ''ip a s enp0s8'' ca să vedem starea interfeței. La început are adresă IP și este activată (''state UP''). La sfârșit nu are adresă IP și este dezactivată (''state DOWN''). | ||
+ | * comanda ''ip address flush enp0s8'' ca să eliberăm (//flush//) configurația interfeței | ||
+ | * comanda ''ip link set dev enp0s8 down'' ca să dezactivăm interfața | ||
+ | |||
+ | **[1a]** Folosiți comanda ''dhclient'' pentru a reface configurația de rețea pe interfața ''enp0s8'' pe mașina virtuală ''tom''. Verificați folosind ''ping'' de pe sistemul fizic. | ||
+ | |||
+ | **[1b]** Dezactivați configurația interfeței ''enp0s8'' de pe mașina virtuală ''jerry''. | ||
+ | |||
+ | **[1c]** Folosiți comanda ''dhclient'' pentru a reface configurația de rețea pe interfața ''enp0s8'' pe mașina virtuală ''jerry''. Verificați folosind ''ping'' de pe sistemul fizic și de pe mașina virtuală ''tom'', | ||
+ | ==== 2. SSH ==== | ||
+ | |||
+ | <note> | ||
+ | Această secțiune recapitulează noțiuni și comenzi din secțiunea Basics pe care vrem să le exersăm. | ||
+ | </note> | ||
+ | |||
+ | Folosim protocolul SSH și comanda ''ssh'' pentru a ne conecta la distanță, folosind o comandă de forma: | ||
+ | <code> | ||
+ | ssh <username>@<hostname> | ||
+ | </code> | ||
+ | unde ''%%<username>%%'' este numele de utilizator iar ''%%<hostname>%%'' este numele de stație (sau adresa IP) a stației la care vrem să ne conectăm. | ||
+ | |||
+ | **[2a]** Realizați, prin SSH, folosind comanda ''ssh'' toate formele de conexiune (6 în total) între sistemul fizic, mașina virtuală ''tom'' și mașina virtuală ''jerry''. | ||
+ | |||
+ | **[2b]** Conectați-vă la sistemul unui coleg din stânga sau dreapta voastră, după ce îl întrebați de adresa sa IP. | ||
+ | |||
+ | **[2c]** Conectați-va la sistemul ''fep.grid.pub.ro'' folosind numele de utilizator de pe [[http://acs.curs.pub.ro|acs.curs.pub.ro]] și parola de acolo. | ||
+ | |||
+ | ==== 3. scp ==== | ||
+ | |||
+ | Utilitarul ''scp'' (secure copy) este folosit pentru a copia fișiere de pe o stație pe alta în mod sigur folosind protocolul SSH. Există și alte utilitare cu care putem face acest lucru, însă aceasta are avantajul că datele sunt transmise sigur, folosind ''ssh''. | ||
+ | |||
+ | ''scp'' are o sintaxă asemănătoare cu ''cp'', și anume ''scp sursă destinație''. Folosind ''scp'' putem copia fișiere de pe mașina noastră pe o altă mașină, fie de pe o altă mașină direct în mașina noastră. Urmăriți pașii de mai jos pentru a copia un fișier de pe mașina fizică pe mașina virtuală ''tom''. | ||
+ | |||
+ | Pe mașina virtuală ''tom'' aflăm adresa IP a interfeței ''enp0s8'' adresa de legătură între sistemul fizic și mașina virtuală ''tom'': | ||
+ | <code bash> | ||
+ | student@tom:~$ ip a s enp0s8 | ||
+ | 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | ||
+ | link/ether 08:00:27:71:db:21 brd ff:ff:ff:ff:ff:ff | ||
+ | inet 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8 | ||
+ | valid_lft forever preferred_lft forever | ||
+ | inet6 fe80::a00:27ff:fe71:db21/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | </code> | ||
+ | |||
+ | Folosim apoi adresa IP găsită mai sus a mașinii ''tom'' (în cazul de față ''192.168.56.101'') pe mașina fizică: | ||
+ | <code bash> | ||
+ | student@uso:~$ echo "my first scp" > file.txt | ||
+ | student@uso:~$ cat file.txt | ||
+ | my first scp | ||
+ | student@uso:~$ scp file.txt student@192.168.56.101: | ||
+ | student@192.168.56.101's password: | ||
+ | file.txt 100% 13 9.1KB/s 00:00 | ||
+ | </code> | ||
+ | |||
+ | <note important> | ||
+ | După construcția ''student@192.168.56.101'' urmează '':''. Așa specificăm unde pe mașina ''tom'' să fie copiat fișierul ''file.txt''. Dupa '':'' treceți calea din sistemul de fișiere al mașinii ''tom'' la care vreți ca fișierul să fie copiat. În cazul exemplului de mai sus, nu avem nimic, ceea ce înseamnă că se copiază fișierul în **directorul curent** care va fi ''/home/student''. | ||
+ | </note> | ||
+ | |||
+ | Apoi pe stația tom verificăm existența fișierului: | ||
+ | <code bash> | ||
+ | student@tom:~$ ls file.txt | ||
+ | file.txt | ||
+ | student@tom:~$ cat file.txt | ||
+ | my first scp | ||
+ | </code> | ||
+ | |||
+ | **[3a]** Pe mașina virtuală ''jerry'' creați un fișier la calea ''/home/student''. Copiați acest fișier pe mașina virtuală ''tom'' și verificați că a avut loc copierea. | ||
+ | |||
+ | **[3b]** Fiind pe sistemul fizic, copiați fișierul de mai sus **de pe** mașina virtuală ''jerry'' în directorul ''~/uso.git/labs/08-net/''. | ||
+ | |||
+ | **[3c]** Fiind pe sistemul fizic, copiați același fișier de mai devreme de pe mașina fizică pe ''fep.grid.pub.ro'', folosind contul vostru de pe [[http://acs.curs.pub.ro|acs.curs.pub.ro]]. | ||
+ | |||
+ | ==== 4. Comenzi prin SSH ==== | ||
+ | |||
+ | În mod obișnuit, folosirea comenzii ''ssh'' duce la deschiderea unui shell la distanță (//remote shell//) unde putem rula comenzi. Dacă ne interesează, putem însă rula direct comenzi fără a mai deschide un shell, dând un parametru comenzii ''ssh'', ca în exemplele de mai jos: | ||
+ | <code bash> | ||
+ | razvan@jotunn:~$ ssh -l student 192.168.56.101 hostname | ||
+ | student@192.168.56.101's password: | ||
+ | tom | ||
+ | razvan@jotunn:~$ ssh -l student 192.168.56.101 df -h | ||
+ | student@192.168.56.101's password: | ||
+ | Filesystem Size Used Avail Use% Mounted on | ||
+ | udev 211M 0 211M 0% /dev | ||
+ | tmpfs 49M 956K 48M 2% /run | ||
+ | /dev/sda2 9.8G 5.0G 4.4G 54% / | ||
+ | tmpfs 241M 0 241M 0% /dev/shm | ||
+ | tmpfs 5.0M 0 5.0M 0% /run/lock | ||
+ | tmpfs 241M 0 241M 0% /sys/fs/cgroup | ||
+ | /dev/loop0 88M 88M 0 100% /snap/core/5328 | ||
+ | /dev/loop1 87M 87M 0 100% /snap/core/4917 | ||
+ | /dev/loop2 89M 89M 0 100% /snap/core/5897 | ||
+ | tmpfs 49M 0 49M 0% /run/user/1000 | ||
+ | </code> | ||
+ | În cele două exemple de mai sus am rulat pe mașina virtuală **tom**, fără a deschide un shell la distanță, comanda ''hostname'' (care afișează numele sistemului) și comanda ''df -h'' (care afișează) un sumar al sistemelor de fișiere montate. | ||
+ | |||
+ | **[4a]** Afișați informații despre utilizatorul ''student'' pe mașinile virtuale ''tom'' și ''jerry'' folosind comanda ''finger'' fără a deschide un shell la distanță. | ||
+ | |||
+ | **[4b]** Creați pe mașina virtuală ''jerry'' un fișier numit ''subzero.txt'' având conținutul ''saibot''. Folosiți conexiune la distanță fără a deschide un shell, comanda ''echo'' și redirectare. Plasați comanda între ghilimele ca să fie transmisă complet la distanță; altfel, redirectarea va fi făcută pe sistemul local. Verificați conținutul fișierului ''subzero.txt'' creat la distanță folosind comanda ''cat'' fără a deschide un shell la distanță. | ||
+ | |||
+ | **[4c]** Porniți câte o sesiune shell la distanță către mașina virtuală ''tom'' și către mașina virtuală ''jerry''. Apoi folosiți în acel shell comanda ''reboot'' pentru a reporni sistemul; este modul de repornire de la distanță. | ||
+ | |||
+ | ==== 5. Refacere configurație ==== | ||
+ | |||
+ | După repornirea celor două sisteme s-a pierdut configurația interfețelor ''enp0s8'' pe mașinile virtuale **tom** și **jerry**. Folosiți ''dhclient'' pentru a reface configurația pentru cele două interfețe. Apoi creați câte o conexiune SSH de pe sistemul fizic către fiecare dintre cele două mașini virtuale. |