Comment obtenir l'adresse MAC de mon routeur?

13

Existe-t-il une commande Linux qui me permet d'obtenir l'adresse MAC de mon routeur?

user4650183
la source
1
laquelle? votre routeur doit avoir plusieurs adresses mac pour les deux côtés de la communication (entrant / sortant).
mchid
Cela devrait-il aller dans Super User?

Réponses:

6

J'aime les one-liners:

arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')

arpingaffiche le MAC associé à l'adresse IP de la passerelle par défaut à partir de la sortie de ip route show match 0/0, analysé par awk.

Eric Carvalho
la source
J'ai essayé cela (et d'autres réponses). Ils donnent de bonnes informations, mais l'adresse MAC indiquée était décalée de deux chiffres par rapport à ce que je cherchais. Mon imprimante répertorie deux routeurs avec le même SSID (probablement invité et régulier) et souhaite que je sélectionne par adresse MAC. Cette réponse askubuntu.com/a/222553 me donne l'un des deux répertoriés, avec la iwconfig | grep "Access Point"commande. Je pense que celle qui était coupée par deux était la version en cache de la connexion filaire, que j'ai débranchée pour essayer de m'assurer d'obtenir la route sans fil.
hlongmore
10

N'utilisez pas les commandes obsolètes ifconfig(8), arp(8) ou route(8). Utilisez la nouvelle commande qui les remplace et peut faire plus, ip(8).

Utilisez ip route listpour voir quel defaultrouteur votre machine a. Cela devrait être une ligne commençant par default(ou 0.0.0.0) et ayant l'adresse IP du routeur après. Si vous utilise IPv6, ajoutez simplement le -6commutateur ip -6 route list.

default via 192.168.11.1 dev eth0  proto static 

Pour voir l'adresse MAC de l' defaultadresse IP du routeur, utilisez ip neighet recherchez la ligne avec l'adresse IP et l'adresse MAC après lladdr.

192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
Anders
la source
4

Si vous ne connaissez pas l'IP de votre routeur, c'est probablement votre passerelle que vous pouvez obtenir à partir de la routecommande :

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Notez la ligne avec les drapeaux UG. L'adresse dans la Gatewaycolonne de cette ligne est celle que vous recherchez. Suivez ensuite la suggestion de 2707974 avec arp -n( envoyez une requête ping à l'adresse IP si elle n'apparaît pas au début) et recherchez la ligne correspondante:

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   00:11:22:33:44:55   C                     eth0
192.168.0.2              ether   66:77:88:99:aa:bb   C                     eth0

Ici, le MAC de votre routeur serait 00:11:22:33:44:55.

glibdud
la source
2
Le one-liner correspondant:arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Falko
3

Voici une doublure qui fonctionne dash, bashet zsh:

ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
  1. ip -4 route list 0/0 renvoie quelque chose comme:

    par défaut via 192.168.0.1 dev eth1 proto statique métrique 100

  2. nous obtenons l'IP de cette ligne comme troisième champ avec cutet la ligne grep contenant cette IP et l'espace immédiat après la sortie du voisinage réseau. (un espace est nécessaire pour éviter la correspondance 192.168.0.1avec 192.168.0.10), la ligne correspondante ressemblerait à quelque chose comme:

    192.168.0.1 dev eth1 lladdr ca: fe: ba: be: be: af REACHABLE

  3. Maintenant, nous obtenons le cinquième champ et le mettons en majuscule:

    CA: FE: BA: BE: BE: AF

Douleur
la source
2
Un peu plus d'explications aideraient le reste d'entre nous à comprendre votre script!
George Udosen
1
Pour la dernière ligne, il y a une fonction Bash qui étend une variable en majuscules:echo ${info[5]^^}
David Foerster
1
@DavidFoerster Je voulais écrire une commande portable mais la variante d'origine reposait sur une indexation de tableau spécifique à zsh (à partir d'une), j'ai donc mis à jour la réponse avec la variante portable entre les trois shells les plus populaires
Grief
2

N'est pas une solution complète, mais vous cochez arp -n.

ddd@mmm ~ $ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.xxx          ether   00:e0:1e:b4:12:42   C                     eth0
yyy.yyy.yyy.yyy          ether   00:14:78:52:28:d2   C                     wlan0
2707974
la source
Cela n'obtient-il pas l'adresse MAC des interfaces sur l'ordinateur, pas le routeur?
Wilf
2
Si vous cinglez votre routeur (par exemple ping 192.168.0.1), vous devriez alors avoir son adresse MAC sur le cache arp ...
Rmano
merci @ 2707974 mais je ne sais pas aucune adresse mac pas d'adresse ip et je veux avoir une commande qui ne me donne que l'adresse ip ou l'adresse mac de mon routeur car je veux utiliser la commande dans un script python pour cela montrer tout arp la table ne m'est pas utile.
user4650183
2

Il s'agit d'une version améliorée de la réponse de Grief. Il est possible pour ip -4 route list 0/0 de renvoyer plus d'une ligne (IP), auquel cas la ligne complète ne fonctionne pas. Ainsi, la version modifiée suivante utilise uniquement la première ligne renvoyée par la liste de routes ip -4 0/0.

ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
Schtibb
la source