A caching/recursive DNS resolver isn't particularly challenging to implement in and of itself. Windows Server, BSD, and Linux all have it available as a component that comes with it or can be added without charge. On Windows Server 2008+, add it as a role. On *nix, check out the man pages for bind.
"Populating the entries" is what the caching does, I suppose. You may want to read here for info on the basics of how DNS works: Domain Name System
The hard part is security and uptime. That, however, is way outside the scope of this question.