Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

miércoles, 18 de noviembre de 2015

ip: El comando que controla la tabla arp de linux

Hace ya tiempo dediqué un post a la tabla arp; tabla que también se encuentra estrechamente relacionada con el comando arpwatch.  Dicha tabla ARP (Address Resolution Protocol) suele ser controlado mediante el comando arp, valga la redundancia, si bien con el paso de los años el concepto ha ido evolucionando y ha sido absorbido/mejorado por otra herramienta muy conocida en el mundo de las redes: ip. Esta herramienta no solo ha ido ganando popularidad, sino que ha ido dejando obsoletos otros comandos, tales como ifconfig o route...  En este caso la equivalencia al comando arp sería ip neigh, y siempre estaría acompañado de más parámetros dependiendo de la función que queramos que cumpla.


Comencemos con lo básico

Lo primero y más importante consiste en saber cómo listar a nuestros "vecinos" y conocer su estado. Esto se asemeja en gran medida al comando arp -a, si bien en este caso obtenemos mensajes mucho más informativos; para lograr dicho listado lo que habría que escribir sería ip neigh show, comando que no solo mostrará la información de estos (ip, mac...) sino que además, a diferencia de arp, también mostrará su estado. Dicho estado se refleja en la última columna de la información mostrada, y puede ser uno de los siguientes:

  • REACHABLE: La entrada ARP es válida, y el destino en cuestión es accesible (se puede interactuar con éste, hacerle ping, etc..).
  • STALE: La entrada ARP es válida también, pero no hay conectividad entre ésta máquina y la máquina objetivo.
  • FAILED: No hay conectividad, pero además la MAC perteneciente a la ip en cuestión (sea cual sea) no ha podido ser detectada.
  • DELAY: Se ha enviado un paquete al destino para conocer la información de éste, si bien todavía no se ha recibido respuesta o confirmación alguna.

En definitiva, este listado de vecinos no solo nos da a conocer su existencia, sino que también su accesibilidad.


Limpiado de la caché de la tabla arp

Otra de las funcionalidades más fundamentales que ofrece esta utilidad, es la capacidad de borrar la caché ARP; esto viene bien para limpiar multitud de líneas que se muestra como FAILED o STALE, además de solventar algún que otro problema de red, pues solo elimina la caché, no la tabla... Para ello el comando al que recurriremos será ip neigh flush seguido de la entrada ARP que será borrada de la caché, que bien puede ser una ip en concreto, un rango de ips relacionados con una interfaz en concreto o simplemente todo. Por ejemplo:

Para borrar todo el contenido de la caché ARP, habría que escribir:

ip neigh flush all

En cambio para borrar solamente todo aquello relacionado con una interfaz, como por ejemplo eth0, en este caso habría que hacer referencia a la interfaz mediante el parámetro dev, seguido del nombre de ésta, tal y como vemos a continuación:

ip neigh flush dev eth0

Si quisiesemos ser más precisos y eliminar únicamente una entrada ARP en concreto, el comando se basaría en ip neigh flush, seguido de la ip que queremos eliminar; si por ejemplo deseasemos eliminar la entrada arp de la ip 192.168.10.1, sería:

ip neigh flush 192.168.1.10


Añadir una entrada ARP

Esta práctica no es demasiado común pues lo normal suele ser que las ips se agreguen automáticamente a la tabla ARP en caso de interactuar con éstas (una conexión, un ping, etc...), pero a veces puede resultar útil... Para añadir una entrada habría que recurrir al recurso ip neigh add y tiene la siguiente estructura:


ip neigh add ${IP} lladdr ${MAC} dev ${INTERFAZ}nud ${ESTADO}


El estado que especificaríamos sería uno de los comentados anteriormente; es decir ESTABLISHED, FAILED,etc.. Así que basándonos en esta estructura, para añadir la ip 192.168.1.5 y la mac 04:0b:a4:47:87:20 a la tabla arp de un interfaz de red en concreto, el comando que construiríamos sería:

ip neigh add 192.168.1.5 lladdr 04:0b:a4:47:87:20 dev eth0 nud REACHABLE


Eliminar una entrada ARP

En vez de borrar la caché de la tabla ARP, podemos ser más drásticos y borrarla directamente, lo cual es tan sencillo como escribir el comando ip neigh del ip que queremos borrar junto con la interfaz de red con la que está asociada; Para eliminar la entrada ARP que acabamos de añadir sería tan sencillo como escribir

ip neigh del 192.168.1.5 dev eth0

Con esto ya podremos manejar la tabla ARP a nuestro antojo, otorgandonos más poder sobre nuestro equipo y mayor consciencia sobre nuestros vecinos.

Espero que os haya resultado útil.

Saludos.

No hay comentarios :

Publicar un comentario