Une astuce qui permet de changer de manière aléatoire son adresse MAC à chaque démarrage d’Ubuntu.
Pour rappel, l’adresse MAC est l’adresse physique de la carte réseau et est unique au monde, contrairement à l’adresse IP.
Dans l’article, on va voire 2 méthodes: une par script et l’autre avec la commande pre-up.
Méthode par script
Pour pouvoir changer l’adresse MAC à chaque démarrage, le système va faire appel à un script.
Ce script sera placé dans /etc/init.d/.
Le script va faire appel au programme macchanger.
Le script est aussi fonctionnel pour Linux Mint.
Méthode pour Ubuntu jusqu’à version 13.10
- Installation de macchanger
Dans un terminal:
sudo apt-get install macchanger
Édition du script macchanger.
sudo nano /etc/init.d/macchanger
Le script:
#!/bin/bash # Désactivation des interfaces réseaux ifconfig eth0 down ifconfig wlan0 down # génération d'une adresse MAC aléatoire pour les interfaces réseaux /usr/bin/macchanger -r eth0 /usr/bin/macchanger -r wlan0 # Réactivations des interfaces réseaux ifconfig eth0 up ifconfig wlan0 up
Les interfaces eht0 et wlan0 sont à adapter suivant les cas.
sudo chmod +x /etc/init.d/macchanger
sudo update-rc.d macchanger defaults 10
Méthode pour Ubuntu 14.04
A partir d’Ubuntu 14.04, l’option « -r » ne fait plus son travail.
En essayant toutes les options, seule l’option « -A » permet de changer l’adresse MAC et le conscructeur.
A savoir aussi, l’utilisation de la commande ifconfig du paquet net-tools est déprécié au profit de la commande ip.
sudo apt install macchanger
sudo nano /etc/init.d/macchanger
Le script :
#!/bin/bash ###désactiver l'interface eth0 ou wlan0 : a adapter suivant le cas. ip link set eth0 down ###Changer l'adresse MAC et son constructeur /usr/bin/macchanger -A eth0 ###Activer l'interface eth0 ou wlan0 : a adapter suivant le cas. ip link set eth0 up
sudo chmod +x /etc/init.d/macchanger
sudo update-rc.d macchanger defaults 10
Vérification du changement de l’adresse MAC
Avant de redémarrer, noter l’adresse MAC.
Pour connaître l’adrese MAC avec la commande ifconfig , voir –>ICI<–
ou sinon :
ip maddr show eth0
Méthode pre-up
Modification du fichier interfaces
- Installation de macchanger :
sudo apt install macchanger
sudo nano /etc/network/interfaces
pre-up /usr/bin/macchanger -A eth0
Le fichier au complet doit ressembler à :
auto eth0 iface eth0 inet dhcp pre-up /usr/bin/macchanger -A eth0
Merci à maogouste pour cette technique :-)
Conclusion
Dorénavant, à chaque démarrage de la machine Ubuntu/Linux Mint la ou les interfaces réseaux auront une adresse MAC aléatoire.
De cette manière le blocage par Mac Address sur un switch devient inopérant.
Exelent!
merci pour l’astuce
je m’était déjà fait ce script, par contre faut bien vérifier le changement, il peut ne pas toujours avoir été fait sur wlan0, ajouter un sleep au besoin, pour y remédier sans sleep, je désactive wlan en 1er et change et réactive en dernier, c’est souvent suffisant ;)
Bonjour,
Je suis sur linux mint 16 petra, j’ai fait les manipulations décrites et cela fonctionne parfaitement.
Le problème est que je n’ai plus accès à ma connection internet adsl après redémarrage.
Une solution est possible.
Merci à l’avance.
bonjour votre script marcher bien sur ubuntu 13, mais voila apres avoire installer ubuntu 14.04 j’ai appliquer votre tuto mais sa change rien ca marche pas sur ubuntu 14.04 merci dadapter le tuto pour celle-ci.
Salut luc,
essai dans le terminal:
[code lang= »shell »]
sudo service network-manager restart
[/code]
Sinon, j’ai mis l’article à jour pour Ubuntu 14.04 LTS.
Merci Fred,
Ça fonctionne nickel avec le script Ubuntu 14.04 LTS
#!/bin/bash
###désactiver l’interface eth0 ou wlan0 : a adapter suivant le cas.
ip link set eth0 down
###Changer l’adresse MAC et son constructeur
/usr/bin/macchanger -A eth0
###Activer l’interface eth0 ou wlan0 : a adapter suivant le cas.
ip link set eth0 up
Cool!
donc je peux valider pour Linux Mint 16 Petra :-)
pourquoi ne pas le mettre dans le pre-up de /etc/network/interfaces?
Je pense que c’est plus le lieu.
Salut maogouste,
peut-être à cause du mauvais habitude de placer mes scripts de démarrage dans /etc/init.d/
avec le pre-up, tu ferais comme ça ? :
[code lang= »shell »]
auto eth0
iface eth0 inet dhcp
pre-up /usr/bin/macchanger -A eth0
[/code]
Effectivement.
L’avantage de faire comme ca, en plus de le fire de la bonne facon, etant de ne pas avoir de double initialisation des interfaces reseaux.
Pas de perte de temps. Pas de soft qui n’aime qu’on lui coupe sa connection pendant son initialisation (evolution….).
bonjour j’ai appliquer votre tuto sur mon ubuntu 14.04
mais ca marche pas chez moi je sais pas pour quoi !
pourriez vous m’aidez ?
et pour fred et maogouste pouriez vous priciser pour lautre facon
auto eth0
iface eth0 inet dhcp
pre-up /usr/bin/macchanger -A eth0
je veut bien essayer mais j’ai pas compris comment proceder exactement ?
merci bien a vous
Salut,
pour la deuxième méthode il faut éditer le fichier : /etc/network/interfaces et ajouter à la fin du fichier :
[code lang= »shell »]
pre-up /usr/bin/macchanger -A eth0
[/code]
(Parce que je suis à la mode :) Yo,
Pour le commentaire #11, il faut bien sûr que tout les ‘eth0’ du code correspondent au nom de l’interface. Si c’est une interface wifi, tu peux avoir affaire a wlan0, ou autre.
Puis, relancer le reseau, ou l’interface.
bonjour merci alors que je cherche a changer aleatoirement mon adresse mac sous debian je tombe sur votre tuto qui marche tres bien sous ubuntu mais pas sur debian j’aurai aimer que qulqu’un maide a trouver la soulution merci bien a vous je suis sous debian weezy
@debnauuut: c’est tout pareil pour debian, aucune différence, je peut supposer que l’élément bloquant est que tu utilise debian sur une machine hébergée chez un fournisseur quelconque et non sur ta propre machine
@fred: tu peux me désabonner stp?
@debnauut : as-tu essayé la seconde méthodes « Méthode pre-up » ?
@H2L29 : normalement, il te suffit de décocher les notifications de cet article… Si cela ne fonctionne pas, envoie moi un mail et je regarderais….
heu … on peut peut-etre le faire à la main sans avoir à installer un paquet :
chmacaddr.sh
#!/bin/bash
RANGE=255
octets=$(ifconfig | grep $1 | awk ‘{print $NF}’)
octeta=$(echo « obase=16;$(($RANDOM % $RANGE)) » | bc)
octetb=$(echo « obase=16;$(($RANDOM % $RANGE)) » | bc)
octetc=$(echo « obase=16;$(($RANDOM % $RANGE)) » | bc)
macaddr=$(echo « ${octets:0:8}:${octeta}:${octetb}:${octetc} » | tr [A-Z] [a-z])
ifconfig $1 down
ifconfig $1 hw ether $macaddr
ifconfig $1 up
Usage : chmacaddr.sh wlan0
ou le déclarer dans le pre-up
C’est sûr ! mais c’est une méthode pour niveau avancé ce que tu proposes ;-)
heu … niveau avancé ?
Bonjour,
votre méthode fonctionne parfaitement pour les trois premières paires de mon adresse MAC (xx:xx:xx:yy:yy:yy) mais les trois dernières restent inchangées. J’utilise Ubuntu 14.04 LTS et la méthode que vous avez proposée pour. Verriez-vous un moyen de résoudre ce pb?
Merci!
Allo, j’ai essayé le scrip ci dessous http://memo-linux.com/comment-changer-de-maniere-aleatoire-une-adresse-mac-a-chaque-demarrage-sous-ubuntu/ et l’adresse as pas changer selon vous qu’est qui pourrais etre l’erreur que j’aurais pus faire…ubunto 12.04…….
ha pis je ne suis comme pas capable d’enregistrer le scrip… quand je l’ouvre…il a un pacquer de commande en bas mais….faut que je fasse le « chapot » et « o » pour enregistrer…mais ca marche pas…en fait je sais pas ou le faire, en cliquant un peu partout je me suis rendu compte que ca povais corresponde a des f1 f2 etc….huuu, aussi, bien j’ai remarquer que quand j’ouvrais le scripp bien l’info que javais rentrer dedans y est encore donc…..une autre affaire aussi dans le scrip…les commande en bas un moment donner je sais pas sur quoi j’ai peser mais juste en cliquand dessus je pouvais défiler le fichier d’aide…donc…je pense que vous voyer un peu …qu’Est que je fait de pas correct?
Bonjour Jean-Claude,
avant de te lancer dans des scripts, apprends à utiliser l’éditeur nano.
Sinon, pour enregistrer avec nano il faut utriliser le combinaisons de touche Ctrl+x. Le « chapeau » est la touche Ctrl de ton clavier.
s’il vous plait est ce que vous savez nous faire le meme tutoriel mais sous debina 7.7 je vous en prie merci bien a vous
étant donnée qu’Ubuntu est dérivée de Debian, les méthodes fonctionnent pour Debian. Il faut priviligier la méthode pré-up, qui est plus « propre ».
Bonjour et merci pour cet article qui m’a bien aide !
Malheureusement je rencontre le même souci que notre ami Near3… Je tourne également sous la même config/version.
J’ai fait la première méthode, et la Pre-Up, mais en effet, dans tout les cas, seul les trois premières paires changent.
Merci d’avance !
Aucune idée pour ce « problème » sous Ubuntu. Mais bon, à partir du moment que les 3 paires changent l’adresse Mac a été changée…
Bonjour
Je suis bien loin d’avoir toutes vos connaissances , et j’ai besoin d’un petit coup de main
Pour récuperer une connexion via ethernet , on me demande une adresse MAC (puis – ou ?) une adresse MAC clonée. Mon système est Linux Mint 16
Quelqu’un pourrait-il m’aider ?
Merci
Salut Georges,
alors pour connaître sa Mac Adress voici une méthode, qui est décrite dans l’article :
[code lang= »shell »]
ip maddr show eth0
[/code]
ou http://memo-linux.com/comment-connaitre-ladresse-mac-d-une-interface-reseau/
Tu veux faire de la virtualisation ? (adresse MAC clonée)
Bonjour, j’ai un script et je veux l’exécuter sous ubuntu 14. Sous ubuntu 12, ça ne pose aucun soucis, il suffit de les enregistrer et de mettre un chemin dans .basrc mais sous ubuntu 14, ça ne marche pas, je ne sais pas pourquoi? Pouvez-vous m’aider? Merci d’avance. Pour plus de détails, je serai disponible, MERCI.
Faut regarder dans le syslog…
Comment faire si on veux l’annuler ?
merci d’avance
je veux dire par la revenir a l’adresse mac d’origine
tu désactives le script…
en quoi faisant parce que j’utilise ubuntu
et excuse moi pour ces questions
no problemo pour les questions :-)
alors si tu veux retrouver ton adresse MAC d’origine, il suffit du supprimer le script au démarrage de ta machine :
[code lang= »shell »]
sudo rm /etc/init.d/macchanger
[/code]
et de désinstaller le paquet :
[code lang= »shell »]
sudo apt-get remove macchanger
[/code]
merci beaucoup
Bonsoir,
J’ai tenté les 2 méthodes de script ainsi que la pré-up mais rien n’y fait, l’adresse Mac ne change pas :(. Je précise que je suis sous Linux Mint 17.1
Merci d’avance!
Bonjour,
Mince alors chez-moi, la méthode 14.04 ne fonctionne pas et la méthode pre-up non-plus. Notez que pour cette dernière, mon fichier « Interfaces » ressemble à ceci (avant modifs, et je suis connecté en Wifi) :
auto lo
iface lo inet loopback
Entre « lo » ou « wlan0 » et « loopback » ou « dhcp » je ne n’ai pas encore essayé toutes les combinaisons, mais pour le moment : rien à faire !
En tous cas, si quelqu’un a une idée : je prend. Si j’ai une solution : je partage ici.
Bien à vous
Bonjour owel,
quelle est ta distribution ?
Avec la méthode pré-up il faut changer eth0 par le nom de ton interface. Peut-être dans ton cas c’est wlan0.
Salut Fred,
Je suis sous Ubuntu 14.04. Ai refait des tests aujourd’hui : rien à faire !
Soit ça ne veut pas se connecter, soit, network-manager ne se lance carrément pas… J’comprend pas.
je viens de le refaire sur un Linux Mint 17 (je suis sous Manjaro depuis pas mal de temps maintenant) et effectivement le fichier interfaces n’est pas beaoucoup rempli.
Bref, voilà mon fichier modifié :
[code lang= »shell »]
auto lo
iface lo inet loopback
####ce que j’ai ajouté :
auto eth0
iface eth0 inet dhcp
pre-up /usr/bin/macchanger -A eth0
[/code]
et j’obtiens le même résultat que @Near3 à savoir, que seul les 3 premiers pair change de valeurs. Je vais me documenter si la gestion des interfaces réseaux sous Ubuntu n’a pas changée (ce qui est déjà le cas sous UBuntu server).
merci
avec la Méthode pre-up ne pas oublier quel interface vous utilisez.
par example eth0 pour l eternet et wlan0 pour le wifi etc.
pre-up /usr/bin/macchanger -A eth0
pre-up /usr/bin/macchanger -A wlan0
encore merci.
Salut Fred
Au delà de la « méthode avancée » que j avais proposé il y a plusieurs années, on pourrait au générer l adresse Mac ainsi :
date | md5sum | sed -r ‘s/(..){3}/\1:/g;s/\s+-$//’
Après c’est une idée bien sûr 😜
Dans tous les cas merci à toi et ton blog il est bien fun dans les meilleurs sens du terme (cf moi 😂)
Plus simple sûrement que le bc avec le obase=16 que j avais proposé à l époque mais je ne me souvenais plus de celle ci et comme j écris mes scripts à la volée en function du moment…
Bref…