Адрес клиента RDP неизвестен при подключении через шлюз

10

Я натолкнулся на showtopper в своей великолепной задаче создания объекта групповой политики для принтера, который отображает принтеры в сеансе TS на основе адреса клиента RDP - этот адрес неизвестен при использовании сервера шлюза :(

Щелкните правой кнопкой мыши + состояние сеанса через шлюз RD:

введите описание изображения здесь

То же самое в сеансе, НЕ проходящем через шлюз RD:

введите описание изображения здесь

Кто-нибудь знает, возможно ли это обойти? Возможно, есть какие-то недокументированные изменения реестра, которые я могу сделать на сервере шлюза, чтобы передать эту информацию?

pauska
источник

Ответы:

2

Похоже, это невозможно. Я собираюсь подать запрос на функцию в Microsoft.

pauska
источник
1

Поскольку шлюз TS по сути является прокси, почему бы вам не запросить логи прокси ? Фильтрация последнего события 303 из шлюза удаленных рабочих столов данным пользователем должна предоставить вам IP-адрес. Я не знаю ни одного заголовка в стиле "X-Forwarded-For" в RDP.

заместитель Wabbit
источник
Я не уверен, знаете ли вы о том, как работает таргетинг на уровне элементов в объекте групповой политики, но я вполне уверен, что нет никакого способа снабдить его данными из файла журнала.
Пауска
@pauska ах, нацеливание. Я думал, что ты писал сценарии. Никаких дальнейших идей, извините.
the-wabbit
WQL поиск по объекту групповой политики? Это ... грубо, но может сработать.
Патрик
@ Патрик почти все в сценариях Windows - грубый, если не уродливый. Мы не можем изменить это, поэтому мы должны жить с этим.
The Wabbit
0

Возможно, вы могли бы создать сценарий входа, который отображает принтер на основе RDP-соединения? Сначала создайте файл «iplist.txt», который содержит IP-адреса и отделы, для которых вы хотите сопоставить принтер:

192.168.0.173,Marketing
192.168.1.173,Sales
192.168.2.173,Finance

Поместите файл iplist.txt в каталог, к которому входящий пользователь получит доступ для чтения. Оттуда вы можете использовать этот пакетный файл для сопоставления принтера:

@echo off

netstat -na | find "3389" | find "ESTABLISHED" > logfile.txt

for /f "tokens=1,2 delims=," %%a in (iplist.txt) do (

    for /f %%i in ('findstr %%a logfile.txt') do (
        set ip_addr=%%a
    )

    if "%ip_addr%" == "%%a" (
        if "%%b" == "Marketing" (
            rundll32 printui.dll,PrintUIEntry /in /q /n \\print_server\marketing_ptr
            REM Set as default:
            rundll32 printui.dll,PrintUIEntry /y /q /n
            goto :end )
        if "%%b" == "Sales" (
            rundll32 printui.dll,PrintUIEntry /in /q /n \\print_server\sales_ptr
            REM Set as default:
            rundll32 printui.dll,PrintUIEntry /y /q /n
            goto :end ) 
        if "%%b" == "Finance" (
            rundll32 printui.dll,PrintUIEntry /in /q /n \\print_server\finance_ptr
            REM Set as default:
            rundll32 printui.dll,PrintUIEntry /y /q /n
            goto :end ) )
)

:end 

del logfile.txt

Вы также хотите убедиться, что logfile.txt будет записан в место, в которое пользователь, вошедший в систему, получит доступ для записи.

Это может быть не так, как вы ищете, но это может работать как альтернатива ....

matrixx333
источник
Я только что понял, что если несколько человек подключены к компьютеру через RDP, то это сопоставит принтер с человеком, чей ip-адрес является самым высоким в списке соединений ..... поэтому он может работать некорректно в вашей среде :(
matrixx333
Спасибо за усилия, но суть в том, что IP-адрес клиента «НЕИЗВЕСТЕН» при подключении через шлюз RD. У меня уже есть решение для сопоставления принтеров при раскрытии IP-адреса клиента (расширение групповой политики).
pauska
Я прошу прощения за недоразумение ... все же, написание сценария было весело :)
matrixx333