¿Cómo obtengo la dirección MAC de mi enrutador?

13

¿Hay algún comando de Linux que me permita obtener la dirección MAC de mi enrutador?

usuario4650183
fuente
1
¿cúal? su enrutador debe tener múltiples direcciones mac para ambos lados de la comunicación (entrante / saliente).
mchid
¿Debería ir esto en Super Usuario?

Respuestas:

6

Me gustan las frases sencillas:

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

arpingmuestra el MAC asociado con la dirección IP de la puerta de enlace predeterminada de la salida de ip route show match 0/0, analizada por awk.

Eric Carvalho
fuente
Intenté esto (y otras respuestas). Dan buena información, pero la dirección MAC que se muestra estaba apagada en dos dígitos de lo que estaba buscando. Mi impresora enumera dos enrutadores con el mismo SSID (probablemente invitado y regular), y quiere que elija por dirección MAC. Esta respuesta askubuntu.com/a/222553 me da uno de los dos enumerados, con el iwconfig | grep "Access Point"comando. Creo que el que estaba apagado por dos era la versión en caché de la conexión por cable, que desconecté para tratar de asegurarme de que estaba obteniendo la ruta inalámbrica.
hlongmore
10

No use los comandos obsoletos ifconfig(8), arp(8) u route(8). Use el nuevo comando que los reemplaza y puede hacer más, ip(8).

Use ip route listpara ver qué defaultenrutador tiene su máquina. Esa debería ser una línea que comience con default(o 0.0.0.0) y tenga la dirección IP en el enrutador después. Si utiliza IPv6, sólo tiene que añadir el -6interruptor, ip -6 route list.

default via 192.168.11.1 dev eth0  proto static 

Para ver la dirección MAC de la defaultdirección IP de los enrutadores, use ip neighy busque la línea con la dirección IP y la dirección MAC después lladdr.

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

Si no conoce la IP de su enrutador, lo más probable es que sea su puerta de enlace que puede obtener del routecomando :

$ 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

Tenga en cuenta la línea con las banderas UG. La dirección en la Gatewaycolumna de esa línea es lo que está buscando. Luego siga la sugerencia de 2707974 con arp -n(haga ping a la IP si no aparece al principio) y encuentre la línea correspondiente:

$ 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

Aquí, el MAC de su enrutador sería 00:11:22:33:44:55.

glibdud
fuente
2
El one-liner correspondiente:arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Falko
3

Aquí hay una línea que funciona dash, bashy 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 devuelve algo como:

    predeterminado a través de 192.168.0.1 dev eth1 proto static metric 100

  2. obtenemos IP de esa línea como tercer campo con una cutlínea grep que contiene esa IP y espacio inmediato después de la salida del entorno de red. (se requiere espacio para evitar la coincidencia de 192.168.0.1con 192.168.0.10), la línea coincidente sería algo así como:

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

  3. Ahora obtenemos el quinto campo y lo ponemos en mayúscula:

    CA: FE: BA: BE: BE: AF

Dolor
fuente
2
¡Un poco más de explicación ayudaría al resto de nosotros a entender su guión!
George Udosen
1
Para la última línea hay una función Bash que expande una variable a mayúsculas:echo ${info[5]^^}
David Foerster
1
@DavidFoerster Quería escribir un comando portátil, pero la variante original se basaba en la indexación de matriz específica de zsh (de uno), así que actualicé la respuesta con la variante portátil entre los tres shells más populares
Grief
2

No es una solución completa, pero verificas 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
fuente
¿No obtiene esto la dirección MAC de las interfaces en la computadora, no el enrutador?
Wilf
2
Si hace ping a su enrutador (digamos ping 192.168.0.1), entonces debería tener su dirección MAC en el caché de arp ...
Rmano
gracias @ 2707974 pero no sé ninguna dirección mac ni dirección ip y quiero tener un comando que me dé solo la dirección ip o la dirección mac de mi enrutador porque quiero usar el comando en un script python para mostrar todo arp La tabla no es útil para mí.
user4650183
2

Esta es una versión mejorada de la respuesta de Grief. Es posible que la lista de rutas ip -4 0/0 devuelva más de una línea (IP), en cuyo caso el revestimiento completo no funciona. Entonces, la siguiente versión modificada solo usa la primera línea que devuelve la lista de rutas 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
fuente