I've been having a similar issue with two DIR-857s I own. This is concurrent with another issue that I've been trying to figure out, but it seems related. Of the two router's, one is a year old, and the other is only a few weeks old.
Both routers were recently updated to firmware 1.4. Since then I've noticed that both will run for several hours to several days and then stop successfully giving out IP addresses. The router log shows that a DHCP request was received, but clients fail-over to a link-local IP address and are unable to get out to the internet or other network devices. At this point, clients that already have active IPs can still maintain internet access, for a while. I am assuming the IP lease expires, and then cannot be renewed. Also, during this time the DNS server lookups often fail. Eventually the router will become unresponsive to all clients. At this point I am forced to manually power cycle the router.
When it boots back up it will work normally. However, I've observed that both during and after this hang-up occurs, the router's time will drift several hours behind. When I am eventually forced to manually power cycle the router, the freshly booted router's time is always several days behind. This is regardless of whether I used an NTP, or have manually set the time using my PC's time. If I power cycle the router when it is not in the hung-up condition, it will keep pace with correct time. The routers also seem to keep the correct time up until this hang-up occurs. (I've been checking periodically)
Aside from the firmware update, I haven't recently made any changes to either router. I did try to disable several of my standard settings, such as disabling uPnP, turning off the MAC address filtering, setting different time servers. Nothing seems to help. I even rolled one router back to firmware 1.3 with no success. Currently I am prepping to roll back to firmware 1.2, but wanted to post in the event this was related to leooel's issue.