Как настроить RDP без static ip и сторонних сервисов

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Для меня никогда не вставал вопрос про RDP, так как постоянно носил с собой ноутбук. Если в студенческие годы таскать на горбу 17 дюймовый Lenovo IdeaPad Z710 почти под 3кг веса (2.9кг) было не сложно, то со временем даже 15 дюймовый HP или 13 дюймовый MacBook Pro стал прилично ощущаться и не в лучшую сторону для моей спины. 

Первая задача: как уменьшить вес, но не потерять в производительности? Для себя я выбрал собрать стационарный компьютер и подключаться к нему с iPad. Эта задача решается достаточно просто. И на ней не будем останавливаться.

Вторая задача: а как, собственно, подключаться? Есть несколько способов: ванильный rdp и сторонние сервисы. Начнем с сервисов. Сразу на ум приходит потрясающая тула TeamViewer. Она потрясающая до того момента, пока ты не узнаешь, какой ты дурак, который не читал лицензионное соглашение. Уехав на неделю в другую страну, с радостью, что проблема решена. И на второй день ловлю бан по железу, так как бесплатная версия запрещает использовать ее для работы. Можно купить лицензию за $130/год, но зачем такие крайности? Дальше мой выбор пал на такие сервисы как no-ip и DynDNS. Первый сразу отпал, так как роутер от моего провайдера (привет UPC) поддерживает только DynDNS. Как бы не хвалили этот сервис, я получил стабильные дисконнекты каждые 5-10 минут. Тут я вспомнил как я не люблю всю продукцию Oracle, а заодно вспомнил про них пару ласковых фраз.

Следующим моим вариантом стал сервис Google Remote Desktop. Именно он меня спас в ту неделю, когда меня забанили TeamViewer, тогда я предусмотрительно его настроил. Казалось бы, вот оно идеальное решение: стабильное подключение, бесплатно, быстрая установка. Но не все так радужно. Изображение не заполняет весь экран и окна часто не подстраиваться под текущее разрешение,  что даже закрыть их становиться проблематично. И тут я вернулся к тому, что решил попробовать первой же попыткой. Перед всей этой эпопеей с сервисами, я решил а вдруг все будет просто и направился в ближайшую точку UPC. В Минске у меня с 2012го года была возможность подключать статический IP у моего провайдера, да что уж там, даже государственный Белтелеком за небольшую сумму предлагал подключить статический IP для индивидуального пользователя. Однако поляки были настолько удивлены вопросом о подключении статического IP для не бизнеса, что был вызван менеджер и за 10 минут он так все равно не понял, зачем физическому лицу может понадобиться статический IP. Естественно ничего у меня не вышло. Ну вот круг замкнулся и я снова тут.

С предисловием закончили, приступим к делу. Задача следующая: как всегда знать публичный IP своего устройства даже вне локальной сети.

Прособирав разные гайды в одном месте я пришел к следующему: 

  1. создал папку shareip в моих документах, где будет происходить все непотребство

  2. Создал в этой папке 3 файла: new_ip.txt, old_ip.txt и getip.bat. В последний помещаем следующую команду, которая получает ваш публичный ip и записывает полученное значение в файл new_ip.txt

nslookup myip.opendns.com resolver1.opendns.com > ./new_ip.txt

  1. Далее создаем скрипт на питоне script.py, который будет вызывать батник с прошлого пункта, проверять поменялся ли ip и, если да, то отправлять обновленный ip мне на почту.

import subprocess
import smtplib


def CheckFile():
    file = open('old_ip.txt', 'r')
    if ip != file.read():
        file.close()
        open('old_ip.txt', 'w').close()
        file = open('old_ip.txt', 'w')
        file.write(ip)
        file.close()
        return True
    return False


def SendMail():
    content = ip
    connection = smtplib.SMTP_SSL('smtp.server', 465)
    connection.login('login, 'password')
    connection.sendmail('sender email', 'recipient email', content)
    connection.quit()


def GetIp():
    open('new_ip.txt', 'w').close()
    subprocess.call('getip.bat')


GetIp()
ip = open('new_ip.txt', 'r').read()

if CheckFile() == True:
    SendMail()
  1. После нужно настроит джобу, которая будет периодически запускать наш скрипт. Для начала создадим файл scheduler.bat. С помощью него мы будем запускать, созданный нами скрипт:

"C:\Python311\python.exe" "C:\Users\User\Documents\shareip\script.py"
pause
  1. Далее запускам стандартную тулу Task Scheduler -> Action -> Create Task… -> Во вкладке general задаем имя -> Triggers -> New… -> Daily -> Repeat task every: 1 hour for a duration of: Indefinitely. -> Ok. -> Actions -> New… -> Browse -> Указываем путь до scheduler.bat -> Ok -> Ok.

  2. Далее нужно включить RDP на удаленном компьютере. Для windows 11 это Settings -> System -> Remote Desktop -> Remote Desktop -> On. 

  3. Следующий шаг - установить статический ip для своего компьютера в вашей локальной сети. Для этого перейдите Control Panel -> Network and Internet -> Network and Sharing Center -> Change adapter settings -> Выберите свой текущий адаптер и зайдите в свойства. В свойствах найдите пункт Internet Protocol Version 4 (TCP/IPv4). Мой роутер находиться по адресу 192.168.1.1 (адрес своего вы можете узнать на обороте своего роутера, в инструкции или погуглить)

    IP address

    192.168.1.2

    Subnet mask

    255.255.255.0

    Default gateway

    192.168.1.1

    Preferred DNS server

    8.8.4.4

    Alternate DNS server

    8.8.8.8

  4. Далее в настройках роутера вам нужно пробросить ваше устройство с вашим открытым портом в интернет. У меня этот пункт называется NAT где я указываю адрес моего компьютера, протокол и диапазон портов: 192.168.1.2 tcp 3389:3389

  5. Может выйти так, что вы подключаетесь к своему устройству, но на моменте входа в аккаунт - не принимает пароль, так как у вас настроен только Hello PIN. Выполните следующую команду runas /u:MicrosoftAccount\your@email.com cmd.exe вас попросит ввести ваш пароль от аккаунта. После этого все должно заработать

Надеюсь, кому-то этот мини гайд пригодится (за все ошибки извините. Что вы вообще мне сделаете? Я в другом городе :-)

Источник: https://habr.com/ru/articles/737970/


Интересные статьи

Интересные статьи

LXD позволяет создавать контейнеры и управлять ими. В статье разберём, как настроить LXD и использовать его для запуска Nginx в контейнере. А также рассмотрим, как перенаправить трафик из Интернета в ...
Важное правило управления продуктом API, которое любой достаточно крупный поставщик API довольно быстро для себя откроет, звучит так: нет смысла поставлять всего лишь один какой-то API; есть смысл гов...
Эта статья — способ заглянуть в курс «Ansible: от первых шагов до большого проекта». Всеволод Севостьянов, Lead Engineer в Vene, отвечающий за пайплайны и deployment, показал, как настраивать Jen...
Киберпанк 2077 уже наступил. Уровень развития технологий — это почти полное воплощение в реальность мечтаний писателей-фантастов. Умные устройства, «интеллектуальная» среда обитания, ...
Вводная частьВ предыдущем посте я писал как организовать процесс “грумминга” задач в системе JIra так чтобы “Менеджеру продукта” было удобно осуществлять навигацию по всему Беклогу продукта. Прод...