I have an application hosted in a 2 VMs in a private network. Out of which one application is accessible from the outside world and the other one required private DNS. So outside users are not able to connect to the second VM having private DNS. How can the users from outside world can connect to my application without changing their IP or DNS (second VM). I am a beginner in network administration. Please help want can be done in such cases.
Keeping a DNS record private doesn't provide much security. An outsider able to "guess" the host name and IP address could access the service. You should consider limiting access by source IP addresses on your firewall, at the very least. Using VPN for securing access is highly recommended.
If you're already forwarding a port from a public IP address to the server (assuming it's using a private IP address), a user needs to know the public IP address. For HTTP/S the host name is likely required as well, depending on the server configuration (which is off-topic here).
If you want the user to use the host name in their browser, they have to be able to resolve it - either add it to their DNS server or to their local /etc/hosts file (how that can be done is off-topic here as well).
I'd simply use a public DNS record and secure access in a more reliable way.