ARP

ARP significa Address Resolution Protocol o protocolo de resolución de direcciones. ARP se utiliza para supervisar y modificar la tabla de asignaciones de direcciones IP y direcciones MAC (Media Access Control).

ARP utiliza un cache que consiste en una tabla que almacena las asignaciones entre nivel de enlace de datos y las direcciones IP del nivel de red. El nivel de enlace de datos se encarga de gestionar las direcciones MAC y el nivel de red de las direcciones IP.

ARP asocia direcciones IP a las direcciones MAC, justo a la inversa del protocolo RARP que asigna direcciones MAC a las direcciones IP.

Para reducir el número de peticiones ARP, cada sistema operativo que implementa el protocolo ARP mantiene una cache en lamemoria RAM de todas las recientes asignaciones.

Puede consultarse el manual detallado respecto del uso del mandato arp ejecutando lo siguiente:

man 8 arp

El tiempo de duración del cache de la tabla de ARP es de 60 segundos. Puede cotejarse este valor examinando el contenido del archivo /proc/sys/net/ipv4/neigh/default/gc_stale_time.

cat /proc/sys/net/ipv4/neigh/default/gc_stale_time

Lo anterior debe devolver el valor 60 en la salida.

Cambiar el valor de la duración del cache de la tabla de ARP puede impedir se desborde ésta cuando se trabaja en redes compuestas por centenares o miles de sistemas que en conjunto hacen demasiadas peticiones ARP que pudieran saturar las capacidades de un servidor.

El valor puede modificarse utilizando el mandato sysctl solicitando cambiar el valor de la variablenet.ipv4.neigh.default.gc_stale_time. En el siguiente ejemplo, se cambia el valor predeterminado y el correspondiente a la interfaz eth0, a 3600 segundos (1 hora):

sysctl -w net.ipv4.neigh.default.gc_stale_time=3600
sysctl -w net.ipv4.neigh.eth0.gc_stale_time=3600

Para cotejar que el cambio realizado, ejecute los siguientes dos mandatos:

cat /proc/sys/net/ipv4/neigh/default/gc_stale_time
cat /proc/sys/net/ipv4/neigh/eth0/gc_stale_time

Lo anterior debe devolver el valor 3600 en la salida para ambos mandatos.

Para que el cambio sea permanente, edite el archivo /etc/sysctl.conf:

vim /etc/sysctl.conf

Y añada al final del archivo el siguiente contenido, conservando un espacio antes y después del signo = (igual), asumiendo que se desea cambiar los valores predeterminado y el correspondiente a la interfaz eth0:

net.ipv4.neigh.default.gc_stale_time = 3600
net.ipv4.neigh.eth0.gc_stale_time = 3600

Equipamiento lógico necesario.

El mandato arp forma parte del paquete net-tools, el cual se instala de modo predeterminado en CentOS, Red Hat™ Enterprise Linux, openSUSE™ y SUSE™ Linux Enterprise, pues se trata de un paquete obligatorio.

Procedimientos.

Para visualizar el cache ARP actual, ejecute lo siguiente.

arp -a

Lo anterior debe devolver algo similar a lo siguiente, en el caso de tratarse de un único sistema:

m254.alcancelibre.org (192.168.1.254) at 00:14:95:97:27:E9 [ether] on eth0

Cuando se trata de un servidor que sirve como puerta de enlace para una red de área local, la salida de la tabla puede ser similar a lo siguiente:

m051.redlocal.net (10.1.1.51) at 00:13:20:D0:09:1E [ether] on eth1
m046.redlocal.net (10.1.1.46) at 00:0F:1F:B1:71:14 [ether] on eth1
m073.redlocal.net (10.1.1.73) at 00:11:25:F6:93:F1 [ether] on eth1
m070.redlocal.net (10.1.1.70) at 00:11:25:F6:A2:52 [ether] on eth1
m040.redlocal.net (10.1.1.40) at 00:0D:60:6E:27:34 [ether] on eth1
m036.redlocal.net (10.1.1.36) at 00:0D:60:6E:25:FB [ether] on eth1
m011.redlocal.net (10.1.1.11) at 00:11:2F:C7:D0:D7 [ether] on eth1

El mandato arp acepta varias opciones más. Si se desea visualizar la información en estilo Linux, se utiliza sin opciones o bien con la opción -e (redundante, pues es el modo predeterminado). Ejemplo:

arp

Lo anterior debe devolver una salida similar a la siguiente:

Address                  HWtype  HWaddress           Flags Mask            Iface
m051.redlocal.net        ether   00:13:20:D0:09:1E   C                     eth1
m046.redlocal.net        ether   00:0F:1F:B1:71:14   C                     eth1
m073.redlocal.net        ether   00:11:25:F6:A2:52   C                     eth1
m070.redlocal.net        ether   00:11:25:F6:95:8E   C                     eth1
m040.redlocal.net        ether   00:0D:60:6E:26:6F   C                     eth1
m036.redlocal.net        ether   00:11:25:F6:5F:81   C                     eth1

Si se desea observar lo anterior en formato numérico, se utiliza la opción -n:

arp -n

Lo anterior debe devolver una salida similar a la siguiente:

Address                  HWtype  HWaddress           Flags Mask            Iface
10.1.1.46                ether   00:0F:1F:B1:71:14   C                     eth1
10.1.1.70                ether   00:11:25:F6:A2:52   C                     eth1
10.1.1.73                ether   00:11:25:F6:93:F1   C                     eth1
10.1.1.40                ether   00:0D:60:6E:27:34   C                     eth1
10.1.1.34                ether   00:0D:60:6E:26:6F   C                     eth1

Si se desea especificar una interfaz en particular, se utiliza la opción -i, seguida del nombre de la interfaz. Ejemplo:

arp -i eth0

Lo anterior debe regresar algo similar a lo siguiente, en el caso de tratarse de un único sistema involucrado:

Address                  HWtype  HWaddress           Flags Mask            Iface
m254.alcancelibre.org    ether   00:14:95:97:27:E9   C                     eth0

Si se desea añadir un registro manualmente, se puede hacer utilizando la opción -s, seguida del nombre de un anfitrión y la dirección MAC correspondiente. Ejemplo:

arp -s m200.redlocal.net 00:08:A1:84:18:AD

Si se quiere eliminar un registro de la tabla, sólo se utiliza la opción -d seguida del nombre del anfitrión (o dirección IP) que se desea eliminar. Ejemplo:

arp -d m200.redlocal.net

Para limpiar todo el cache, se puede utilizar un bucle como el siguiente:

for i in `arp -n | awk '{print $1}' | grep -v Address`
do
    arp -d $i
done

En el guión anterior se pide crear la variable i a partir de la salida de la ejecución del mandato arp con la opción -n, para devolver las direcciones numéricas, mostrando a través del mandato awk, sólo la primera columna de la tabla generada y eliminando la cadena de caracteres Address. Ésto genera una lista de direcciones IP que se asignan como valores de la variable i en el bucle, donde se elimina cada una de estas direcciones IP utilizando arp -d.

El objeto de limpiar el cache de ARP es permitir corregir los registros de la tabla en ciertos escenarios donde, por ejemplo, un equipo fue encendido con una dirección IP que ya esté en uso.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s