# rm-rf.es

Control de tablas ARP con el comando ip

El comando ip, al igual que sirve para controlar las IPs de interfaces de red, rutas o túneles, también permite manipular la tabla ARP (Address Resolution Protocol). Sí, para ello tenemos el comando «arp» pero para algunas cosas el comando ip le toma la delantera y es una forma de combinar funcionalidades de muchos comandos (el obsoleto ifconfig, route, arp…) en un único comando.

La gestión de ARP con el comando IP se hace pasándole el parámetro «neigh» (neighbour/vecino) seguido del resto de parámetros específicos.

Ver la tabla ARP

El comando para visualizar la tabla de entradas ARP es:

# ip neigh show

Se puede abreviar del siguiente modo:

# ip n show

A diferencia que al ejecutar un «arp -a» o visualizar el contenido de /cat/net/arp, el comando ip nos muestra algo más de información. En la última columna nos indica el estado de la máquina (del «vecino») cuando se ha detectado algún problema de conexión:

Ejemplo:

~# ip neigh show
192.168.1.61 dev eth0 lladdr 78:45:c4:aa:52:4e STALE
192.168.1.56 dev eth0  FAILED
192.168.1.1 dev eth0 lladdr 00:0a:e4:8c:46:08 REACHABLE
192.168.1.68 dev eth0  FAILED

Salida del comando «arp -a» y también del archivo del filesystem /proc:

~# arp -a
? (192.168.1.61) at 78:45:c4:aa:52:4e [ether] on eth0
? (192.168.1.56) at  on eth0
? (192.168.1.1) at 00:0a:e4:8c:46:08 [ether] on eth0
? (192.168.1.68) at  on eth0
~# cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.61      0x1         0x2         78:45:c4:aa:52:4e     *        eth0
192.168.1.56      0x1         0x0         00:00:00:00:00:00     *        eth0
192.168.1.1       0x1         0x2         00:0a:e4:8c:46:08     *        eth0
192.168.1.68      0x1         0x0         00:00:00:00:00:00     *        eth0

Flush de la ARP cache

El siguiente comando permite limpiar por completo la caché ARP:

# ip -s -s neigh flush all

Si queremos eliminar de la caché una entrada concreta, podemos hacerlo del siguiente modo:

# ip -s -s neigh flush 192.168.1.100
192.168.1.100 dev eth0 lladdr 00:0v:s4:23:f6:01 ref 132 used 0/0/0 DELAY

*** Round 1, deleting 1 entries ***
*** Flush is complete after 1 round ***

Añadir entrada ARP

Para añadir entradas a la tabla de ARP utilizamos la siguiente sintaxis:

# ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}

La sintaxis también vale para eliminar o modificar:

ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ] [ nud { permanent | noarp | stale | reachable } ] | proxy ADDR } [ dev DEV ]

Podemos especificar el estado de la entrada con lo que pasemos a «nud». Para una entrada ARP permanente utilizamos permanent y así le indicamos que sea fija y sólo pueda ser eliminada manualmente. Otros parámetros son noarp (definir la entrada como válida y que no requiera validación), stale (definirla como válida pero con necesidad de validación) y reachable (válida hasta que expire por timeout)

Ejemplo de entrada permanente:

# ip neigh add 192.168.1.100 lladdr 00:5v:54:33:v8:02 dev eth0 nud perm

Con el comando arp sería así:

# arp -s 192.168.1.100 00:5v:54:33:v8:02

Eliminar entrada ARP

Eliminar una entrada ARP es más sencillo, únicamente hay que especificar la dirección IP y el dispositivo al que está asociada:

# ip neigh del 192.168.1.100 dev eth0

Con arp sería:

# arp -d 192.168.1.100

Básicamente esto es lo que debemos conocer para poder controlar las tablas ARP con el comando IP en sustitución (o como complemento) a «arp».

Salir de la versión móvil