Introducción a la resolución y caché de direcciones ARP
Administrar tablas de resolución de direcciones en infraestructuras de red densas suele provocar sobrecarga innecesaria en el subsistema del kernel. Para mitigar esta saturación y gestionar de manera externa la memoria intermedia de enlaces de capa 2, el servicio arpd ofrece una alternativa sumamente eficiente. En este tutorial examinaremos los fundamentos operativos de este demonio en entornos Ubuntu, abordando desde su despliegue práctico en terminal hasta la parametrización de su base de datos local y la monitorización de asociaciones MAC/IP.
Instalación de paquetes auxiliares y verificación del binario
Para dotar al sistema de las herramientas indispensables de diagnóstico, inspección de procesos y control de rutas antes de levantar el demonio, ejecutamos el siguiente comando: apt-get update -qq && apt-get install -y iproute2 net-tools psmisc.

Una vez completado el aprovisionamiento, corroboramos que el binario principal se encuentre accesible en la ruta de ejecución ejecutando which arpd.
La localización /usr/sbin/arpd en pantalla confirma que la utilidad está disponible para su puesta en marcha.

La herramienta arpd opera en el espacio de usuario (userspace) capturando solicitudes ARP, respondiendo a peticiones y persistiendo registros en un almacenamiento interno.
Consultamos el panel de ayuda para revisar los modificadores de configuración soportados durante el arranque.
⚙️ [Opciones destacadas]
-l : Vuelca en tiempo real las consultas y la actividad de resolución hacia la salida estándar.-k : Envía una señal de parada al proceso activo que esté asistiendo al kernel.-b <dbase> : Especifica la ruta personalizada del archivo de base de datos donde se conservan las entradas.
(Valor predeterminado: /var/lib/arpd/arpd.db)-B <number> : Ajusta el tamaño del búfer para peticiones de difusión (broadcast) agrupadas en una única transacción.-a <N> : Establece el umbral de reintentos de sondeo antes de considerar que un destino no responde.-n <time> : Fija el período de expiración (tiempo de inactividad) para los registros almacenados, en segundos.-R <rate> : Limita la tasa máxima de paquetes ARP transmitidos por segundo.

Inspección de interfaces activas y registros del kernel
Antes de vincular el demonio a un adaptador determinado, listamos los enlaces de comunicación disponibles y su operatividad con ip link show.
El reporte muestra tanto el dispositivo de bucle invertido lo como la tarjeta de red eth0 en estado UP.

Para auditar el estado actual de las asociaciones IP/MAC que el núcleo de Linux mantiene en su tabla de vecindad (neighbor table), corremos ip neigh show.
Se aprecia que la puerta de enlace predeterminada 172.18.0.1 vinculada a eth0 se reporta correctamente en condición REACHABLE.

Empleando el comando tradicional de consulta en formato numérico, ejecutamos arp -n para revisar la caché del núcleo.
En la columna Flags figura el distintivo C (Complete), confirmando que las equivalencias físicas y lógicas están consolidadas en el sistema.

Puesta en marcha de arpd y persistencia en segundo plano
A fin de preparar el directorio dedicado donde el servicio guardará su base de datos persistente, ejecutamos mkdir -p /var/lib/arpd.

Previo a lanzar la nueva instancia, aseguramos un entorno limpio liquidando cualquier proceso previo en conflicto mediante killall arpd 2>/dev/null || true.

Detectamos dinámicamente la interfaz de red principal activa asignándola a la variable IFACE e iniciamos el demonio definiendo la base de datos de almacenamiento y el límite de sondeos: IFACE=$(ip -o link show | awk -F': ' '{print $2}' | grep -v 'lo' | head -n1); arpd -b /var/lib/arpd/arpd.db -a 3 $IFACE.

Para certificar que el proceso se desprendió adecuadamente y continúa ejecutándose en segundo plano, consultamos la tabla de tareas con ps aux | grep [a]rpd.
El listado confirma que el servicio se encuentra activo y operando sobre la interfaz especificada.
![ps aux | grep [a]rpd](/ubuntu/20261012_021340_49/captures/s03_c04_ps_aux___grep__a_rpd.png)
Validación del registro de tráfico y finalización del servicio
Con el fin de inducir tráfico saliente y forzar la negociación de tramas ARP con el router de salto inmediato, lanzamos ping -c 2 8.8.8.8 > /dev/null 2>&1 || true.

Para inspeccionar las asociaciones que arpd ha recopilado en su archivo local, consultamos la base de datos mediante arpd -l -b /var/lib/arpd/arpd.db 2>&1 | head -n 10 || true.
La cabecera de la salida detalla la estructura empleada: índice de interfaz, dirección lógica y dirección física de hardware.

Una vez completadas las validaciones prácticas, procedemos a liberar los recursos del sistema y detener el proceso en ejecución mediante killall arpd 2>/dev/null || true.

Tras la detención del demonio auxiliar, verificamos que la tabla nativa del kernel continúe funcionando sin anomalías ejecutando ip neigh show.
El mapeo de la puerta de enlace 172.18.0.1 a través de eth0 se mantiene intacto y con estatus REACHABLE.

En esta guía hemos explorado cómo configurar arpd en Ubuntu para optimizar el almacenamiento de direcciones de capa 2. Esta arquitectura externa constituye un recurso de gran valor en entornos corporativos de alto volumen para evitar cuellos de botella en el kernel y garantizar una conectividad robusta.