I have a domain and DNS server set up using Windows Server 2012 R2. The local domain is a subdomain of my public one, and I have a forward lookup zone configured for it in my DNS server.
i.e.
- local: lan.publicdomainname.com
 - public: publicdomainname.com
 
The DNS records for publicdomainname.com are stored with the public DNS on the registrar. (godaddy in this case). lan.publicdomainname.com is not stored with that DNS server.
I have several local servers that are listed on the public DNS as subdomains.
for eample:
- server1.publicdomainname.com
 - server2.publicdomainname.com
 
These can be accessed using those URLs from outside the local network just fine, but don't work while connected to the LAN.
Should I be adding a new Forward Lookup Zone to my internal DNS server named publicdomainename.com?
edit:
Seems like I should either be using hairpin NAT or split DNS. From what I understand a hairpin NAT causes extra processing to be done on the router for local traffic, and a split DNS requires an extra set of records to manage. for just 3 or 4 servers, which methods is better? Are there canonical guides to set each of these up? (on Windows 2012 and tomato/linux router respectively)
Should I be adding a new Forward Lookup Zone to my internal DNS server named publicdomainename.com?- No you shouldn't. Your internal DNS server is authoritative forlan.publicdomainname.com. Your external DNS servers are authoritative forpublicdomainname.com. Your internal server will use the same method (forwarders or root hints) to resolvepublicdomainname.comfor internal clients the same way it resolves any other domain name for which it is not authoritative. This is not a DNS issue, it is most likely a hairpin NAT issue.