As you specified networking, there is an option at the network level, I have provided a network solution below flagged with NETWORK. Only a few protocols are commonly proxied, but most work well with NAT (the network solution). HTTP and HTTPS are commonly proxied, so that is my first response.
I am confused by your description of DNS based proxying. It is common of DNS to specify different IP addresses for different addresses, or for related sites to have the same IP address. As you are specifying websites as your hostnames, I believe we can assume you want to proxy websites. I believe the term you are looking for is "name-based virtual hosting" or "name-based proxying"
For HTTP or HTTPS many servers can proxy traffic based on IP address and/or the name specified in the HOST header. The Apache Web Server uses VirtualHosts to separate sites. Other sofware which can proxy traffic has the same or similar functionality. In Apache, to do both ip-based and based proxying for the same site you would create a VirtualHost for the IP address add the require name(s) to that virtual host. You would then configure that VirtualHost to proxy the whole site or part of it.
NETWORKING: If want to redirect an IP address to a different address this can be done by a router. The mechanism used is call NAT (Network Address Translation). In this case you would need DNAT (Destination Network Address Translation.) Some routers can do NAT on a per port (service) address. In this case you would want the related DNS entries to return the IP address being translated.
EDIT: The additional comments provide additional information. As I understand the requirements:
- Proxying will only be for users from certain addresses/address ranges, not all traffic to the name/IP will be proxied.
- Proxied requests must appear to originate from the proxy not the original host.
- Current solution provided different address records depending on origin of the request. (I believe the existing solution is broken here. DNS request originate from the DNS server the client is using, which may not be the client's device. DNS responses are cached, so you can not rely on a DNS request preceding the request.)
The solution I believe would most likely work is to handle this with NAT rules on a device in front of the server and proxy. This would NAT all traffic you want to proxy to your proxy device based on originating IP address, and pass other traffic directly to the server.