OpenDNS sucks -- when a host is not listed, it gives its own server as an address rather than failing. That may be cool for newbs surfing to a web page, but try fat-fingering a name when you're doing ftp or setting up an smtp server or ssh to another system. You get weird error messages.
And performance of off-site DNS servers will always be slower than a local host. I recently ran some tests and
published my results comparing local DNS, OpenDNS, DynDNS, and Comcast's default DNS. A local caching bind server rules!
But, back to the OP's question: Yes, you can setup a local DNS. But there's a bug in the v1.01 fw on the DIR-825 that prevents DHCP clients from getting the IP address of the DNS server. Even if you Enable DNS Relay, it doesn't go to your local bind server. It looks like the v1.10 beta firmware will do that, but I can't see losing my 802.11b capabilities for that.
So, there's no easy answer at this time. At least not for me!