Как сделать проброс портов для rdp
Добавил пользователь Евгений Кузнецов Обновлено: 05.10.2024
Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
Часто можно услышать совершенно неверное утверждение, что в части сетевых настроек операционные системы Windows значительно уступают своим конкурентам (Linux и BSD). Отчасти такие суждения опираются на опыт администрирования стандартных ролей полностью игнорируя возможности командной строки.
Начиная с Windows Server 2003 в состав системы был в введена команда Netsh, которая позволяет гибко управлять сетевыми настройками компьютера. Обзор всех возможностей этой утилиты займет не одну статью, поэтому мы остановимся на командах Netsh для интерфейса Portproxy, позволяющих непосредственно решить нашу задачу.
Данный набор команд позволяет перенаправлять приходящие пакеты с IPv4 и IPv6 портов на любые IPv4 и IPv6 порты компьютера назначения в любых комбинациях. Единственное ограничение - portproxy может работать только с протоколом TCP, но в большинстве случаев этого достаточно.
Для добавления перенаправления используется команда add v4tov4 (если требуется перенаправление с IPv4 в IPv6 используйте v4tov6 и т.д.), полный синтаксис будет такой:
- listenaddress - локальный адрес на котором принимаются соединения
- listenport - локальный порт на котором принимаются соединения
- connectaddress - удаленный или локальный адрес на который перенаправляются соединения
- connectport - удаленный или локальный порт на который перенаправляются соединения
Для изменения уже существующего правила используется команда set v4tov4, которая имеет идентичный синтаксис, listenaddress и listenport - являются обязательными параметрами. Из необязательных параметров можно указывать только тот, который нужно изменить.
Для удаления правил используйте delete v4tov6 с указанием входящих адреса и порта:
Для просмотра существующих правил введите:
Вместо all допустимо указывать v4tov4 или v6tov4 и т.п. для просмотра только соответствующих правил.
Для сброса всех существующих правил используйте:
Чтобы не быть голословными рассмотрим практический случай использования portproxy в одной довольно непростой ситуации.
У одного нашего клиента имеется две аффилированных (т.е. принадлежащих одному владельцу) организации, имеющие разный вид деятельности и между собой не взаимодействующие. Одна из них находится в городе и не испытывает проблем с внешними коммуникациями. Вторая в сельской местности где доступен только среднего качества интернет, а о выделенном IP-адресе не может быть и речи.
Поэтому, когда встал вопрос организации удаленного доступа к сети второй организации с административными и контрольными целями, то было принято решение использовать для этого ресурсы первой организации, при этом внутренние сети обоих компаний не должны видеть друг друга и вообще иметь какой-либо доступ к ресурсам другой организации.
Кроме того, выяснилось, что обе сети имеют одинаковый диапазон IP-адресов, что делало маршрутизацию между ними в принципе крайне затруднительной. По условиям задачи требовалось обеспечить доступ к RDP (порт 3389) сервера SRV-2-1 и SSH (порт 22) сервера SRV-2-2 второй организации, для этого выделялся сервер SRV-1-1 первой компании, при этом, как можно увидеть из схемы ниже, сервера обоих компаний также имеют одинаковые внутренние адреса.
Между серверами был поднят VPN-туннель, и они видят друг друга по адресам VPN-сети (10.8.0.0), а дальше на выручку приходит portproxy. Так как порты 3389 и 22 соответствующие нужным службам уже использовались для целей администрирования первой компании, то мы выбрали для служб второй компании внешние порты 3390 и 22222, которые были проброшены с внешнего интерфейса роутера первой компании на сервер SRV-1-1 штатным образом.
Первое правило отправит все пакеты пришедшие на порт 3390 с адресом 192.168.0.200 (внутренний адрес SRV-1-1) в VPN-туннель серверу SRV-2-1, а так как он уже является целевым для службы RDP, то сразу меняем порт назначения на 3389. Первая часть задачи выполнена.
Второе правило отправит к SRV-2-1 все пакеты с порта 22222 (SSH), теперь нам надо научить этот сервер как правильно доставить их адресату. Для этого добавим уже этому серверу следующее правило:
Согласно которому сервер SRV-2-1 в сети второй компании будет слушать порт 22222 на интерфейсе VPN-сети и передавать все полученные пакеты на порт 22 (SSH) сервера SRV-2-2.
Как видим мы весьма просто реализовали довольно сложную схему, так пакет к серверу SRV-2-2 проходит три промежуточных узла, но при этом мы не настраивали никакой маршрутизации и не устанавливали никакого дополнительного ПО и вообще обошлись минимальным вмешательством в инфраструктуру.
Любительский
Содержание
Содержание
Зачем открывать доступ извне?
Цвета и формы IP-адресов
Прежде чем разбираться, как открыть доступ к своим ресурсам, следует понять, как вообще происходит соединение в сети Интернет. В качестве простой аналогии можно сравнить IP-адрес с почтовым адресом. Вы можете послать письмо на определенный адрес, задать в нем какой-то вопрос и вам придет ответ на обратный адрес. Так работает браузер, так вы посещаете те или иные сайты.
Но люди общаются словами, а компьютеры привыкли к цифрам. Поэтому любой запрос к сайту сначала обрабатывается DNS-сервером, который выдает настоящий IP-адрес.
Допустим теперь, что кто-то хочет написать письмо вам. Причем не в ответ, а самостоятельно. Не проблема, если у вас статический белый адрес — при подключении сегодня, завтра, через месяц и год он не поменяется. Кто угодно, откуда угодно, зная этот адрес, может написать вам письмо и получите его именно вы. Это как почтовый адрес родового поместья или фамильного дома, откуда вы не уедете. Получить такой адрес у провайдера можно только за отдельную и регулярную плату. Но и с удаленным доступом проблем меньше — достаточно запомнить выданный IP.
Обычно провайдер выдает белый динамический адрес — какой-нибудь из незанятых. Это похоже на ежедневный заезд в гостиницу, когда номер вам выдается случайно. Здесь с письмом будут проблемы: получить его можете вы или другой постоялец — гарантий нет. В таком случае выручит DDNS — динамический DNS.
Самый печальный, но весьма распространенный в последнее время вариант — серый динамический адрес: вы живете в общежитии и делите один-единственный почтовый адрес с еще сотней (а то и тысячей) жильцов. Сами вы письма писать еще можете, и до адресата они дойдут. А вот письмо, написанное на ваш почтовый адрес, попадет коменданту общежития (провайдеру), и, скорее всего, не пойдет дальше мусорной корзины.
Кто я, где я, какого я цвета?
Что такое порты и зачем их бросать?
Проброс порта — это специальное правило в роутере, которое разрешает все обращения извне к определенному порту и передает эти обращения на конкретное устройство во внутренней сети.
Игровые порты: что, куда бросаем?
Какой порт открыть — зависит от конкретного программного обеспечения. Некоторые программы требуют проброса нескольких портов, другим — достаточно одного.
В следующей таблице приведены некоторые игры и используемые ими порты на ПК:
Цель – безопасно подключиться к серверу за роутером из внешней сети.
Убедитесь, что вы понимаете как создать простейший SSH туннель, например, такой как здесь
Нормальные ноутбуки на сайте - OLDI
Создание туннеля это довольно трудоёмкая задача, состоящая условно из шести частей.
- Настройка SSH сервера
- Настройка SSH клиента
- Проброс портов на роутере
- Открытие сессии клиентом
- Настройка RDP на сервере
- Подключение по RDP с клиента
Вам понадобятся роутер, putty и freesshd.
Роутер должен поддерживать Port Forwarding приобрести онлайн можно в магазинах:
1. Настройка SSH сервера
1.01 Установить и запустить freeSSHd. Создайте ключ, чтобы сервер не ругался, потом поменяем его на новый ключ.
1.02) Здесь есть нюансы, в данный момент я предпочитаю выбирать "Нет"
1.03) Значок freeSSHd появляется в трее, выберите Settings
1.04) Само собой, нужно выдать разрешение бранмауэру.
1.05) В разделе Authentication, разрешить только доступ по ключам
1.06) Зайти в меню Users
1.07) Добавить нового пользователя
1.08) Вид после добавления
1.09) Запустить на сервере PuTTYgen
1.10) Сгенерировать пару ключей
1.11) Публичный ключ, который останется лежать на сервере, нужно скопировать из верхнего окна
1.12) Вставить публичный ключ в текстовый редактор, проверить чтобы он был в одну строку и начинался со слова ssh-rsa
1.13) Сохранить ключ как текстовый файл, имя должно быть такое же как и пользователя, который был ранее создан (в нашем случае – sini)
1.14) Удалить расширение
1.16) Показать freeSSHd путь до ключа
1.17) Сохранить приватный ключ, который затем нужно будет перенести на клиентский компьютер В результате предыдущих манипуляций мы имеем запущенный SSH сервер и пару ключей.
2. Настройка SSH на компьютере клиенте
2.18) На клиентском компьютере нужно положить приватный ключ в заранее созданную для него папку
2.19) На клиенте запускаем PuTTY и создаем подключение с именем sini. В поле Host Name (or IP address) указываем нужный внешний ip сервера, т.к. он за роутером, это будет ip роутера. Меняем порт на 443 или какой-нибудь другой, только осмысленно.
2.20) В поле Auth указываем путь до приватного ключа
2.21) Выбираем ключ
2.22) Создаём туннель
Изображение ниже показывает, что мы поставили в соответствие локальному порту 3391 порт 3389 на IP 192.168.0.101
2.23) Сохраняем сессию. В поле Нost Name пишем IP сервера.
На этом этапе у нас подготовлено SSH соединение, которое сервер слушает на 443 порту.
На всякий случай уточняю, что в этом примере IP сервера в локальной сети 192.168.0.101
Внешний IP сервера это IP роутера. На картинке он замазан, в Вашем случае это будет Ваш внешний IP, т.е. что-то похожее на 78.47.141.187
Если Вам нужен нормальный ноутбук, а не как у меня на картинке - заходите на сайт OLDI
Проброс портов на роутере
3.21) Объясняем роутеру, что когда идёт запрос по 443 порту нужно передать его именно серверу (делаем Port Forwarding – Проброс портов)
Putty на клиенте
4.22) Открываем сессию
Настройка RDP - На сервере
5.23) Создаем пользователя sini
5.24) Обязательно создаем пароль
5.25) Разрешаем доступ по RDP
5.27) Добавляем Синего в список пользователей, которым разрешён доступ по RDP
Настройка RDP - На клиенте
6.28) Запускаем на клиенте mstsc (сперва нужно открыть SSH туннель, если он был открыт нужно проверить не закончилась ли сессия.
Чтобы не помешать никому работать - можно проверить подключён ли кто-то к компьютеру или нет. Сделать это можно с помощью PSTools инструкция находится здесь
6.29) Подключаемся к localhost:3391
Заметка для OpenBSD
Делать нужно так же как описано по ссылке, но на первой картинке отметить
Local ports accept connections from other hosts
Source port можно выбрать любым из свободных, напрмер 6789. В поле Destination указать
Принцип изолированного терминального сервера
Удаленный рабочий стол отлично подходит для подключения к компьютеру или серверу Windows по локальной или удаленной сети. Вы можете получить доступ к локальным дискам, принтерам, файлам и т.д., так если бы вы сидели перед ним. Я хочу вам предложить два примера использования подхода с разными портами RDP в рамках одного сервера или компьютера, с которыми вы можете столкнуться в своей практике.
Первый сценарий. Уникальное пространство для подрядчиков
Предположим, что у вас есть RDS ферма или отдельный терминальный стол. У вас есть две группы пользователей, первая это ваши сотрудники, а вторая, это подрядчики. У вас появилась задача для подрядчиков запретить пробрасывание локальных дисков, съемных носителей, буфера обмена и подключение к интернету. Логично, что вы скажете Иван, но ведь это можно сделать с помощью групповых политик и будите правы, но есть БОЛЬШОЕ НО . Буфер обмена вы можете запретить на уровне пользователя, а вот запретить подключение локальных дисков или съемных устройств для отдельной группы людей вы не можете, только на уровне компьютера, но слава Богу, что это можно обойти. Создав две или более независимые службы удаленного рабочего стола вы их используете на одном сервере.
Второй сценарий для проброса портов
Предположим, что у вас есть стационарный компьютер с Windows 10 или Windows Server. Есть роутер Mikrotik с внешним IP-адресов и на нем настроен проброс портов RDP. Когда у вас несколько серверов, то проблем с пробросом на разные порты нет, так как я вам рассказывал "Как поменять порт RDP", а что делать в рамках одного сервера. Это я вам и покажу в данной статье.
Как добавить новый порт прослушивания RDP на сервере терминалов
И так в моем тестовом окружении есть виртуальная машина на которой установлена Windows Server 2019, имеющая установленную роль RDS. На ней я хочу для подрядчиков поднять дополнительную службу RDP работающую по порту 3390. Доступ к стандартному порту 3389 для подрядчиков запрещу, а так же сделаю для них политику запрещающую:
- Перенаправление локальных дисков
- Перенаправление USB-дисков и устройств
- Запрет буфера обмена
- Запрет изменения прокси-сервера в Internet Explorer или Google Chrome
Чтобы все это провернуть, нам потребуется произвести манипуляцию с реестром Windows, путем копирования ветки и изменения ее настроек. Запустите окно выполнить и введите regedit.
Далее вам необходимо перейти в раздел реестра:
Перед вами будет ветка реестра. которая отвечает за подключение к удаленному рабочему столу по стандартному порту 3389. Тут вы увидите большое количество ключей, которые нам помогут ограничить нужную группу людей, но об этом чуть ниже.
Чтобы добавить новый порт прослушивания RDP на сервере терминалов, вам необходимо скопировать текущую ветку реестра и затем ее видоизменить. Для этого мы произведем ее экспорт, через контекстное меню, выбрав соответствующий пункт меню.
Далее вам необходимо указать место сохранения вашей экспортируемой ветки реестра. В моем примере это будет рабочий стол и я задам имя 3390, по номеру будущего порта.
В результате у вас будет файл в формате .reg, который вы можете легко отредактировать любым текстовым редактором, мне будет достаточно встроенного блокнота в Windows Server 2019. Щелкаем по нему правым кликом и выбираем пункт изменить.
Находим третью строку с адресом ветки и меняем у нее на конце имя, в моем примере это будет RDP-Tcp-3390.
Обязательно сохраните настройки. Далее вам необходимо импортировать это reg файл на нужном терминальном сервере. Обратите внимание, что будет предупреждение, что вы должны понимать, что делаете. Если не хотите его видеть в своем сценарии, то можете сконвертировать reg файл в exe.
В результате будет создана новая ветка реестр.
Переходим в вашу новую ветку в редакторе. Пока она так же работает по порту 3389 и нам нужно его поменять, за это отвечает ключ PortNumber. Открываем его, переключаем в десятичное отображение и меняем номер порта на 3390
Если хотите использовать шеснадцатиричное представление ,то вам может помочь встроенный калькулятор в Windows, в режиме программиста. Тут число 3390 будет представлено в виде "D3E".
Далее я хочу запретить для данного подключения по RDP буфер обмена, для этого есть ключ реестра fDisableClip. Если вы установите в fDisableClip значение "0", то буфер обмена между хостовой системой и удаленной будет работать, если вы выставите "1", то вы запретите использование общего буфера обмена.
Далее я хочу запретить перенаправление USB-устройств, локальных дисков на терминальный стол. Для этого есть ключ реестра fDisableCdm. По умолчанию у ключа fDisableCdm выставлено значение "0", что подразумевает возможность сопоставления клиентских дисков и их подключение в автоматическом режиме. Если вы выставите у fDisableCdm значение "1". то вы запретите перенаправление (проброс) USB и локальных дисков на терминальный стол.
Следующим шагом я сделал запрет изменения настроек прокси-сервера, если у вас интернет дается всем по умолчанию и нет обязательной аутентификации, например ISA или Kerio Control, то вы можете тут задать какие-то неработающие адреса, они будут блокировать интернет и пользователь не сможет их поменять, делая такой терминальный стол более изолированным.
Как ограничить порты подключения на терминальном сервере
По умолчанию, на оба RDP порта 3389 и 3390 (Созданный ранее) пользователи группы администраторы и пользователи удаленного рабочего стола имею права для подключения, это не совсем правильно. Что я хочу сделать:
- Члены группы администраторы должны иметь возможность подключаться к любому порту RDP
- Члены группы удаленного рабочего стола должны иметь возможность подключаться только к стандартному порту 3389
- А вот группа изолированные пользователи должны иметь возможность подключаться исключительно ко второму RDP порту 3390 (Изолированное окружение в рамках общего терминального сервера)
Вы открываете оснастку "Active Directory Пользователи и компьютеры" и создаете отдельные группы, я создам группу term-svt2019s01-rdp-3390 для изолированного подключения.
В группу term-svt2019s01-rdp-3390 я добавлю пользователя Барбоскина Генная Викторовича.
Далее вам нужно нужного пользователя. в моем случае Барбоскина Генная Викторовича исключить из группы администраторы или группы удаленного рабочего стола, если он в них состоял и назначить права доступа на порт 3390 для группы term-svt2019s01-rdp-3390. Сделать штатными средствами в операционных системах Windows Server 2012 R2 и выше вы не сможете, так как в оснастке по управлению RDS фермой нет такой функции, но не все потеряно.
В операционных системах Windows Server 2008 R2 и ниже, при установке терминального сервера были замечательные оснастки TSADMIN.msc (Remote Desktop Services Manager) и TSCONFIG.msc (Remote Desctop Session Host Configuration). Это были великолепные инструменты помогающие в удобном интерфейсе взаимодействовать с терминальными подключениями и настройками. Именно благодаря TSCONFIG.msc у вас была возможность настроить разрешения на подключение к конкретному RDP порту. У меня для таких целей всегда есть виртуальная машина с установленными на нее оснастками, которые добавляются при установке роли терминального сервера.
Запускаем оснастку "Конфигурация узла сеансов удаленных рабочих столов (Remote Desctop Session Host Configuration)". Щелкаем по корню и из контекстного меню выбираем пункт "Подключиться к серверу узла сеансов удаленных рабочих столов"
Выбираем сервер на котором вы настроили два разных RDP порта.
Щелкаем по изолированному подключению правым кликом и открываем его свойства.
Перейдите на вкладку "Безопасность". Обратите внимание, что тут по умолчанию у группы "Пользователи удаленного рабочего стола" выставлены права на:
Обращу ваше внимание, что данная вкладка почему-то доступна исключительно из операционной системы Windows Server 2008R2, с установленными компонентами, в Windows Server 2012 R2 и выше после регистрации оснасток, эта вкладка почему-то отсутствовала. Если кто-то знает причину, то напишите в комментариях
Вы так же можете более подробно посмотреть, что именно требуется для подключения по удаленному рабочему столу.
Удаляем из списка доступа (DACL) группу "Пользователи удаленного рабочего стола" и нажимаем кнопку "Добавить". В открывшемся окне найдите вашу группу доступа
Можем более тонко выставить разрешения. Сохраняем все.
Открытие порта для второго RDP подключения
Наш изолированный терминальный стол почти готов, вам нужно не забыть открыть порты на брандмауэре Windows или другом фаэрволе, который вы используете. Я это буду делать через утилиту netsh. Я вам уже приводил пример такого правила в статье, где я удаленно включал RDP подключение. Откройте командную строку от имени администратора и запустите вот такую команду:
netsh advfirewall firewall add rule name="allow RemoteDesktop 3390" dir=in protocol=TCP localport=3390 action=allow
Создание RDP файла подключения
Запустите клиента "Подключения к удаленному рабочему столу". Укажите адрес подключения, порт подключения, имя пользователя и нажмите кнопку "Сохранить как"
Выбираем место сохранения RDP файла с подключением к изолированному терминальному серверу.
Чем хорошо файлы формата rdp можно легко редактировать и открывать с помощью любого текстового редактора.
В итоге вы можете производить нужные вам настройки в рамках данного клиента. После чего сохраните файл и передайте его сотруднику для подключения.
Всем доброго времени суток, давно не писал в блог. Поменяли мы на работе старый дохленький DIR-300 который отпахал целых 6 лет (да, тогда d-link еще мог делать сетевое оборудование) на ZyXEL Keenetic II (я всегда и всем рекомендую ZyXEL еще со времен Omni 56k (pci-модема)). На одном из компьютеров рабочей группы настроен доступ к удаленному рабочему столу т.к. этот компьютер является неким сервером 1С к которому подключались почти все локальные машины для доступа к 1С. Читаем далее.
и сразу же попадаем на вкладку Трансляция сетевых адресов (NAT):
Нажимаем Добавить правило:
На этом все. Если на самом компьютере верно настроено подключение RDP и на компьютере-сервере (на который мы открыли порт 3389 выше) включена возможность подключения к удаленному рабочему столу то все должно функционировать. Пишите комментарии, поможем чем сможем.
Комментариев: 6 на “ Настройка удаленного рабочего стола (проброс порта) на роутере ZyXEL Keenetic II ”
Настройте проброс портов в роутере с указанием нужного порта.
Создать на компьютере учётную запись, под которой будет подключаться пользователь удалённого рабочего стола.
В разделе Настройка отображения выбираем размер удаленного рабочего стола. В разделе Цвета выбираем глубину цвета. Для медленных соединений рекомендуется устанавливать меньшую глубину.
Классная статья! Но есть вопрос: имеется сеть, в которую интернет от провайдера приходит на маршрутизатор с оптикой, Внешний IP белый. Далее имеется еще один маршрутизатор Asus (он стоит в сети за первым маршрутизатором) и за asusом локальная сеть с рабочими станциями и сервером. Вопрос: как пробросить порты на первом и втором маршрутизаторе, чтобы из вне попасть на сервер, посредством RDP конечно?
дома стоит роутер с реальным IP, к нему подключен комп. подскажите, пожалуйста, как настроить удаленный рабочий стол , чтобы можно было извине достучаться до компа? Значит либо не тот порт открыт, либо проброс портов роутере не рашет.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Читайте также: