You're actually asking about two different problems.
- How can I make computers on my LAN accessible from the internet?
- How do I configure DNS so that the computers on my LAN have names which are resolvable on the internet?
The first question carries the most risk. Any computer which can be accessed from the internet is a target for worms, hackers, and other evils. Creating a DMZ will help to isolate your public computers so that the private ones stay private. I strongly encourage you to do your research and understand what you're getting into before actually setting this up. Given that you only have one IP address, you'll need to use port forwarding to make services available from more than one computer.
As for the second question, computers external to your LAN can't resolve the names of your internal computers because they don't know where to look for the answer. The computers inside your LAN know to ask your private DNS server because they got that information through DHCP, along with their IP address. You really should spend some time learning how DNS works. To get you started, the first step is to register your domain name with a registrar.
Update: You've registered a domain name? That's a great start. I assume that you have "mapped" your domain name to the static IP of your server using a web-based control panel provided by your domain registrar to create an "A" record. There are a couple ways you can proceed at this point.
- Add A records to the DNS zone of your domain for each internal machine. This is called split DNS, because you are maintaining two copies of the same DNS zone: one for your internal clients, and one for the public internet.
- Delegate authority over a subdomain (such as
internal.contoso.com
) to your internet-facing DNS server. You do this by creating an NS record. This would require some reconfiguration of your server, as you would access hosts in the format of host1.internal.contoso.com
.
Also, some clarifications about the terminology; consider this example: foo.example.com
- The "host" or "hostname" part is
foo
- The "domain" part is
example.com
- The FQDN is
foo.example.com