Temat: [HOWTO] NTP - Konfiguracja
Postanowiłem spisać kilka uwag dotyczących konfiguracji serwera/klienta czasu (NTP). Tu nie ma nic nowego tylko zebranie w jednym miejscu informacji z kilu miejsc. Może się to komuś przyda a może ktoś ma coś do dodania.
Konfiguracja serwera:
Uruchamianie serwera NTP:
uci set system.ntp.enable_server=1
uci commit
service sysntpd reloadKonfiguracja DHCP:
Konfigurujemy serwer DHCP tak by przekazywał adres serwera NTP jeżeli ktoś się tego domaga:
uci add_list dhcp.lan.dhcp_option='option:ntp-server,0.0.0.0'
uci commit
service dnsmasq reloadTutaj 0.0.0.0 oznacza "adres interfejsu na którym nasłuchuje serwer DHCP".
Konfiguracja zapory:
Konfigurujemy zaporę tak by wychodzący ruch NTP był przekierowywany na lokalny serwer NTP.
uci add firewall redirect
firewall.@redirect[-1].name='Redirect NTP requiests to local server'
firewall.@redirect[-1].src=lan
firewall.@redirect[-1].src_dport=123
firewall.@redirect[-1].dest=wan
firewall.@redirect[-1].target=DNAT
firewall.@redirect[-1].dest_ip=192.168.1.1
uci commit
service friewall reloadAdres 192.168.1.1 trzeba zamienić na odpowiedni adres sieci lokalnej.
Mój stary telefon SIP potrafi czasami wysyłać żądania NTP do kilku serwerów czasu jednocześnie kilkadziesiąt razy na minutę. Ta reguła pomaga nie wysyłać tego całego ruchu do internetu.
Zwracanie strefy czasowej przez DHCP
To nie jest bezpośrednio związane z serwerem czasu ale można też skonfigurować serwer DHCP tak by przekazywał strefę czasową jeżeli ktoś o nią poprosi (systemd, netplan).
uci add_list dhcp.lan.dhcp_option=option:posix-timezone,CET-1CEST,M3.5.0,M10.5.0/3
uci add_list dhcp.lan.dhcp_option=option:tzdb-timezone,Europe/Warsaw
uci commit
service dnsmasq reloadOdpowiedni łańcuch POSIX dla strefy czasowej można znaleźć tutaj.
Konfiguracja klienta
W przypadku gdy adres WAN jest zdobywany przez DHCP można usunąć listę serwerów NTP używać tylko adresów zwróconych przez DHCP (jeżeli takie adresy są zwracane):
uci delete system.ntp.server
uci commit
service sysntpd reloadMożna też używać serwerów czasu Głównego Urzędu Miar.
uci add_list system.ntp.server=tempus1.gum.gov.pl
uci add_list system.ntp.server=tempus2.gum.gov.pl
uci commit
service sysntpd reloadUstawienie strefy czasowej zwróconej przez DHCP
Najpierw musimy poprosić serwer DHCP o zwrócenie potrzebnych informacji:
uci set network.wan.reqopts='tzstr tzdbstr'Potem musimy utworzyć skrypt /etc/udhcpc.user.d/10-timezone:
#
# udhcpc: Timezone from DHCP
#
set_transient_timezone() {
echo $1 > /tmp/TZ
[ -n "$2" ] && \
[ -f "/usr/share/zoneinfo/$2" ] && \
ln -sf "/usr/share/zoneinfo/$2" /tmp/localtime && \
rm -f /tmp/TZ
if [ -f /tmp/TZ ]; then
echo "setting transient timezone to $(cat /tmp/TZ)"
else
echo "setting transient timezone to $(readlink /tmp/localtime)"
fi
hwclock -u --systz
}
case "$1" in
renew|bound)
[ -z "$tzstr" -a -z "$tzdbstr" ] || set_transient_timezone ${tzstr:-UTC} ${tzdbstr:-UTC}
;;
deconfig)
tzstr=$(uci -q get system.@system[0].timezone)
tzdbstr=$(uci -q get system.@system[0].zonename)
set_transient_timezone ${tzstr:-UTC} ${tzdbstr:-UTC}
;;
esac