syslog-ng – IP statt „_gateway“

Seit einigen Monaten wird im syslog-ng der Platzhalter „_gateway“ geloggt. Schöner wäre es, wenn hier die echte IP stehen würde. Seit wann genau (also seit welchem Update), kann ich aufgrund von logrotate nicht mehr genau sagen.

 

Auch nach längerer Recherche ist es mir nicht gelungen eine ursächliche Lösung zu finden. „_gateway“ kommt vom unterliegenden Linux, wo „_gateway“ von einigen Distributionen für eine bequeme Auflösung des Defaultgateways genutzt wird. Diesen „Platzhalter“-DNS-Record (der auch mit dig nicht zu finden ist) zu entfernen, ist scheinbar nicht vorgesehen.

Synthetic Records

The hostname „_gateway“ is resolved to all current default routing gateway addresses, ordered by their metric. This assigns a stable hostname to the current gateway, useful for referencing it independently of the current network configuration state. Quelle

 

Stattdessen bietet sich an, statt der Variable $HOST die Quell-IP $SOURCEIP zu loggen. Je nachdem wie die syslog-Struktur aufgebaut ist, kann man das auf Ordner und die eigentlichen Logeinträge anwenden.

 

syslog-ng–Konfiguration:

Für die Ordner:

destination d_host {
file("/var/log/$SOURCEIP/$YEAR-$MONTH-$DAY.log"
template(t_custom)
create_dirs(yes));
};

template „t_custom“ wird für den nächsten Schritt benötigt (wenn es nur um die Ordner geht, kann das entfallen).

 

Für die Inhalte der Logdateien:

template t_custom {
template("${R_DATE} ${SOURCEIP} ${MSGHDR}${MESSAGE}\n");
template_escape(no);
};

$R_DATE entspricht dem „normalen“, undefinierten, syslog-ng-Datum, man könnte aber auch ${ISODATE} verwenden.

 

Nun ist die Quell-IP wieder sichtbar:

 

 

Referenzen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert