如何在 Windows Server 2012 中设置 RDP 的网络接口?

如何在 Windows Server 2012 中设置 RDP 的网络接口?

我有一台具有多个网络接口的服务器,我需要 RDP 仅监听其中一个接口上的连接;该服务器不是远程桌面服务器,RDP 仅用于远程管理

在 Windows Server 2008 R2 中,我能够使用控制台进行配置Remote Desktop Session Host;在 Windows Server 2012 中,该控制台不再存在。

我如何在 WS2012 中配置它?

答案1

远程桌面服务实际上有一个非常丰富的 WMI 对象库,您可以利用它查询和操作配置。从 Vista/2008 开始,它位于根\cimv2\终端服务命名空间。下面是开始浏览可用内容的好地方:远程桌面服务配置类

关于您的具体问题,我只想澄清一下,RDP 只能绑定到网络适配器,而不是特定 IP。我知道您说的是“网络接口”。我只是想为可能偶然发现这个问题的其他人澄清一下。对于只有一个适配器和多个 IP 的机器来说,这是一个相当常见的请求。如果这就是您要找的,还有其他 ServerFault 问题,答案更详细。但如果我没记错的话,最好的办法是使用内置防火墙限制连接。

满足你需求的特定类叫做Win32_TSNetworkAdapter 设置。您可以使用 3 种与该类相关的方法:

在我的经验中,设置网络适配器LanaID比更可靠选择网络适配器IP因为有“所有网络适配器”选项。如果当前配置为“所有网络适配器”,它似乎不会更改为具有您指定的 IP 的特定适配器,它只会将其保留在“所有网络适配器”上,这在技术上仍然是正确的。

所以你只能使用设置网络适配器LanaID并且需要一个整数 ID 值作为方法的参数。下面介绍如何找到要使用的 ID。首先获取对类实例的引用。此处的示例将使用名为“RDP-Tcp”的默认终端名称,但您的系统可能(尽管可能性不大)有其他或不同的终端名称。

您可以使用以下 PowerShell 检查网络适配器配置的当前状态:

gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices" | Select NetworkAdapterLanaID,NetworkAdapterName

为了调用一个方法,最好将类的实例分配给一个变量,所以让我们这样做:

$ts = gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices"

此类的一个方便特性是,它返回的几个属性是您可以使用的可能的网络适配器的列表。

$ts | select -expand DeviceIDList
$ts | select -expand NetworkAdapterList

这应该返回两个列表。第一个是基于 0 的 ID 列表,第二个是与第一个列表关联的适配器的友好名称。因此在我的测试机器上,它返回:

0
1

All network adapters configured with this protocol
Intel(R) PRO/1000 MT Network Connection

如果您想要将属性中的 IDDeviceID与中的名称关联起来NetworkAdapterList,您可以这样做:

$adapters = $ts | select -expand NetworkAdapterList
$device_ids = $ts | select -expand DeviceIDList

$adapter_list = @()
foreach ($device_id in $device_ids) {
  $adapter_list += @{$device_id = $adapters[$device_id]}
}
$adapter_list # Mapping of device IDs to adapter names

默认情况下,它设置为使用 ID 0,即“所有使用此协议配置的网络适配器”。因此,如果我们想将其更改为明确使用 Intel NIC,我们只需使用现有对象和相关 ID 调用该方法即可。

$ts.SetNetworkAdapterLanaID(1)

然后您可以通过重新查询对象来验证更改:

gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices" | Select NetworkAdapterLanaID,NetworkAdapterName

答案2

运行注册表编辑器

搜索键+仅匹配整个字符串:终端服务器

get lanatable. example:
    {564D81F9-15B4-42EC-9019-534A56DBEB81}
    {B5A5F6CC-5DFD-43F7-B5B0-20490A58A2EB}
note LanaId for each of them
set HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Winstations\RDP-tcp\LanAdapter 
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Terminal Server\Winstations\RDP-tcp\LanAdapter
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-tcp\LanAdapter
to LandaID you want accept remote desktop connection

答案3

据我所知,Remote Desktop Session HostWindows Server 2012 中不再存在。

你可以在以下位置找到它的一些配置Server Manager --> Server Role

相关内容