Feeds:
Записи
Комментарии

Archive for Декабрь 2018

В этой заметке, кратко опишу установку роли Remote Desktop Gateway в самой простой конфигурации на Windows Server 2019(17763) с указанием порта отличного от стандартного.

ComputerName

IPAddress

HTTPPort(default) 

UDPPort(default) 

  srv-rdgw.contoso.com

192.168.0.21 

443

3391

1. Установка роли RDS-Gateway

Проверим, что роль не установлена:

PS > Get-WindowsFeature RDS*

Display Name                                            Name                       Install State
------------                                            ----                       -------------
    [ ] Remote Desktop Connection Broker                RDS-Connection-Broker          Available
    [ ] Remote Desktop Gateway                          RDS-Gateway                    Available
    [ ] Remote Desktop Licensing                        RDS-Licensing                  Available
    [ ] Remote Desktop Session Host                     RDS-RD-Server                  Available
    [ ] Remote Desktop Virtualization Host              RDS-Virtualization             Available
    [ ] Remote Desktop Web Access                       RDS-Web-Access                 Available
            [ ] Remote Desktop Licensing Tools          RDS-Licensing-UI               Available
  

Установка:

PS > Install-WindowsFeature RDS-Gateway -IncludeAllSubFeature -IncludeManagementTools

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Network Policy and Access Services, Remot...
  

2. Конфигурирование портов GUI

Попробуем задать порт отличный от стандартного с указанием IP адреса. Запускаем оснастку tsgateway.msc , выбираем сервер и нажимаем Properties.

tpprop-01122018

Transport-0122018

Выскакивает ошибка, что установить порт не удалось. В EventLog регистрируются два события, в которых указано, что не удалось изменить стандартные правила в Firewall.

error-01122018

Проверим стандартные правила в Firewall:

PS > Get-NetFirewallRule TSG-HTTPS-Transport-In-TCP,TSG-UDP-Transport-In-UDP | Select Name, Enabled

Name                       Enabled
----                       -------
TSG-HTTPS-Transport-In-TCP   False
TSG-UDP-Transport-In-UDP      True
  

Для HTTP транспорта, оно не включено.

PS > Get-NetFirewallRule TSG-HTTPS-Transport-In-TCP,TSG-UDP-Transport-In-UDP | Get-NetFirewallPortFilter


Protocol      : UDP
LocalPort     : 3391
RemotePort    : Any
IcmpType      : Any
DynamicTarget : Any

Protocol      : TCP
LocalPort     : 443
RemotePort    : Any
IcmpType      : Any
DynamicTarget : Any
  

Новые правила, как в предыдущих версиях Windows Server, автоматически не создались для нестандартных портов.

Посмотрим изменения в IIS:

bin-01122018

Настройки применились, в tsgateway.msc  все без изменений. Проверим порты:

PS > netstat -an | Select-String "4443|4444|3391"

  TCP    0.0.0.0:4443           0.0.0.0:0              LISTENING
  TCP    [::]:4443              [::]:0                 LISTENING
  UDP    0.0.0.0:3391           *:*
  UDP    [::]:3391              *:*
  

Для UDP порт остался прежним.

* Правила Firewall по умолчанию:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy\FirewallRules
  

PS > Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy\FirewallRules\ -Name TSG*Transport*


TSG-HTTPS-Transport-In-TCP : v2.29|Action=Allow|Active=FALSE|Dir=In|Protocol=6|LPort=443|App=System|Name=@FirewallAPI.dll,-39137|Desc=@FirewallAPI.
                             dll,-39138|EmbedCtxt=@FirewallAPI.dll,-39135|
TSG-UDP-Transport-In-UDP   : v2.29|Action=Allow|Active=TRUE|Dir=In|Protocol=17|LPort=3391|App=%systemroot%\system32\svchost.exe|Svc=tsgateway|Name=
                             @FirewallAPI.dll,-39139|Desc=@FirewallAPI.dll,-39140|EmbedCtxt=@FirewallAPI.dll,-39135|
  

Правила по умолчанию не будем изменять, лучше создадим новые.

Часть настроек Remote Desktop Gateway хранится в реестре: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TerminalServerGateway

Другая часть, хранится в файле rap.xml:

C:\Windows\System32\tsgateway\rap.xml

Проверим, настройки в реестре:

treg-01122018

Изменения не применились, все осталось по умолчанию.

3. Конфигурирование портов скриптом

# Константы
$IPAddress = "192.168.0.21"
$HTTPPort = 4443
$UDPPort = 4444
$hklm = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TerminalServerGateway\Config\Core"

# Создаем правила
Remove-NetFirewallRule TSG-HTTPS-Transport-In-TCP,TSG-UDP-Transport-In-UDP
New-NetFirewallRule -Name "TSG-HTTPS-Transport-In-TCP" -DisplayName "Remote Desktop Gateway HTTP Listener" -Direction Inbound -LocalPort 4443 -Protocol TCP -Action Allow -Profile Any
New-NetFirewallRule -Name "TSG-UDP-Transport-In-UDP" -DisplayName "Remote Desktop Gateway UDP Listener" -Direction Inbound -LocalPort 4444 -Protocol UDP -Action Allow -Profile Any

# Останавливаем службу
Stop-Service TSGateway

# Изменяем IP и порт для UDP
Set-ItemProperty -Path $hklm -Name HttpIPAddress -Value $IPAddress
Set-ItemProperty -Path $hklm -Name UdpIPAddress -Value $IPAddress
Set-ItemProperty -Path $hklm -Name UdpPort -Value $UDPPort

# Изменяем IP и порт для UDP 
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName SetIPAndPort -Arguments @{TransportType = 2;IPAddress = $IPAddress; Port = $UDPPort}

Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName Configure	
	
# Запуск службы
Start-Service TSGateway

# Изменяем IP и порт для TCP
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName SetIPAndPort -Arguments @{TransportType = 1;IPAddress = $IPAddress; Port = $HTTPPort; OverrideExisting = 1}
	
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName Configure
	

# Перезапуск службы
Restart-Service TSGateway

# Изменяем IP и порт для TCP 
Set-ItemProperty -Path $hklm -Name HttpsPort -Value $HTTPPort

Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName SetIPAndPort -Arguments @{TransportType = 1;IPAddress = $IPAddress; Port = $HTTPPort; OverrideExisting = 1}
	
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName Configure	

Restart-Service TSGateway

# Создаем self-certificate и привязываем его
$cert = Invoke-CimMethod -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServer -MethodName CreateSelfSignedCertificate -Arguments @{SubjectName = "SRV-RDGW.contoso.com"}
$CertHash = $cert.CertHash
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName SetCertificate -Arguments @{CertHash = $CertHash}

Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName Configure
	
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName SetCertificateACL -Arguments @{CertHash = $CertHash}

Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName RefreshCertContext -Arguments @{CertHash = $CertHash}

			
Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGatewayServerSettings | 
    Invoke-CimMethod -MethodName Configure

Restart-Service TSGateway
  

После применения настроек:

tnew-01122018

PS > netstat -an | Select-String "4443|4444|3391"

  TCP    0.0.0.0:4443           0.0.0.0:0              LISTENING
  TCP    [::]:4443              [::]:0                 LISTENING
  UDP    192.168.0.21:4444      *:*
  

IIS:

iis-01122018

Реклама

Read Full Post »