I'm using port forwarding to ensure that a request made to a particular public IP gets routed to the correct internal IP on port 80.
The windows-web-server is behind the Zentyal gateway and answers for 3 private IP addresses (192.168.0.5, 192.168.0.6, 192.168.0.7)
The Zentyal server has one public IP address for itself (on its external interface), 55.55.55.54 and three more public IPs on it via external virtual interfaces: 55.55.55.55, 55.55.55.56, 55.55.55.57.
There are 40+ domains being hosted on the windows web-server. The most important domain has an IP all to itself 55.55.55.55 (as a search engine optimization attempt), while most of the other site share the same public IP 55.55.55.56. Lastly, there is another sub-domain that only does SSL, and it is on the third IP 55.55.55.57.
The reason, I'm using SNAT, is because if a request is made for a particular IP, I want the web-server to reply as though its only IP is the one to which that request was requested. I don't want a user to request a webpage on one IP, and receive a reply from another IP.
For example, if a request is made to 55.55.55.55, port forwarding will send that to 192.168.0.5. When the window's web-server replies, SNAT converts its source IP from 192.168.0.5 back to 55.55.55.55. When the user receives the page, source is 55.55.55.55 as the user would expect.
If a request is made to 55.55.55.56, port forwarding will send that to 192.168.0.6. When the window's web-server replies, SNAT converts its source IP from 192.168.0.6 back to 55.55.55.56. When the user receives the page, source is 55.55.55.56 as the user would expect.
If a request is made to 55.55.55.57, port forwarding will send that to 192.168.0.7. When the window's web-server replies, SNAT converts its source IP from 192.168.0.7 to 55.55.55.57. When the user receives the page, source is 55.55.55.57 as the user would expect.
All this is setup an working for all 40 websites. From the web, you can access them all, just as described above.
My remaining task is to discover the least step-intensive way, to also make all 40 website resolve from any machine that requests them "INSIDE the LAN".
I don't want to have to add 40 DNS entries to do this.
I do not want to create custom host files for each machine in the LAN.
Ideally, I want to create 3 "rules" (which might not be the technical term... maybe it's "routes", not sure) that tell Zentyal, if an internal IP request one of the public IP's on Zentyal's virtual interfaces, forward that request to a particular interal IP.
For example, if 192.168.0.3 tries to go to 55.55.55.55, I want Zentyal to send that to 192.168.0.5, because 55.55.55.55 maps to 192.168.0.5 already for requests coming from the internet, so need to map that same way for internal IPs requesting 55.55.55.55 too.
For example, if 192.168.0.5 tries to go to 55.55.55.55 (which is ultimately itself), I want Zentyal to send that to 192.168.0.5 (back to itself), because 55.55.55.55 maps to 192.168.0.5 already for requests coming from the internet, so need to map that same way for internal IPs requesting 55.55.55.55 too.
I hope I'm making myself clear enough (even if it sounds crazy) for you all to offer suggestions.