I'm not sure if I've correctly understood the problem, so let me start by stating what I think you're saying:
- You have a hostname (let's say host.example.com)
- Which is configured on your example.com DNS servers to point to an IP (let's say 220.127.116.11)
- When you enter host.example.com into a browser, the request doesn't show in the apache access/error logs, and the content from Apache doesn't show in the browser
- When you enter a mapping for host.example.com -> 18.104.22.168 in your /etc/hosts, the page does load correctly
I don't understand what you mean by "Pinging a domain that has a virtual host section comes up as the IP of the nameserver"
Since everything works fine when you add a hosts entry, it sounds like Apache is set up correctly. Since it doesn't work without the hosts entry, my guess is that your DNS entry is wrong. Check what happens when you "dig host.example.com" - does it return the right IP?
Update: Based on this additional information:
NewDomain.com also uses ns1.mydomain.com and ns2.mydomain.com. Pinging
it comes up with nothing. If I set the IP of ns1.mydomain.com to
NewDomain.com in the hosts file, it works. When I do a dig on
NewDomain.com, status is SERVFAIL, there is no answer, authority, or
the problem is clear. When you registered newdomain.com, you need to tell the registrar that it's hosted on ns1.mydomain.com and ns2.mydomain.com; and they need to set up the "glue" records so that other people can discover this. Some part of this has failed - either you didn't tell the registrar; or they haven't set up the glue records yet.