Progresso lezioni
T24 finita L05 finita
Index
-
Dispositivi
Laboratorio
user - resu
- Router mai utilizzato
- Cavo dritto tra macchina e switch
- Cavo incrociato tra due macchine o tra due switch
- Ora come ora le macchine si configurano automaticamente
ifconfig: leggere e scrivere configurazione di rete
ifconfig eth0: mostra le info dell’interfaccia ethernet
ip addr show dev eth0
ifconfig eth0 192.168.1.1: setta l’indirizzo ip dell’interfaccia eth0
ifconfig eth0 0: deconfigura l’interfaccia
Per evitare configurazioni sbagliate, è meglio esplicitare la netmask quando si configura con ifconfig.
ifconfig eth0 192.168.1.2/24
Destination host unreachable: errore standard di livello 2, quando nessuno risponde ad una richiesta broadcast ARP.
Ping
Ping invia una ARP request in broadcast per capire quale è l’indirizzo MAC connesso a 192.168.1.2, e l’host con quell’indirizzo risponde con una risposta unicast ARP reply. Poi iniziano a scambiarsi pacchetti ICMP echo request e ICMP echo reply.
arping -i eth0 192.168.1.1
arping -B cerca di risolvere l’indirizzo di broadcast (255.255.255.255)
Con arping posso capire se l’host che raggiungo con ping sia o meno nello stesso mio dominio di broadcast.
tcpdump: sniffing traffico di rete. Entra di default in modalitĂ promiscua, quindi si vede tutto il traffico
tcpdump -i eth0
arp mostra la tabella ARP
VDE - switch
Per vedere la tabella ARP hash
hash/print
hash/showinfo
/etc/hostname contiene il nome dell’host, ma viene applicato al riavvio
Oppure usare il comando hostname [nuovo nome]
Per fare ping m2, si può creare una corrispondenza statica tra il nome degli host e l’indirizzo ip. Basta modificare /etc/hosts
La conversione tra nome e indirizzo viene fatta localmente dall’host. Il nome dell’host non viene mandato da nessuna parte.
/etc/nsswitch.conf
configura come gestire il cambio del nome → indirizzo. Di default prima viene consultato il file e poi il dns.
/etc/network/interfaces
auto eth0: serve per attivare la interfaccia a tempo di boot
iface eth0 inet static
iface: voglio configurare l’interfaccia eth0
inet: ipv4
static: configurazione statica
prima di eseguire ifup, meglio eseguire ifconfig eth0 0
ifup eth0: ricarica l’interfaccia di rete
ifdown eth0: disabilita le configurazioni di rete impostate con ifup
Per fare il refresh di un’interfaccia da remoto, si usa ifdown eth0 && ifup eth0
L’indirizzo ip viene in qualche modo associato alla macchina, quindi multiple schede di rete in una macchina risponsono alle richieste ARP verso uno di quegli indirizzi ip ⇒ isposte doppie in arping
quando la hash table dello switch è vuota, e si invia una arping request ad un indirizzo che l’host di partenza ha già nella tabella arp, lo switch invia il pacchetto iniziale echo request a tutte le porte, perché non sa a che porta passarlo, dal momento che la sua tabella è vuota.
Con hub le altre macchine riescono a vedere tutto il traffico che passa, perchè hub non ha idea della relazione porte/ip
Bridge
unisce due domini di broadcast
Usato per collegare macchine virtuali ad una rete fisica
Per creare un bridge, si usa un host.
brctl: bridge control
brctl addbr nome
brctl delbr nome - per eliminare un bridge le interfacce di rete devono essere spente
brctl addif nome eth1: aggiunge interfaccia al bridge
brctl delif nome eth1
brctl show nome
ifconfig br0 up per abilitare il bridge
Il bridge si comporta come uno switch!
auto br0
iface br0 inet static
bridge_ports <port1> <port2> ...
address (0.0.0.0 o indirizzo ip per l'interfaccia br0)
/etc/init.d/networking restart
CIDR Classless Inter-Domain Routing
Classe C: i primi 3 byte identificano la rete, l’ultimo l’host
Netmask 255.255.255.0 - oppure in maniera compressa 192.168.1.0**/24**
Per evitare configurazioni sbagliate, è meglio esplicitare la netmask quando si configura con ifconfig.
ifconfig eth0 192.168.1.2/24
Tabella di routing
route: mostra la tabella di routing
ping sa che un indirizzo è nella rete locale, e quindi invia una richiesta arp, perché prima legge la tabella di routing.
Leggo che nella tabella c’è la rete che voglio contattare, capisco che posso contattarla a livello 2 (perchè gateway è 0.0.0.0) tramite l’interfaccia eth0, e allora mando la richiesta arp
se provo a contattare 2.3.4.5, l’host non prova nemmeno a contattare la destinazione, perchè è completamente sconosciuto nella tabella di routing.
Network unreachable: errore di livello 3 Host unreachable: errore di livello host-to-network
Video L06
La differenza tra un host e un host dedicato a router è che un router, se arrivano dei pacchetti non dedicati a lui, non li scarta MA LI INOLTRA. La prima cosa da fare è ABILITARE ip forwarding
sysctl net.ipv4.ip_forward. Se è 0 è disattivato, mentre se è 1 è attivo
sysctl -w net.ipv4.ip_forward=1 setta a 1 il valore di ip_forward
Per renderla permanente, si modifica il file /etc/sysctl.conf
Per attivare le modifiche: sysctl -p /etc/sysctl.conf
Dato che ogni host deve conoscere il first hop router, bisogna istruire i vari host. Per farlo basta aggiungere una regola di routing tramite il comando route.
route add -host 192.168.2.1 gw 192.168.1.254
Se in route add si ottiene network is unreachable, è perché il gateway non è conosciuto nella tabella di routing.
A questo punto, si riesce a parlare con 192.168.2.1, ma non si ricevono risposte perché l’altro host non ha la regola di route per parlare con 192.168.1.1. ==Quindi bisogna usare route add su tutti gli host!==
La prima richiesta di h1, è una richiesta ARP per capire come parlare con il gateway. Una volta che si ha l’indirizzo MAC del gateway, si ha una comunicazione a livello 3 con h3. Sarà una comunicazione a livello 2 con il gateway.
Per rendere la configurazione di routing permanente, si fa:
- pulire eventuali regole aggiunte in modalitĂ temporanea
- disattivare l’interfaccia, così da non avere conflitti
post-up route add -host...dopoaddressin/etc/network/interfaces. Esistono anche post-down, pre-up e pre-down Non serve impostare pre-down per eliminare la regola di routing, perché in automatico quando l’interfaccia va down elimina tutte le regole che comprendono quella rete, anche come gateway.