If I understand correctly, you only have 1 public IP address (on inherently only 1 tcp port 80 on that), but you want to run 3 webservers of which only 1 is direcly public accessible (through a port forward).
You have 2 things to configure:
- DNS level: make sure www. sub1. sub2. all point to the same address as mydomain.com. This can be done in the configuration panel of your DNS registrar (look for a "Wildcard" option if available). This should allow you to ping sub1.mydomain.com and all other subdomains.
- As all requests arrive on the server 192.168.1.100, you'll need to configure this webserver to forward requests for the subdomains to other (internal) servers.
The other servers can be accessed if you use the main webserver (.100) as a reverse proxy for the subdomains sub1. and sub2.
I think this might be a good sample: sample httpd.conf with explanation
Note: in the ProxyPass and ProxyReverse lines you'll have to use an internal hostname or IP address, not the sub1.mydomain.com because that will have you end up with a loop!
If it doesn't work with that website, here are the google search terms: vhost reverse proxy