Вопрос или проблема
Мое интернет-соединение находится за NAT, что делает невозможным предоставление доступа к чему-либо снаружи (камеры видеонаблюдения, файловые серверы и т.д.)
Я пробую CloudFlare Zero Trust Tunnel, чтобы обойти его, и, кажется, это работает нормально. Я запустил установщик Windows и выполнил эту команду:
cloudflared.exe service install CLOUDFLARE_TOKEN_HERE
И настроил туннель так:
Теперь, если я подключаюсь к emby.example.com
, я могу увидеть мой веб-сайт, размещенный локально на порту 8096
, с внешнего компьютера.
Что я не могу сделать, так это подключиться к Windows RDP: он локально активен на порту 3389
, с отключенной опцией “Требовать аутентификацию на уровне сети”. Однако, если я открываю RDP клиент на внешнем компьютере и подключаюсь к rdp://rdp.example.com
, клиент просто ничего не находит. Почему?
Комментарий от @KolonUK верен, как и ссылка. Одной из причин является то, что приложение cloudflared может перехватить запрос и обработать любые требования аутентификации, такие как OneTimePin. (Отличный способ легко добавить немного дополнительной защиты для RDP подключения, кстати.)
В основном вы:
-
Устанавливаете приложение cloudflared на клиент (в дополнение к серверу).
-
Запускаете приложение со следующим командой для создания локального слушателя.
cloudflared access rdp –hostname rdp.example.com –url rdp://localhost:3389
-
А затем открываете ваш RDP клиент и подключаетесь к “localhost:3389”
Документация объясняет, что нужно держать слушатель запущенным.
Мне удалось запустить это в LinuxLight с Remmina в качестве RDP клиента.
Ответ или решение
Теория
Windows RDP (удалённый рабочий стол) позволяет удалённое подключение к компьютеру, работающему под управлением ОС Windows, но NAT (когда у вас нет прямого внешнего IP) может создавать серьезные трудности в установлении таких соединений. В этой ситуации Cloudflare Tunnel (Zero Trust) предлагает решение, позволяющее обойти ограничение, создаваемое NAT. Используя Cloudflare Tunnel, вы можете безопасно и надежно получить доступ к внутренним ресурсам вашей сети через Интернет.
Пример
В вашей ситуации вы успешно установили и настроили Cloudflare Tunnel для доступа к вашему локальному веб-сайту через ваш зарегистрированный домен emby.example.com
. Однако у вас возникли проблемы с доступом к RDP на порте 3389. Это связано с тем, что для подключения через Cloudflare Tunnel к RDP требуется дополнительная процедура, отличающаяся от подхода к HTTP-трафику.
Применение
Чтобы подключиться к RDP через Cloudflare Tunnel, выполните следующие шаги:
-
Установите cloudflared на клиенте, помимо сервера:
Это необходимо для того, чтобы клиент мог устанавливать безопасное соединение через туннель, управляемый Cloudflare. -
Создайте локальный слушатель на клиентской машине:
Запустите следующую команду на клиенте, чтобы создать локальный сервер, который перехватывает запросы RDP:cloudflared access rdp --hostname rdp.example.com --url rdp://localhost:3389
Эта команда создает локальный слушатель RDP на порту 3389, который туннелируется через Cloudflare и преобразуется на сервере.
-
Откройте ваш RDP клиент и установите соединение с
localhost:3389
:
Это обеспечит туннелирование вашего RDP-соединения, которое будет проходить через Cloudflare и возвращаться к вашему внутреннему серверу.
Важно отметить, что слушатель должен быть активен постоянно во время сеанса соединения. Такой подход обеспечивает дополнительный уровень безопасности, позволяя использовать верификацию и одноразовые пароли (OTP), предлагаемые Cloudflare, что делает удалённое подключение более защищенным.
Таким образом, использование Cloudflare Tunnel и соответствующих настроек позволяет эффективно обойти ограничения NAT для соединений RDP, обеспечивая доступность и безопасность ваших сетевых ресурсов.