hi,
ein Rechner bekommt seine Netzwerk-config ganz normal per dhcp, u.a. die Adresse des zentralen log-Servers. Wie sagt man dem rsyslogd, dass er ab sofort diesen log-Server nutzen soll?
Da als dhcp-Client der dhcpcd benutzt wird, könnte man theoretisch im Script /etc/dhcpcd.sh die /etc/rsyslog.conf neu schreiben und den rsyslogd neu starten. Das scheitert aber schon daran, dass der log-Server nicht im /var/lib/dhcpcd/dhcpcd-eth0.info auftaucht, außerdem ist /etc read-only und überhaupt gibt es doch bestimmt eine elegantere Lösung?
Bonus-Frage: kann man eigentlich rausfinden, welche Daten der dhcp-Server wirklich verteilt? Zwar funktioniert das alles für Netzwerkdrucker und für statische Debian-Clients, aber Vertrauen ist gut...
[gelöst] dhcpcd soll dem rsyslogd den log-server mitteilen
[gelöst] dhcpcd soll dem rsyslogd den log-server mitteilen
Zuletzt geändert von cosmac am 17.11.2011 12:18:07, insgesamt 1-mal geändert.
Beware of programmers who carry screwdrivers.
Re: dhcpcd soll dem rsyslogd den log-server mitteilen
Auf dem DHCP-Server oder einem Gateway dahin:cosmac hat geschrieben:Bonus-Frage: kann man eigentlich rausfinden, welche Daten der dhcp-Server wirklich verteilt? Zwar funktioniert das alles für Netzwerkdrucker und für statische Debian-Clients, aber Vertrauen ist gut...
Code: Alles auswählen
# tcpdump -vv 'port 53'
Zum ro-Problem wäre vielleicht ein Symlink in eine rw-Umgebung die Lösung (/var/run/ oder so).
Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: dhcpcd soll dem rsyslogd den log-server mitteilen
tcpdump + dhcpdump ?Cae hat geschrieben: # tcpdump -vv 'port 53'
. Bei der pseuedo-RegEx hinten bin ich mir nicht sicher, da steht aber was in man 7 pcap-filter (?). Steht als Verweis in der Manpage von tcpdump drin.
Netter wäre eine Art Abfragemodus für dhclient oder dhcping.
Beim isc-dhcp-client wird es per default nicht abgefragt:cosmac hat geschrieben: Das scheitert aber schon daran, dass der log-Server nicht im /var/lib/dhcpcd/dhcpcd-eth0.info auftaucht, außerdem ist /etc read-only und überhaupt gibt es doch bestimmt eine elegantere Lösung?
Code: Alles auswählen
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
Dagegen in dhcpcd taucht im ganzen Paket kein String "log.*server" auf.
Code: Alles auswählen
$ cat /etc/default/rsyslog
# Options for rsyslogd
# -m 0 disables 'MARK' messages (deprecated, only used in compat mode < 3)
# -r enables logging from remote machines (deprecated, only used in compat mode < 3)
# -x disables DNS lookups on messages received with -r
# -c compatibility mode
# See rsyslogd(8) for more details
RSYSLOGD_OPTIONS="-c4 -f /var/lib/rsyslog/my_rsyslog.conf"
würde wohl das Neuschreiben einer einzeiligen remote.conf reichen + reload.Code: Alles auswählen
# # Include all config files in /etc/rsyslog.d/ # $IncludeConfig /etc/rsyslog.d/*.conf
Zum Einarbeiten kann ja /etc/dhcp/dhclient-exit-hooks.d/ntpdate als Vorlage dienen:
Code: Alles auswählen
NTPDATE_CONF=/etc/default/ntpdate
NTPDATE_DHCP_CONF=/var/lib/ntpdate/default.dhcp
ntp_servers_setup_remove() {
rm -f $NTPDATE_DHCP_CONF
}
ntp_servers_setup_add() {
if [ -e $NTPDATE_DHCP_CONF ] && [ "$new_ntp_servers" = "$old_ntp_servers" ]; then
return
fi
if [ -z "$new_ntp_servers" ]; then
ntp_servers_setup_remove
return
fi
tmp=$(mktemp "$NTPDATE_DHCP_CONF.XXXXXX") || return
chmod --reference=$NTPDATE_CONF $tmp
chown --reference=$NTPDATE_CONF $tmp
(
echo "# NTP server entries received from DHCP server"
echo "NTPSERVERS='$new_ntp_servers'"
) >>$tmp
mv $tmp $NTPDATE_DHCP_CONF
}
ntp_servers_setup() {
case $reason in
BOUND|RENEW|REBIND|REBOOT)
ntp_servers_setup_add
;;
EXPIRE|FAIL|RELEASE|STOP)
ntp_servers_setup_remove
;;
esac
}
ntp_servers_setup
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: dhcpcd soll dem rsyslogd den log-server mitteilen
Vielen Dank! Das waren gleich mehrere entscheidende Tipps, vor allem, dass der Client den log-server explizit anfordern muss; und wenn man die Option dann noch mit _ statt - schreibt, funktioniert es auch... Ich war auf dem Holzweg, dass dhcpcd und rsyslog spezielle Optionen für diesen Zweck haben müssten, schließlich braucht das doch jeder jeden Tag
$IncludeConfig hätte ich auch übersehen, damit wird es trotz read-only-etc auch "elegant genug". Der rsyslog meckert auch nicht, falls die include-Datei noch nicht existiert, also so weit hat die Kiste die erste Nacht gut überstanden. Zum Ausgleich braucht der rsyslogd anscheinend einen restart statt reload, der dhcpcd übernimmt den hostname nicht mehr vom Server und logrotate funktioniert nicht mehr (WTF?), aber das sind ja Schönheitsfehler
$IncludeConfig hätte ich auch übersehen, damit wird es trotz read-only-etc auch "elegant genug". Der rsyslog meckert auch nicht, falls die include-Datei noch nicht existiert, also so weit hat die Kiste die erste Nacht gut überstanden. Zum Ausgleich braucht der rsyslogd anscheinend einen restart statt reload, der dhcpcd übernimmt den hostname nicht mehr vom Server und logrotate funktioniert nicht mehr (WTF?), aber das sind ja Schönheitsfehler
Beware of programmers who carry screwdrivers.