With your logs and such what is happening is that some thing (or things) are resetting your time.
Do you have the NTP server enabled on the DNS-323? The first thing is to make sure it is off, but that might not be enough and if you don't have another NTP server on it might drift with time.
As a test I just put echo "GMT0BST,M3.5.0/1,M10.5.0/1" > /etc/TZ
Into my DNS-323 and got the right time for BST.
This should be case for any time zone, you should be able to switch the /etc/TZ entry and it switches to the right time. The reason is because the real time should be stored and maintained as GMT time in the system clock no matter where you are in the world or whether it is daylight savings time or not. The /etc/TZ just tells it what to display as the time you want to see.
Since I found the whole time setup to be wrong on the DNS-323 I have done the following:
1) Disable NTP Server on DNS-323
2) At start up from in ffp/etc/fun_plug.local :
# Fix time zone information.
# remove rtc and daylight cron jobs
crontab -l | grep -vi rtc | grep -vi stime | grep -vi daylight | crontab -
echo "PST8PDT,M3.2.0,M11.1.0" > /etc/TZ
echo "Fixed /etc/TZ file"
Basically kill anything that the DNS-323 does to change the time and then set the correct TZ value.
And then I go on to run a good NTP server from ffp, with my own tweak to make sure it sets to the right time on boot (and I notice I remove the programs above from the crontab here again, most likely not needed in both places).
ffp/start/ntpd.sh
#!/ffp/bin/sh
# PROVIDE: ntpd
# REQUIRE: SERVERS
# BEFORE: LOGIN
. /ffp/etc/ffp.subr
name="ntpd"
command="/ffp/bin/ntpd"
ntpd_flags="-g -f /ffp/etc/ntp.drift"
required_files="/ffp/etc/ntp.conf"
start_cmd="ntpd_start"
ntpd_start()
{
# fix /etc/services
if ! grep -w ntp /etc/services >/dev/null; then
echo "ntp 123/udp" >>/etc/services
fi
# remove rtc and daylight cron jobs
crontab -l | grep -vw '/usr/sbin/daylight' | grep -vw '/usr/sbin/rtc' | crontab -
# Make sure the system clock is correct at start up.
ntpdate -b -u 0.us.pool.ntp.org
if [ $? -ne 0 ] ; then
echo "Sleeping 10 seconds"
sleep 10
ntpdate -b -u 0.us.pool.ntp.org
fi
proc_start $command
}
run_rc_command "$1
ffp/etc/ntp.conf
# US time servers, iburst to speed up synchronization on startup
#server us.pool.ntp.org iburst
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
# drift file path is passed on command line in ntpd.sh (-f)
# driftfile /etc/ntp.drift
# add local clock with stratum 10 as last resort
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# detailed logging
#logconfig =all