Remote Assistance and NAT Traversal
Remote Assistance works by establishing a P2P connection between the User's computer and the Helper's computer. One challenge this poses is that it can be difficult to establish P2P connections if one or both of the computers involved are behind a gateway or router that uses NAT. NAT is an IP routing technology described by RFC 1631 that is used to translate IP addresses and TCP/UDP port numbers of packets being forwarded. NAT is typically used to map a set of private IP addresses to a single public IP address (or to multiple public addresses). Home networks using a wireless or wired router also use NAT technology.
To overcome this difficulty, Windows 7 and Windows Vista include built-in support for Teredo, an IPv6 transition technology described in RFC 4380 that provides address assignment and automatic tunneling for unicast IPv6 connectivity across the IPv4 Internet. The NAT traversal capability provided by Teredo in Windows 7 and Windows Vista allows Remote Assistance connectivity when one or both of the users involved in a Remote Assistance session are hidden behind a NAT. The Remote Assistance experience is transparent from the perspective of the users involved, regardless of whether or not NAT is being used on either user's network. For most small business and home user environments, Remote Assistance in Windows 7 and Windows Vista will seamlessly traverse a NAT-enabled router with no additional router configuration required. For information on enterprises that need to remotely support users who work from home, see the section titled "Other Possible Remote Assistance Usage Scenarios" later in this tutorial.
Note Offering Remote Assistance using DCOM is not usually a Teredo scenario because enterprise users are behind a corporate firewall and are not separated from each other by NATs.
Remote Assistance can connect across restricted NATs and cone NATs, which generally comprise the large majority of deployed NATs. Beginning with Windows 7, Remote Assistance can also connect across certain types of symmetric NATs, but only if the other computer is not behind a symmetric NAT as well.
Remote Assistance will not connect in certain configurations. Specifically:
- Remote Assistance will not work if the NAT-enabled router is configured to block the specific ports used by Remote Assistance. See the section titled "Remote Assistance and Windows Firewall" later in this tutorial for more information.
- Remote Assistance will not work if the User's NAT-enabled router is configured to block all UDP traffic.
Note To determine the type of NAT a network is using, open an elevated command prompt and type netsh interface teredo show state.
To verify whether your NAT supports Remote Assistance, you can use the Internet Connectivity Evaluation Tool at http://www.microsoft.com/windows/using/tools/igd/default.mspx. If your NAT supports Universal Plug and Play (UPnP), then Remote Assistance should be able to get a global IPv4 address that allows anyone to connect to you. If your NAT supports Teredo/ IPv6 and you are running Windows 7 or Windows Vista, then an RA Helper that is running Windows 7 or Windows Vista and is Teredo-enabled should be able to connect to you.
In this tutorial:
- Supporting Users with Remote Assistance
- Understanding Remote Assistance
- Remote Assistance vs. Remote Desktop
- Improvements to Remote Assistance in Windows 7
- How Remote Assistance Works in Windows
- Remote Assistance Operational States
- User vs. Helper Functionality
- Remote Assistance and NAT Traversal
- Remote Assistance and IP Ports Used
- Remote Assistance and Windows Firewall
- Remote Assistance and the Secure Desktop
- Remote Assistance Logging
- Purpose of Remote Assistance Session Logging
- Session Log Path and Naming Convention
- Using Remote Assistance in the Enterprise
- Using Remote Assistance in the Corporate Help Desk Environment
- Other Possible Remote Assistance Usage Scenarios
- Interoperability with Remote Assistance in Windows Vista
- Interoperability with Remote Assistance in Windows XP
- Implementing and Managing Remote Assistance
- Initiating Remote Assistance Sessions
- Initiating Remote Assistance from the GUI
- Initiating Remote Assistance from the Command Line
- Managing Remote Assistance Using Group Policy
- Configuring Remote Assistance in Unmanaged Environments
- Additional Registry Settings for Configuring Remote Assistance