Ya he comendao alguna vez que el router que uso para conectar a Internet es un Zyxel 660HW-61. Este router permite enviar sus mensajes al syslog de una máquina UNIX remota:

El puerto de red asignado al syslog es el 514/UDP:
# grep syslog /etc/services
syslog 514/udp
Sin embargo, el proceso syslogd de Debian no se conecta a ese puerto porque no escucha mensajes de la red por defecto. Si queremos que lo haga, tenemos que editar el fichero /etc/default/syslogd, que en la configuración estándar no contiene ninguna opción:
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD=""
Si queremos que escuche de la red, hemos de especificar la opción -r:
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-r"
que sirve precisamente para esto:
-r This option will enable the facility to receive message from the
network using an internet domain socket with the syslog service
(see services(5)). The default is to not receive any messages
from the network.
y reiniciar el proceso con “/etc/init.d/sysklogd restart“. Tras esto, podremos comprobar que el demonio funciona con la opción deseada
# ps -ef | grep syslog
root 4547 1 0 17:35 ? 00:00:00 /sbin/syslogd -r
y que el proceso está escuchando en el puerto 514/UDP:
# netstat -a | grep syslog
udp 0 0 *:syslog *:*
Puesto que los mensajes del Zyxel van a llegar por la facility local2, podemos querer establecer un fichero de log específico para él en el /etc/syslog.conf (para que se relea después de modificarlo, haremos un “/etc/init.d/sysklogd reload“):
local2.* /var/log/zyxel.log
Si quisiéramos que fuera un sistema Linux (por ejemplo, una Debian) el que mandara ciertos mensajes a un syslog remoto, podríamos hacerlo simplemente poniendo en el syslog.conf una línea como:
local3.* @sistemaremoto.dominio
Tras releer la configuración, con una sencilla prueba con el comando logger:
logger -p local3.info "Mensaje de prueba"
veremos que, efectivamente, el mensaje aparece en el sistema remoto en varios logs configurados para recibir mensajes de la prioridad formada por la pareja facility/level que hemos especificado:
# grep "Mensaje de prueba" /var/log/*
/var/log/messages:Dec 8 18:18:15 ordenador logger: Mensaje de prueba
/var/log/syslog:Dec 8 18:18:15 ordenador logger: Mensaje de prueba
Recordemos que las facilities son:
- auth, security 1
- authpriv
- cron
- daemon
- ftp
- kern
- lpr
- mail
- mark (sólo para uso interno)
- news
- sys-log
- user
- uucp
- local0 → local7
y los levels:
- debug
- info
- notice
- warning, warn 1
- error, err 1
- crit
- alert
- emerg, panic 1
1. En los casos en que aparecen dos etiquetas juntas, la segunda es equivalente a la primera y está obsoleta.
Si tomamos una traza de red vemos que el protocolo (BSD syslog Protocol) es extraordinariamente sencillo (RFC 3164):

Podemos ver que la prioridad es un byte que contiene la facility (5bits) y el level (3bits).
Con un simple netcat también podemos mandar mensajes a un syslogd remoto que esté escuchando la red, aunque no pongamos la cabecera con la prioridad y la fecha del evento:
# echo "Nuevo mensaje de prueba con el netcat" | netcat -q 0 -u 192.168.1.20 514
y en el /var/log/syslog remoto encontramos el mensaje:
Dec 8 18:39:15 ordenador Nuevo mensaje de prueba con el netcat
:wq