This shows you the differences between two versions of the page.
uso:laboratoare:new:08-net:nice-to-know [2018/11/21 08:47] razvan.deaconescu |
uso:laboratoare:new:08-net:nice-to-know [2018/11/26 10:49] (current) dragos.dimitriu [1. Configurare statică adrese IP] |
||
---|---|---|---|
Line 11: | Line 11: | ||
student@tom:~$ sudo ip a a 1.1.1.1/24 dev enp0s9 | student@tom:~$ sudo ip a a 1.1.1.1/24 dev enp0s9 | ||
[sudo] password for student: | [sudo] password for student: | ||
- | student@spike:~$ sudo ip link set dev enp0s9 up | + | student@tom:~$ sudo ip link set dev enp0s9 up |
- | student@spike:~$ ip a s enp0s9 | + | student@tom:~$ ip a s enp0s9 |
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | 4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | ||
link/ether 08:00:27:f6:24:73 brd ff:ff:ff:ff:ff:ff | link/ether 08:00:27:f6:24:73 brd ff:ff:ff:ff:ff:ff | ||
Line 33: | Line 33: | ||
inet6 fe80::a00:27ff:fee7:a226/64 scope link | inet6 fe80::a00:27ff:fee7:a226/64 scope link | ||
valid_lft forever preferred_lft forever | valid_lft forever preferred_lft forever | ||
- | <code> | + | </code> |
Mai sus, pentru fiecare stație am văzut că interfața nu are adresă IP și este dezactivată (''state DOWN'') (folosind comanda ''ip a s'' de la ''ip address show''). Apoi am adăugat adresă IP (folosind comanda ''ip a a'' de la ''ip address add'') și apoi am activat interfața (folosind comanda ''ip l s'' de la ''ip link set''). Apoi am afișat din nou parametrii interfeței (folosind tot ''ip a s'') și am văzut că interfața are acum adresă IP și că este activată (''state UP''). | Mai sus, pentru fiecare stație am văzut că interfața nu are adresă IP și este dezactivată (''state DOWN'') (folosind comanda ''ip a s'' de la ''ip address show''). Apoi am adăugat adresă IP (folosind comanda ''ip a a'' de la ''ip address add'') și apoi am activat interfața (folosind comanda ''ip l s'' de la ''ip link set''). Apoi am afișat din nou parametrii interfeței (folosind tot ''ip a s'') și am văzut că interfața are acum adresă IP și că este activată (''state UP''). | ||
Line 66: | Line 66: | ||
**[1c]** Adăugați pe interfața ''enp0s9'' de pe sistemele ''tom'' și ''jerry'', respectiv adresele IP ''192.168.69.42/28'' și ''192.168.69.43/28''. Folosiți comanda ''ip a s enp0s9'' pentru verificare. Verificați conectivitatea între cele două sisteme folosind cele două adrese IP nou introduse. | **[1c]** Adăugați pe interfața ''enp0s9'' de pe sistemele ''tom'' și ''jerry'', respectiv adresele IP ''192.168.69.42/28'' și ''192.168.69.43/28''. Folosiți comanda ''ip a s enp0s9'' pentru verificare. Verificați conectivitatea între cele două sisteme folosind cele două adrese IP nou introduse. | ||
- | ==== 1. whois ==== | + | ==== 2. Scripturi pentru statistici rețea ==== |
+ | |||
+ | Vrem să creăm niște scripturi pentru lucrul cu rețeaua. | ||
+ | |||
+ | Pe stația fizică, creați scriptul ''get_ifs_mac'' care să aibă conținutul de mai jos: | ||
+ | |||
+ | <file bash get_ifs_mac> | ||
+ | #!/bin/bash | ||
+ | |||
+ | interfaces=$(ls /sys/class/net) | ||
+ | |||
+ | echo "interface,mac_address" | ||
+ | for i in $interfaces; do | ||
+ | mac_address=$(cat /sys/class/net/"$i"/address) | ||
+ | echo "$i,$mac_address" | ||
+ | done | ||
+ | </file> | ||
+ | Scriptul afișează, pentru toate interfețele sistemului, adresa MAC (numită și adresă hardware sau adresă fizică) în format CSV (numele interfeței și adresa MAC separate prin virgulă). | ||
+ | |||
+ | Urmăriți scriptul de mai sus și înțelegeți ce face. | ||
+ | |||
+ | Creați scriptul ''get_ifs_mac'' folosind conținutul de mai sus (fie îl descărcați, fie dați copy-paste) și acordați-i permisiuni de execuție: | ||
+ | <code bash> | ||
+ | student@uso:~$ chmod +x get_ifs_mac | ||
+ | </code> | ||
+ | |||
+ | Apoi rulați scriptul și veți obține un rezultat de forma: | ||
+ | <code bash> | ||
+ | student@tom:~$ ./get_if_mac | ||
+ | interface,mac_address | ||
+ | enp0s3,08:00:27:4a:7d:2c | ||
+ | enp0s8,08:00:27:71:db:21 | ||
+ | enp0s9,08:00:27:f6:24:73 | ||
+ | lo,00:00:00:00:00:00 | ||
+ | </code> | ||
+ | |||
+ | **[2a]** Pornind de la scriptul ''get_ifs_mac'' creați scriptul ''get_ifs_packets'' care afișează în format CSV, pentru fiecare interfață, numărul de pachete primite (''rx'') și numărul de pachete transmise (''tx'') | ||
+ | |||
+ | <note tip> | ||
+ | Găsiți, de exemplu, numărul de pachete primite, respectiv transmise pe/de pe interfața ''enp0s3'' în fișierele ''/sys/class/net/enp0s3/statistics/rx_packets'' și ''/sys/class/net/enp0s3/statistics/tx_packets''. | ||
+ | </note> | ||
+ | |||
+ | **[2b]** Actualizați scriptul ''get_ifs_mac'' pentru a afișa informațiile de mai sus sortate **numeric** după numărul de pachete primite. | ||
+ | |||
+ | ==== 3. whois ==== | ||
''whois'' este o comandă de Linux folosită pentru a afla informați despre orice domeniu sau adresă IP din Internet. | ''whois'' este o comandă de Linux folosită pentru a afla informați despre orice domeniu sau adresă IP din Internet. | ||
Line 101: | Line 145: | ||
</code> | </code> | ||
- | ==== 2. Autentificare SSH fără parolă ==== | + | ==== 4. Autentificare SSH fără parolă ==== |
Până în acest moment ați folosit protocolul ''SSH'' pentru a vă conecta remote de nenumărate ori. | Până în acest moment ați folosit protocolul ''SSH'' pentru a vă conecta remote de nenumărate ori. | ||
Line 149: | Line 193: | ||
</code> | </code> | ||
- | **[2a]** Acum că ați reușit să vă autentificați fără parolă pe mașina ''tom'', faceți același lucru și pe mașina vituală ''jerry''. | + | **[4a]** Acum că ați reușit să vă autentificați fără parolă pe mașina ''tom'', faceți același lucru și pe mașina vituală ''jerry''. |
- | **[2b]** Conectați-vă prin SSH pe mașina ''tom'' de pe mașina ''jerry''. După cum vedeți, se cere parola utilizatorului. Realizați autentificarea fără parolă în ambele direcții pentru cele două mașini virtuale: ''tom'' și ''jerry''. | + | **[4b]** Conectați-vă prin SSH pe mașina ''tom'' de pe mașina ''jerry''. După cum vedeți, se cere parola utilizatorului. Realizați autentificarea fără parolă în ambele direcții pentru cele două mașini virtuale: ''tom'' și ''jerry''. |
- | **[2c]** Conectați-vă fără parolă de pe sistemul fizic pe contul vostru de pe ''fep.grid.pub.ro''. | + | **[4c]** Conectați-vă fără parolă de pe sistemul fizic pe contul vostru de pe ''fep.grid.pub.ro''. |
- | ==== 3. Hostname ==== | + | ==== 5. Hostname ==== |
După cum știți, hostname-ul unei mașini se poate observa din prompt-ul terminalui. Acesta se mai poate obține folosind comanda ''hostnamectl''. După ce modificăm hostname-ului este nevoie de redeschiderea unei noi sesiuni de shell care se încarce noua configurație. | După cum știți, hostname-ul unei mașini se poate observa din prompt-ul terminalui. Acesta se mai poate obține folosind comanda ''hostnamectl''. După ce modificăm hostname-ului este nevoie de redeschiderea unei noi sesiuni de shell care se încarce noua configurație. | ||
Line 170: | Line 214: | ||
După ce ne-am deconectat, ne-am reconectat și acum noul hostname, vizibil în prompt, este ''spike''. | După ce ne-am deconectat, ne-am reconectat și acum noul hostname, vizibil în prompt, este ''spike''. | ||
- | **[3a]** Schimbați hostname-ul celor două mașini virtuale ''tom'' și ''jerry'' în ''rick'' și ''morty''. | + | **[5a]** Schimbați hostname-ul celor două mașini virtuale ''tom'' și ''jerry'' în ''rick'' și ''morty''. |
- | **[3b]** Dorim să rulăm comanda ''ping'' între mașinile virtuale ''tom'' și ''jerry'' folosind hostname-ul în loc de adresa IP. | + | **[5b]** Dorim să rulăm comanda ''ping'' între mașinile virtuale ''tom'' și ''jerry'' folosind hostname-ul în loc de adresa IP. |
Pentru aceasta trebuie să instalați pachetul ''avahi-daemon''. Dacă ați instalat pachetul și e configurat corespunzător va merge ''ping tom.local'' și ''ping jerry.local'' (sau ''rick.local'' și ''morty.local'' pentru noile nume de stații). | Pentru aceasta trebuie să instalați pachetul ''avahi-daemon''. Dacă ați instalat pachetul și e configurat corespunzător va merge ''ping tom.local'' și ''ping jerry.local'' (sau ''rick.local'' și ''morty.local'' pentru noile nume de stații). | ||
- | ==== 4. SSH X11 forwarding ==== | + | ==== 6. SSH X11 forwarding ==== |
X11 forwarding este folosit pentru a accesa interfața grafică a unei mașini de la distanță, prin intermediul protocolului SSH. | X11 forwarding este folosit pentru a accesa interfața grafică a unei mașini de la distanță, prin intermediul protocolului SSH. | ||
Line 188: | Line 232: | ||
Apoi rulați comenzi cu interfață grafică ce vor rula pe sistemul colegului dar vor fi afișate pe sistemul vostru. | Apoi rulați comenzi cu interfață grafică ce vor rula pe sistemul colegului dar vor fi afișate pe sistemul vostru. | ||
+ | |||
+ | ==== 7. Captură de trafic de rețea. Wireshark ==== | ||
+ | |||
+ | Utilitarul Wireshark este un utilitar grafic pentru captură și inspecție de trafic de rețea. Îl porniți folosind ''sudo wireshark'' fie din linia de comandă fie folosind ''Alt+F2''. | ||
+ | |||
+ | <note> | ||
+ | Dacă nu există comanda ''wireshark'' va trebui să instalați utilitarul folosind comanda | ||
+ | <code bash> | ||
+ | student@uso:~$ sudo apt install wireshark | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | După ce porniți Wireshark activați, în interfața grafică, captura pe interfața de rețea principală (cea care asigură legătura la Internet). Apoi faceți conexiuni la diferite site-uri folosind un browser, sau folosiți ''ping'' sau folosiți comanda ''host'' pentru a genera trafic. Observați traficul capturat și prezentat grafic de Wireshark la nivel de pachet de date de rețea. | ||
+ | |||
+ | Urmăriți informațiile de [[https://www.wireshark.org/docs/wsug_html_chunked/ChWorkDisplayFilterSection.html|aici]] și filtrați pachetele afișate după diferite metrici: | ||
+ | * Filtrați doar pachetele care au ca adresă IP sursă adresa IP a ''ocw.cs.pub.ro''. | ||
+ | * Filtrați doar pachetele HTTPS. | ||
+ | * Filtrați doar pachetele de tip ICMP (cele folosite de ping). |