I do have a Cisco PIX that do it perfectly. It intercepts dns reply to inside users and changes the public ip address by the dmz server's one.
So when the query is done from outside you'll get the public address. When the query is done from inside, you'll get the real adress of the servers.