Cómo evitar problemas en el arranque de arpwatch en Ubuntu en 16.04

Publicado el 12 noviembre 2019 por Drassill
Arpwatch es un servicio de Linux que puede dar muchos problemas en el arranque; especialmente cuando se trabajan con múltiples interfaces de red, pues es bastante exigente para comenzar en el proceso de arranque.  Generalmente a muchos nos les importa, ya que con arrancar el servicio a mano después el problema se solventa; pero en ocasiones queremos que el equipo arranque automáticamente dicho servicio; especialmente en servidores que queremos que funcionen de forma "autonoma" y que sean susceptibles de reinicios inesperados.

Es por ello que siempre es interesante saber cómo hacer que el servicio arranque de forma automática. Cosa que afortunadamente es sencillo, ya que arpwatch se enfrenta solamente a dos obstaculos para arrancar correctamente.
El primero es que al tener dos interfaces de red, con sus respectivas puertas de enlace, al servicio "networking" no le gustan las puertas de enlace estandard, sino que requieren de una métrica. Esto se solventa modificando el fichero /etc/network/interfaces y realizando el siguiente cambio; poniendo como ejemplo las puerta de enlace 192.168.1.1 y 172.16.1.1
Antes:
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
iface eth1 inet static
address 172.16.1.2
netmask 255.255.0.0
network 172.16.0.0
broadcast 172.16.255.255
gateway 172.16.1.1

Despues:
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
post-up route add default gw 192.168.1.1
pre-down route del default gw 192.168.1.1
iface eth1 inet static
address 172.16.1.2
netmask 255.255.0.0
network 172.16.0.0
broadcast 172.16.255.255
post-up route add default gw 172.16.1.1
pre-down route del default gw 172.16.1.1

Con esta parte solventada, sería necesario forzar la ejecución de arpwatch como root, ya que como arpwatch no permite hacerlo bien durante el arranque. Para ello editaremos el fichero /etc/default/arpwatch; dentro del cual veremos una línea llamada RUNAS; la cual tendrá como valor arpwatch... Esto significa que el servicio sería ejecutado por el usuario arpwatch, pero al sistema no es algo que le guste, al menos durante el arranque, ya que el servicio en sí no arrancaría  correctamente por defecto y requeriría reiniciarlo para que funcione. Para que funcione durante el arranque, habría que hacer que el servicio sea ejecutado como root, con lo que sería necesario realizar el siguiente cambio:
Antes:
RUNAS="arpwatch"

Despues:
RUNAS="root"

Con estas pequeñas modificaciones, tras nuestro próximo reinicio, nuestro servicio arpwatch funcionaría adecuadamente, evitando así problemas con dicho servicio en caso de que el equipo fuese reiniciado de forma no controlada.
Espero que os haya resultado útil.
Saludos.