Which of the following situations do you mean?
[RDP client on Windows machine] => [linux server] => [windows Terminal Server]
[RDP client on MacOSX/Linux machine] => [linux server] => [windows terminal Server]
- If #2 is the case, use 'sshuttle' from https://github.com/apenwarr/sshuttle
It will allow you to tunnel from your MacOSX/Linux machine to the linux server and proxy your TCP connections destined for the ip address/ip address ranges through the linux server.
Based on the comment, it sounds like what is desired is:
[client(s)] => [proxy server] => [pool of windows servers]
Client only has login credentials and connect information to the proxy server. Based on the client's login credentials, they would only be able to connect to their own windows machine in the backend pool.
To that end, a login session manager and a session key-based proxy would allow for "anonymous" access to the backend pool.
This article comes to mind:
While not a complete solution, it allows for persistent connections between a remote client and a windows terminal server on the backend. With an appropriate bit of app coding to enforce a particular backend host to a particular remote client on login to the web interface, you should be able to implement what you are asking about.