Как настроить RDP без static ip и сторонних сервисов
Для меня никогда не вставал вопрос про 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 своего устройства даже вне локальной сети.
Прособирав разные гайды в одном месте я пришел к следующему:
создал папку shareip в моих документах, где будет происходить все непотребство
Создал в этой папке 3 файла: new_ip.txt, old_ip.txt и getip.bat. В последний помещаем следующую команду, которая получает ваш публичный ip и записывает полученное значение в файл new_ip.txt
nslookup myip.opendns.com resolver1.opendns.com > ./new_ip.txt
Далее создаем скрипт на питоне 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()
После нужно настроит джобу, которая будет периодически запускать наш скрипт. Для начала создадим файл scheduler.bat. С помощью него мы будем запускать, созданный нами скрипт:
"C:\Python311\python.exe" "C:\Users\User\Documents\shareip\script.py"
pause
Далее запускам стандартную тулу 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.
Далее нужно включить RDP на удаленном компьютере. Для windows 11 это Settings → System → Remote Desktop → Remote Desktop → On.
Следующий шаг — установить статический 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
Далее в настройках роутера вам нужно пробросить ваше устройство с вашим открытым портом в интернет. У меня этот пункт называется NAT где я указываю адрес моего компьютера, протокол и диапазон портов: 192.168.1.2 tcp 3389:3389
Может выйти так, что вы подключаетесь к своему устройству, но на моменте входа в аккаунт — не принимает пароль, так как у вас настроен только Hello PIN. Выполните следующую команду runas /u: MicrosoftAccount\your@email.com cmd.exe вас попросит ввести ваш пароль от аккаунта. После этого все должно заработать
Надеюсь, кому-то этот мини гайд пригодится (за все ошибки извините. Что вы вообще мне сделаете? Я в другом городе:-)