Share via


RDS IP Virtualization in Windows Server 2012

This is a landing page for articles and information related to Remote Desktop Services (RDS) IP Virtualization in Windows Server 2012.

Unchanged in Windows Server 2012 since Windows Server 2008 R2
•        Group Policies, as described here: http://blogs.msdn.com/b/rds/archive/2009/07/15/configuring-remote-desktop-ip-virtualization-ii.aspx
•        Static IP address registry keys, as described here: http://technet.microsoft.com/en-us/library/ee382306(v=ws.10).aspx
•        WMI provider, as described here: http://msdn.microsoft.com/en-us/library/windows/desktop/gg130925(v=vs.85).aspx

Removed in Windows Server 2012 since Windows Server 2008 R2
•       Remote Desktop Session Host Configuration MMC, as described here: http://blogs.msdn.com/b/rds/archive/2009/07/09/configuring-remote-desktop-ip-virtualization-part-1.aspx
•       IP Virtualization PowerShell cmdlets, as described here: http://blogs.msdn.com/b/rds/archive/2009/07/20/configuring-remote-desktop-ip-virtualization-iii.aspx

Added in Windows Server 2012 since Windows Server 2008 R2
•        Registry key and WMI provider for loopback virtualization

Overview of loopback virtualization
When the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAPPSrv\VirtualIP\VirtualizeLoopbackAdresses registry key is set to 1, each RDS session, when attempting to bind to 127.0.0.1 will instead be redirected to 127.(0.0.1+Session Id).  For example:
               Session 1: 127.0.0.2
               Session 250: 127.0.0.251
               Session 255: 127.0.1.1
               Etc…

It is important to note that this automatic IP virtualization redirection will occur when a socket binds to 127.0.0.1, but not when a socket connects to 127.0.0.1.  This means that if within your RDS session you have a client component (connects to a socket) and a server component (binds to a socket) that need to communicate using loopback addresses, the client component will first need to determine the virtualized loopback IP address to use based on the session ID.  If the client component tries to connect to 127.0.0.1 it will be using session 0.

When IP virtualization was enabled on Windows Server 2008 R2, application components that tried to bind to 127.0.0.1 would effectively bind to the external virtualized IP address.  In Windows Server 2012 there are now separate settings for external IP virtualization and loopback IP virtualization, so binding to 127.0.0.1 will always use session 0 unless loopback IP virtualization is configured.

The WMI class linked above does not yet include descriptors for the loopback virtualization methods and properties. They will be added to that MSDN topic or this wiki shortly.