I have since updated and created a new Vagrantfile with a multi-host build as well. This one requires a little more prep and setup because it's ideal to have your environment prepped and then stored as a box image. Otherwise each vm instance will need to go through all the yum install and updates which can add a significant amount of time. This prep work, once done, can get you a full multi-host build in about 10 minutes.
So where is it? github here: link
Instructions are outlined in the readme. The instructions are also there on how to setup and prep your box image for the Vagrantfile to leverage.
Why is there another box just for DNS? It just makes it easier to have it external so that you don't have to deal with extra firewall concerns. If you install it on one of the nodes, it works, but the openshift-ansible script makes modifications to your iptables so you have to be aware of what it changes.
Why can't the dns server be on the master? Because port 53 is already taken by SkyDNS (for the local openshift network name resolution, svc.cluster.local, etc), sure you can assign it different ports, but it's just more things to be aware of when you need to make updates.