Oct 082010
 

macaddressL’indirizzo MAC (in inglese MAC address, dove MAC sta per Media Access Control), detto anche indirizzo fisico, indirizzo ethernet o indirizzo LAN, è un codice di 48 bit (6 byte) assegnato in modo univoco ad ogni scheda di rete ethernet prodotta al mondo, tuttavia modificabile a livello software. Rappresenta in sostanza un nome per un particolare dispositivo di rete: ad esempio due schede di rete in due diversi calcolatori avranno due diversi nomi (e quindi diversi indirizzi MAC), così come avranno nomi diversi una scheda Ethernet ed una scheda wireless posizionate nel medesimo computer.

MAC è un acronimo che significa Media Access Control e viene utilizzato per l’accesso al livello fisico dal livello datalink secondo lo standard ISO/OSI.

Ci sono molti motivi per cui una persona vuole cambiare l’indirizzo MAC e potrebbero essere ragioni buone o ragioni cattive. Un buon motivo per cambiare il proprio indirizzo MAC potrebbe sarebbe per motivi di sicurezza. Se si modifica l’indirizzo MAC e ci si connette a una rete pubblica il vostro attuale indirizzo MAC non potrà essere memorizzato.

Un paio di cattive ragioni potrebbero essere quelle di estendere il periodo di tempo su una specifica rete wireless pubblica o di fare “spoofing” di un indirizzo MAC e accedere a una rete wireless o cablata che sta utilizzando dei filitri sugli indirizzi MAC. Lo Spoofing dell’indirizzo MAC per ottenere l’accesso non autorizzato a una rete è oltre la portata di questo articolo.

Primo compito: conoscere il MAC address dei propri dispositivi di rete.

useremo il pacchetto iproute2, di cui abbiamo già parlato nei precedenti articoli

ip link show

Esempio di output:

1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0d:60:12:78:bc brd ff:ff:ff:ff:ff:ff
3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:02:8a:9f:21:34 brd ff:ff:ff:ff:ff:ff
4: wifi0: mtu 2312 qdisc noop state DOWN qlen 100
link/ieee802.11 00:02:8a:9f:21:34 brd ff:ff:ff:ff:ff:ff

Il comando ip numera in sequenza le schede di rete. Questi numeri sono calcolati dinamicamente, per cui non dovrebbero essere utilizzatoi per fare riferimento alle interfacce. E’ molto meglio (e più intuitivo) fare riferimento alle interfacce per nome.

Per ciascun dispositivo, due linee riassumono lo stato del collegamento e le caratteristiche. Se si ha familiarità con ifconfig, si dovrebbe notare che queste due righe sono un riassunto conciso delle linee 1 e 3 di un ifconfig di ogni dispositivo.

i dati presenti sono gli stessi segnalati da ifconfig, anche se contrariamente a ifconfig, ip link show sembra mostrare lo stato dei flag dei dispositivi con maggiore precisione.

La linea uno riassume l’attuale nome del dispositivo, i flag impostati sul dispositivo, l’unità massima di trasmissione (MTU) il meccanismo di accodamento attivo (se presente) e la dimensione della coda se c’è una coda presente.
La seconda linea indicherà sempre il tipo di strato di collegamento in uso sul dispositivo, e le informazioni specifiche. Per Ethernet, usualmente, l’indirizzo hardware (MAC Address) e indirizzo di broadcast Ethernet sarà visualizzato.

Secondo compito: cambiare il MAC address della vostra scheda di rete.

ip link set dev eth0 address 00:80:c8:f8:be:ef

Il comando non fornisce alcun output, dando il comando ip link show eth0 si ha :

2: eth0: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:80:c8:f8:be:ef brd ff:ff:ff:ff:ff:ff

Quindi abbiamo cambiato con successo il MAC address della nostra scheda eth0.

ARP

ARP è un protocollo di servizio, utilizzato in una rete di calcolatori che utilizzi il protocollo di rete IP sopra una rete di livello datalink che supporti il servizio di broadcast. Se questo servizio non è disponibile, come ad esempio in ATM, devono essere utilizzati altri meccanismi.

Per inviare un pacchetto IP ad un calcolatore della stessa sottorete, è necessario incapsularlo in un pacchetto di livello datalink, che dovrà avere come indirizzo destinazione il mac address del calcolatore a cui lo si vuole inviare. ARP viene utilizzato per ottenere questo indirizzo.
Se il pacchetto deve essere inviato ad un calcolatore di un’altra sottorete, ARP viene utilizzato per scoprire il mac address del gateway.

Terzo compito: cambiare il flag di eth0 per rimuovere l’abilità di rispondere alle richieste ARP.

ip link set arp off dev eth0

Il comando non fornisce alcun output, dando il comando ip link show eth0 si ha :


2: eth0: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:80:c8:f8:be:ef brd ff:ff:ff:ff:ff:ff

Vediamo adesso il flag NOARP e l’interfaccia non risponderà più alle richieste ARP.

Per maggiori informazioni leggete anche: http://linux-ip.net/html/tools-ip-link.html

Popular Posts:

Flattr this!

  4 Responses to “MAC Address su Linux”

  1. i’m sorry for a stupid question. But why do you need turn arp off on the interface, what is the benefit of this action ?

    • Hello Sergei,
      In general you should not need to turn off your ARP, but this can be useful for paranoic admin that want to do a static map of MAC IP and so turn off Arping in all their network (never saw someone doing it in real world), or in some project that use load balancing technique it’s a requisite, i’ve saw this used in a LVS environment.
      Perhaps in a new article i’ll do a brief introduction to Linux Virtual Server, a nice implementation of kernel to do load balancing.

      Thanks for the feedbacks !

  2. Excellent article mate, just one question, when I press enter to the command to change the Mac, it says “Device or resource busy”. How do I stop it first?

  3. oops sorry, did not realize this article was from 2010, the RSS I follow just posted, no harm meant.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*