Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру 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 своего устройства даже вне локальной сети.
Прособирав разные гайды в одном месте я пришел к следующему:
создал папку 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 вас попросит ввести ваш пароль от аккаунта. После этого все должно заработать
Надеюсь, кому-то этот мини гайд пригодится (за все ошибки извините. Что вы вообще мне сделаете? Я в другом городе :-)