I have two domains services.xxxxxxx.com and www.xxxxxxxx.com being hosted on two different machines on my local network and rather than using port forwarding I would rather have all traffic for each domain forwarded by the router to the right machine. Would I need to setup a DNS Server to accomplish this or are there other alternative to get this to work?
There are two approaches to this depending on what your ISP and router can support. However, you should note from the outset that your router cannot tell the difference between different sub-domains, it only routes on IP address and port not by name.
The least likely approach is that your ISP can provide more than one IP address and that your Router can also handle this (my old Draytek router could, my new Billion router cannot). In that case, you would set up a public DNS (not local) that pointed the two sub-domains at the different addresses and, in the router, made sure that you also routed those addresses accordingly. The router would then need to forward port 80 on each IP address to a single IP address (the hosting PC, I assume they are both on a single box?) but two different ports. This is by far the easiest and most robust approach. If you indicate that this is the desired approach, I can update the answer with more details on how to set up Apache and the PC correctly.
More likely is that you will only have a single external IP address available to you. Now things are a little more difficult since both sub-domains must be directed at a single external IP address and will be NAT'ed to a single internal address/port since the router cannot differentiate the traffic. In this instance, you will need to (as David has indicated) set up a reverse proxy. This can be done using either a dedicated proxy tool or via
A reverse proxy will take traffic for each sub-domain and transparently forward it to an internal address/port combination so that the two apps will run on separate ports on the host PC. For simple web apps, the configuration is straight-forwards but for complex apps, the configuration can be somewhat complex to get right.
In both cases, you need the help of an external DNS not an internal one.