Родился я в одном городе, позже переехал жить в другой. В родном городе остался ПК, который стоит без дела. В один прекрасный день решил я из него сделать многофункциональную удаленную машину: чтобы и кодить, и файлы хранить, и сайты/ботов хостить. Идея мне понравилась, я накатил на машину линукс, поставил все валявшиеся без дела диски и начал все это проверять. Но тут оказалось, что в родительском доме интернет тариф не поддерживает возможность установки статического IP адреса по умолчанию - адрес выдается провайдером в случайные моменты времени. Это означало, что я не мог, например, хостить какой-нибудь сервер на этой машине. Более того, я даже банально не мог к ней по SSH подключиться после смены ее адреса.
Попытки найти решение моей проблемы на просторах интернета закончились неудачей. Я не видел иного способа, кроме как поменять тариф, но это тоже представлялось невозможным.
В голову пришла идея...
Я думал над неким механизмом, который позволил бы мне узнать внешний IP адрес машины, не заставляя родителей учиться пользоваться командой . И тогда в голову пришла идея написать телеграм-бота, который бы хостился на моей машине. Ведь к его интерфейсу доступ есть всегда, независимо от адреса ПК.
Итак, перейдем к боту. Мой основной язык на работе и для пет-проектов - C++. Поэтому для написания бота я взял библиотеку tgbot-cpp. Логика бота проста: получаем внешний адрес и отправляем его пользователю.
void OnGetIPCommandAction(TgBot::Message::Ptr message) const noexcept
try
{
std::cerr << "[DEBUG] Processing getip command..." << std::endl;
if (!IsUserLegal(message->from))
{
return;
}
const auto ip{GetExternalIP()};
m_bot.getApi().sendMessage(message->chat->id, ip ? ip.value() : "Could not get IP");
}
catch (const std::exception& e)
{
std::cerr << "[ERROR] " << __func__ << " failed: " << e.what() << std::endl;
}
Так как бот доступен любому, кто его найдет, необходимо было реализовать механизм ограничения доступа. Согласно описанию TelegramAPI, каждый пользователь обладает уникальным идентификатором. Этот идентификатор можно использовать для авторизации пользователей. Бот перед обработки каждой команды зовет метод IsUserLegal
, который проверяет наличие идентификатора текущего пользователя во множестве разрешенных. Код метода тривиален - показывать здесь не будут.
Метод GetExternalIP
отвечает за получение внешнего адреса. Для этого он идет в интернет и получает содержимое страницы http://myexternalip.com/raw, которая этот адрес содержит.
static
std::optional<std::string> GetExternalIP()
{
constexpr std::string_view URL = "http://myexternalip.com/raw";
CURL* curlHandle{curl_easy_init()};
if (!curlHandle)
{
return std::nullopt;
}
const static auto downloadFunc = [](char* ptr, size_t size, size_t nmemb, std::string* data) -> size_t
{
assert(data);
auto& str = *data;
try
{
str.append(ptr, size * nmemb);
}
catch(const std::exception& e)
{
std::cerr << "[ERROR] downloadFunc failed: " << e.what() << std::endl;
return 0;
}
return size * nmemb;
};
std::string ipStr;
curl_easy_setopt(curlHandle, CURLOPT_URL, URL.data());
curl_easy_setopt(curlHandle, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, (size_t(*)(char*, size_t, size_t, std::string*))downloadFunc);
curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, &ipStr);
if (const auto retcode{curl_easy_perform(curlHandle)}; retcode != CURLE_OK)
{
std::cerr << "[ERROR] " << "curl_easy_perform() failed: " << curl_easy_strerror(retcode) << std::endl;
}
curl_easy_cleanup(curlHandle);
return ipStr;
}
Итак, бот написан, можно проверять.
Отлично, работает, как и было задумано. Осталось решить последнюю проблему. Бот должен запускаться вместе с компьютером, иначе толку от него ноль. Решение напрашивается само собой - сделаем бота системным демоном. Тут я не буду рассказывать про процесс их настройки, а лишь покажу содержимое минимального конфигурационного файла.
[Unit]
Description=MyPc Telegram Bot
Requires=network.target
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/pcbot
Restart=always
[Install]
WantedBy=multi-user.target
Готово. Теперь бот запускается вместе с компьютером, перезапускается в случае падения и по запросу сообщает его адрес. Теперь я могу использовать компьютер так, как изначально хотел.
Вывод
Не берусь утверждать, что такое решение является наиболее простым и адекватным. Вероятно, есть более прямолинейный путь достижения моей цели. Но прошу меня не винить - иного не нашел. Здесь я лишь хотел поделиться своим опытом.
Меня очень интересует тема создания телеграм-ботов. Поэтому, если у вас есть идея, как можно с их помощью создать нечто полезное и интересное, то, пожалуйста, напишите об этом к комментариях.
Комментарии (92)
Zex0n
06.01.2024 19:30+21Вы не знали про DDNS или сознательно его почему-то не используете?
BerserkZak
06.01.2024 19:30Не берусь утверждать, что такое решение является наиболее простым и адекватным. Вероятно, есть более прямолинейный путь достижения моей цели
Человек так и написал, или вы сознательно почему-то не читали статью?
qw1
06.01.2024 19:30У DDNS тоже есть свои подводные камни. Например, сервис может демонстративно отказаться работать в РФ. Телеграм тут предсказуемее.
Antra
06.01.2024 19:30Десяток (тки?) DDNSов vs 1 Телеграм?
Тем более, что буржуйский серис скорее всего, заранее предупредит. А вот блокировочка от РКН внезапно может настигнуть.
Да и для супер надежности можно сразу несколько доменных имени иметь.
qw1
06.01.2024 19:30Так у них у всех API разный ))
Что +1 DDNS, что +1 телеграм бот, это всё равно разбираться.
vk6677
06.01.2024 19:30+15DDNS. Есть бесплатные сервера. Технология не новая. Появилась ещё во времена модемного интернета.
ivankudryavtsev
06.01.2024 19:30+10Ngrok.com тоже может помочь.
AnthonyAxenov
06.01.2024 19:30-1Не могу не упомянуть telebit.cloud в качестве чуть более интересной альтернативы, мне зашло лучше нгрока. Хотя вроде много ещё таких.
greg-zamza
06.01.2024 19:30-11Как получается так, что любая мысль или проблема, которая беспокоит меня, спустя день воплощается в чьей-то статье на хабре?
жёстко плюсую
PwrUsr
06.01.2024 19:30+12реально в 2024м году не найти информацию про DynDNS сотоварищи ?
или там НАТ за НАТом и НАТом погоняет типа CGNAT и через бота тунель делается ?
soymiguel
06.01.2024 19:30+4MoonArsenii
06.01.2024 19:30Или если у вас уже есть сервер с белым ip, можно использовать древнее заклинание:
ssh -R cat@example.com
ValdikSS
06.01.2024 19:30+26реально в 2024м году не найти информацию про DynDNS сотоварищи ?
Не удивлюсь. Поисковики в 2024 едва ли ищут что-либо релевантное.
RichardBlanck
06.01.2024 19:30+3Есть русская поговорка про дурную голову.
А если бы автор умел читать, он легко решил бы проблему обычными средствами, не прибегая к страшному программированию. Да и программированию вообще.
Вот у меня есть машина. У которой нет реального ip адреса вообще никогда, не то, что он есть, но меняется. Единственная моя проблема в доступе на эту машину откуда угодно -- это отсутствие WatchDog на древнем ADSL модеме.HardWrMan
06.01.2024 19:30+2О, да, когда-то на ADSL у прова сессия висла после аптайма больше, чем 23:59:59. Приходилось писать детектор интернета (банальные пинги на несколько гаратнтированно отвечающих адресов + анализ статистики ответов) и перезагружатор роутера через автологин и команду "kill 0" (использовал порт expect на домашнем шлюзе, который и выступал сервером в мир и был на FreeBSD). Эх, молодость.
jackcrane
06.01.2024 19:30+3интернет тариф не поддерживает возможность установки статического IP адреса по умолчанию
1) если доплатить провайдеру, то он может выдать статический IPv4 или даже IPv6.
2) #!/bin/sh
MYIP4a=`curl ifconfig.me`
MYIP4b=`curl -4 icanhazip.com`
MYIP6b=`curl -6 icanhazip.com`
я даже банально не мог к ней по SSH подключиться после смены ее адреса.
3) три слова: tor hidden service.
4) можно аналог в i2p, но я не пробовал.
5) можно через anydesk, но я не рекомендую по соображения безопастности.
6) https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work
Hidden text
ps: телеграм сотрудничает.
Aelliari
06.01.2024 19:30+1три слова: tor hidden service.
можно аналог в i2p
Или другие оверлейные сети, например Yggdrasil, или что нибудь ещё…
Или cloudflare teams/warp/ZeroTrust, черт его знает как оно сейчас называется, позволяющие «внутри команды» гонять tcp-трафик (если нужно вывешивать веб-сервисы наружу - можно просто tunnel)
Или оверлейные решения с прицелом на меш-сети SD-WAN типа ZeroTier/tailscale/netbird/netmaker/и прочие… при наличии сервера - можно и свой координирующий сервер поднять…
P.S. Это кроме многократно упомянутого тут ddns
jackcrane
06.01.2024 19:30-3Yggdrasil
мой опыт с ним негативный. контента нет, против РосВПНнадзора не поможет, ценность сомнительна.
остальное для меня сложно.
Aelliari
06.01.2024 19:30+4контента нет
Мы все ещё про доступ к устройству?
остальное для меня сложно
Tailscale - сложно? А вы точно пробовали? Да, чуть больше телодвижений, чем скачать «tor-браузер», но уровень сложности там околонулевой, а на выходе (если не будет проблем с проблем NAT) - соединение точка-точка с каждой нодой в твоей собственной сети. В случае проблем с NAT - да, будет задействован релей
P.S. Я не ваш ответ критикую, я его дополнял
jackcrane
06.01.2024 19:30Мы все ещё про доступ к устройству?
для доступа я описал более простые средства в своем исходном комменте.
согласитесь что простой IPv6 или простой обратный тоннель проще чем наворачивать IPv6 внутри IPv6.
Aelliari
06.01.2024 19:30согласитесь что простой IPv6
Только если он есть. Не преувеличивайте сложность использования Tailscale и его «родственников», скачать клиент на нужную платформу и залогиниться через условную гугловскую SSO и… всё.
P.S. Правда конкретно tailscale относительно недавно с IP РФ стали блокировать доступ к скачиванию клиентов
pvsur
06.01.2024 19:30При конфигурации пиру можно указать sni = cremlin.ru, и любой ркн пропустит...наверное.
Точное описание - в доке
3ycb
06.01.2024 19:30указать sni = cremlin.ru
cremlin.ru точно не пропустит, а вот kremlin.ru может быть
Metotron0
06.01.2024 19:30После введения пакета Яровой у нашего провайдера услуга статического адреса выросла с 50 до 350 рублей в месяц :(
sermart1234
06.01.2024 19:30+1Я полагаю дело не в законе Яровой (хотя и это тоже), а в том что IPv4 адресов маловато. У меня, кстати, статика стоит 0 рублей в месяц, но первое подключение 400р
HardWrMan
06.01.2024 19:30Везёт. У нас долго запускали статику физикам и в итоге я почти 6 лет сидел на ней за 6к денег в месяц (это примерно 1200 ваших рупий!). А потом пришёл 2020 и все статические IP у физиков отобрали в пользу юриков, которые платят сильно больше...
sermart1234
06.01.2024 19:30Ну, я живу в Поволжье. У меня 500 мбит/с за 800р. Так что если 1200р был гигабитник со статикой или около того, то вполне себе цена. Правда 4 года назад цены другие, но тогда и гигабитников я не вспомню.
В деревнях хуже, 450р за 9мбит/с). В более отдалённых может быть и несколько тысяч за меньшую скорость
HardWrMan
06.01.2024 19:30Ты не понял. 6к были в + к тарифу, который тоже около 6к был. Сейчас 5900 денег за 500Мбит оптика у меня. Скорость по РК вот такая:
Hidden text
Ну а на внешние ресурсы зависит от времени суток и загруженности внешних каналов. Напомню, 17 лет назад, в 2006м я подключил ADSL 128к на 7Гбайт, а потом шейпер до 32к за те же 5980 денег в месяц. Но с тех пор скорость выросла до 500мбит/с а сам деньге судя по курсам доллара просел со 115 до 460 денег за 1 вечнозелёный.
nevzorofff
06.01.2024 19:30Некоторым провайдерам придется оплатить модернизацию ядра, чтобы они смогли ipv6 вообще.
chnav
06.01.2024 19:30+7В подобных рассказах всегда смущает художественная преамбула. Ни у кого не возникло бы сарказма, если бы автор написал прямо первичную цель разработки: "моё хобби - телеграм-боты, я придумал себе новую задачу" (и проверил её на старом компе в удалёнке), и в теги к статье добавил #ненормальное_программирование. Но выдумывается история с каким-то компьютером в другом городе, жалко его бросать, родители (которые не против шума компа 24/7) и пр.
lgorSL
06.01.2024 19:30-1Да ладно Вам, я так же делал. В студенческой общаге стоял старенький нетбук с убунтой, на которой я держал телеграм бота. Если вдруг забыть заплатить за интернет или отключали электричество - ip адрес менялся.
Добавить команду боту, чтобы он сообщал ip адрес, было совсем не сложно.
Dan_Hummer
06.01.2024 19:30+4На подвиг китайского комсомольца очень похоже...
Сам себе нагеморроил, сам себе преодолел!
---START---
sudo apt-get install ddclient
sudo nano /etc/ddclient.conf
---FINISH---
Ну ведь Убунта же? Убунта? Как "нет"? А что тогда? :)
a0fs
06.01.2024 19:30+9Горе от ума. Ленивые люди берут базовый тариф на лоукостере, там где почти нет диска, почти нет процессора, но есть безлимитная полоса в 100 Мбит/с и поднимают там OpenVPN. Остальное описано в книжках по сетям и NAT. В таком конфиге оно может даже быть вполне полезным. DDoS-ы не переживёт, а для добросовестного использования вполне хватит.
Там можно даже сайтики почти нормально хостить, выбросив на этот недохост на VDS провайдере nginx, а всё мясо развернув на узле дома....
Но нет, нужен телега-бот написанный на С++ который по curl-у с другого ресурса запрашивает IP и отдаёт его в телеге. Вся надежда на телегу, сайтик с определением IP и вот это вот всё....
Да, для других извращенцев, которым тоже простые решения как серпом по телу: как-то делал на bash раскривушку. Она получала IP из переменной окружения и регистрировала его на ns сервере. В том случае был BIND, но собрать такое на NSD нет проблем, даже проще. А дальше прописываем этот сервер 3-м уровнем (на второй нужна пара серверов), и конектимся по SSH. Всё нужное openssh положит в переменные окружения, останется только прописать команду на подключение по определённому ключу (в авторизованные ssh-ключ можно прописывать команды, стартующие при использовании этих ключей), откуда эта груда костылей получает имя (его прописываем в эту самую команду для ключа), регистрирует IP с которого проведено подключение и завершает сеанс. Конектится можно хоть раз в минуту, NSD переживёт.... Вот и халявный свой DynDNS с блек-джеком и всем, что развёртывающий вздумает на него навесить.... Можно даже узлы c NS и терминальный для соединений разнести по разным виртуалкам или контейнерам, если очень нужно.... У меня загнулось на этапе прототипа. Тесты прошло и было похерено, как рабочий концепт на случай атомной войны, поскольку решение с калиткой (точкой входа на дешёвой VDS) имеет больше перспектив и более управляемо и предсказуемо.
pavel_pimenov
06.01.2024 19:30" Мой основной язык на работе и для пет-проектов - C++ " у автора основная цель прокачать С++ и он молодец!
rostislav-zp
06.01.2024 19:30Сам к такому решению пришел.но как вариант на подключаемой машине можно поднять softether vpn server при загрузке.он через все пробивался у меня
И мне непонятен момент с DNS,который многие советуют.есть множество вариантов, когда он не работает именно на твоем провайдере.тогда остается или вариант с покупкой статисеского адреса или с подключением через внешний vpn.тогда конечно все просто
nevzorofff
06.01.2024 19:30Все понятно. Если автору достаточно адреса из ifconfig, то и dyndns будет прекрасно работать.
19Zb84
06.01.2024 19:30Я одно время над похожей задачей думал. У меня тогда возникла поблема, котору мне хотелось бы каким то способом решить.
Есть ли возможность узнать и использовать ip адрес телефона ?Aelliari
06.01.2024 19:30+2Любой сервис типа ifconfig.co, с v6 бывает можно прямо на телефоне посмотреть. По поводу использовать - тут сложнее, почти всегда v4 за CG-NAT и опубликовать сервисы не выйдет без дополнительной услуги со статическим IP (если опсос её предоставляет), v6 - по разному, могут фильтроваться входящие соединения, могут - нет. Опять же, публиковать сервисы с телефона - не особо удобное занятие, но принципиально через мобильную сеть - это возможно. Лучше сразу озвучить цель, может быть кто-то предложит альтернативное решение
19Zb84
06.01.2024 19:30Я на телефоне свой проект поднимал.
Телефон всега с собой и включен.
Пробовал сервис ngrok и другие со статическими адресами. Так можно настроить.
Нашев в интпрнете провайдеров, которые позволяют раздавать данные, но они не в России.
PsihXMak
06.01.2024 19:30А есть возможность избавиться от этого костыля в виде телеграмма? Было бы не плохо иметь удобный веб-интерфейс или приложение, через которое можно работать с веб-сервером. Типа консоли, но более юзер-френдли.
JerzyEx
06.01.2024 19:30+2Я делал подобное. Поднял на бесплатном сервере от Оракл nginx который имеет одну html страницу со ссылкой на нужный адрес. Железка, к которой нужен доступ, при включении запускала скрипт, который заходил на арендованный сервак и генерировал упомянутую html страницу.
Я такое городил из-за того, что мне нужен был локальный адрес железки. Я приходил в гости, подключал железку кабелем в местную локалку и начинал демонстрацию работы железки
ner0
06.01.2024 19:30+2Я сначала подумал провайдер не даёт белый IP, и автор сделал обратный прокси. А тут просто курл... Кто такие статьи вообще аппрувит, и главное зачем?
Lainhard
06.01.2024 19:30Была как-то похожая задача. Поднял TOR и пробросил ssh. Плюсы - достаточно знать onion адрес. Минусы - пинг.
HardWrMan
06.01.2024 19:30А мог бы просто зарегаться на урагане электриков и поиметь себе статический IPv6.
Что касается DDNS, то я до сих пор использую freedns. И когда была статика и когда её не стало - работает полностью одинаково.
Antra
06.01.2024 19:30Это как? Там же нужно указывать свой IPv4. Причем чтобы он извне был доступен (пусть меняется периодически, но все-таки не за Hide NAT).
У меня именно так и сделано - проверяю периодически свой домашний IPv4 и в случае его изменения через API апдейчу HE, чтобы туннель восстановился и IPv6 опять стал доступным. И DDNS имя там не указать, только IP. Что-то изменилось?
Но это чисто ради с IPv6 поиграть. В реальности-то WG до VPSки небольшой с NGINX reverse proxy и прочими полезностями типа VLESS-XRAY...
Aelliari
06.01.2024 19:30Это как? Там же нужно указывать свой IPv4. Причем чтобы он извне был доступен
У автора он доступен, так как было бы иначе - толку бы от его бота было бы ровно 0.
И DDNS имя там не указать, только IP
Сам же пишешь что меняешь через их API, есть ряд готовый скриптов в интернете по аналогии с DDNS которые это могут. Но скорее всего человек имел в виду, DDNS для того чтобы обращаться по домену без знания текущего значения динамического IP. Это не относилось к HE, просто упоминание одного старого сервиса
P.S. После смерти route48, сейчас ещё есть route64 который тоже туннельный брокер, и тоже даёт ipv6 по wireguard но «белый IP» - не нужен. Вроде бы ещё был один который так умеет, но он требовал свою ASN
Antra
06.01.2024 19:30Ну т.е. все-таки тоже со скриптами (а-ля DynDNS). Но тогда получается, что усложнение есть, а выгода по сравнению с обычным DynDNS не особо ясна. Скорее наоборот - пинги (время отклика) существенно (в несколько раз) вырастут.
Поэтому и решил уточнить, вдруг нарисовалось более красивое решение.
Aelliari
06.01.2024 19:30+1Самое красивое сейчас, имхо, меш-впн если не нужно публиковать ресурс в интернете, и старый добрый DDNS - если нужно. Если за NAT и у тебя веб-сервис с постоянным доступом из вне - можно воткнуть MITM в виде реверс-прокси от cloudflare, ну или ngrok и аналоги
CryInt
06.01.2024 19:30Ну про dyndns уже сказали.
Я не понял момента, телеграм в нормальном виде работает через webhook. И если ИП уже сменился то бот будет ломится на старый и не сможет получить команду, что бы ответить новым ИП.
Вообще задача сводиться к более простой - сервер дёргает специальный скрипт на хостинге, в скрипте смотрится адрес с какого дёрнули, и меняет А запись у домена через АПИ. ТТЛ ставим минимальный и сервер всегда доступен с актуальным IP.
qw1
06.01.2024 19:30Хостинг надо оплачивать, а телеграм бесплатен.
CryInt
06.01.2024 19:30+1Ну хорошо дёргает курлом https://api.myip.com получаем актуальный внешний IP. Через API меняем А запись у домена на актуальную. Зачем городить прослойку в ручную через телеграмм?
qw1
06.01.2024 19:30Разницы большой нет. И там, и там "дёргаем некий внешний сервис неким сетевым клиентом". Сложностью клиента можно пренебречь, пишется 1 раз. Важна лишь надёжность/доступность сервиса.
Aelliari
06.01.2024 19:30телеграм в нормальном виде работает через webhook
Там два режима, в одном случае webhook, а в другом - бот отпрашивает сервер, выбирай нужный
VasilievVictor
06.01.2024 19:30+2Сложнее когда ты сидишь на внутреннем ip провайдера и белого адреса нет, ни динамического, ни статического. В таком случае никакой динднс и прочие сервисы не катят. Пришлось выходить следующим образом:
1. Берем дешевый vps сервер и на нем поднимаем сервер wireguard(поднимал в докере), прописываем проброс нужных портов.
На кинетике настраиваем автоматическое подключение wireguard до vps, и проброс нужных портов до своего домашнего сервера.
-
Профит, появляется домашний сервер или сервера с реальным ip(и кстати ну очень недорогим), а там доступ к камерам, Homeassistant или серверу майнкрафт, ну или более «специфичным» проектам.
такой vpn наоборот ))
Gillette
06.01.2024 19:30Если уж на кинетике, там есть бесплатный keendns, работает через облако, никакие nat ему не помеха, скорость позволяет стримы с камер смотреть.
NutsUnderline
06.01.2024 19:30если роутер на OpenWrt то там есть пакет ddns который позволяет иметь адрес хоть у 10ка dyndns провайдеров одновременно
Но есть нюанс. Провайдер может выдать ip адрес со своего внутреннего диапазона - nat в нужном режиме просто не работает. Причем выдается то нормальный динамический ip то серый - и например сперва работает, а после реконнекта - не работает. ну сервисы dyndns на такие адреса сразу уже пишут отлуп "внутренний адрес". Видел даже специальные скрипты которые позволяют играть в ipадресную рулетку с провайдером - долбать реконекты пока не выпадет "правильный" адрес. Ну или вручную реконектить
AleksUb
06.01.2024 19:30+1Подключил нужные мне сервера и ПК к yggdrasil и не надо не только реальник выставлять, но и каждый раз запрашивать адреса. Слишком сложный вариант, на мой взгляд.
qw1
06.01.2024 19:30+1Проблема в том, что иногда ты на чужом компьютере, где нет возможности установить ноду Yggdrasil, а тебе надо по-быстрому зайти на домашний сервер.
madwtj
06.01.2024 19:30Можно купить роутер типа - keenetic или asus. Там есть свои стабильные ddns сервера настраивается в один клик. Ну ещё NASы умеют, типа Synology, но это сильно дороже.
VadimGus
06.01.2024 19:30+1Спасибо. Я сделал так:
Купил доменное имя;
Выбрал DNS-сервис с API Amazon Route53;
Написал скрипт, который определяет внешний ip-адрес и обновляет A запись этого DNS;
Настроил запуск этого скрипта на сервере Cron'ом каждую минуту.
13werwolf13
06.01.2024 19:30просто вешаем домен на dns.he.net и добавляем в крон раз в час выполняться
curl -4 "https://НУЖНЫЙПОДДОМЕНВАШЕГОДОМЕНА:СЕКРЕТНЫЙПАРОЛЬ@dyn.dns.he.net/nic/update?hostname=НУЖНЫЙПОДДОМЕНВАШЕГОДОМЕНА"
всё, dyndns на ваш полноценный домен за бесплатно. и не надо каждый раз новый ip вбивать
stopsp
06.01.2024 19:30-1А у меня вообще нет компьютера (полтора года назад продал последний игровой ноут и перекрестился). Всем спокойной ночи )))
mikryukovsl
06.01.2024 19:30-1Отпад! Давай больше халявы разной! Мне давно уже не по нутру их IP адреса, эти твари специально сделали так чтобы их на всех не хватало.
CadaVez
06.01.2024 19:30Подключиться по ssh ? Оставлять ssh доступный снаружи всем - такое себе удовольствие. ВПН поднял, на него машину клиентом. Дальше по ВПН сети ssh, понимание ip внешнего и т.д.
Больше тебе скажу - никто не останавливает поднять у себя на стороне " яумамыпрограмист" внешний интерфейс сайта и публичного сервиса, а по тому же ВПН сайты и т.д...
Выводы - молодец, научился писать код, возьми с полки пирожок и будь скромнее. Статья из серии зырьте как я умею, хвалите меня.
1e100
06.01.2024 19:30+1А мне надоело беспатное продление по несколько раз в год, отреверсил как работает служба в keenetic и сделал свой на go. Повесил на свой сервер, пока работает стабильно
https://pastebin.com/cr9wArjh
georgiy08
06.01.2024 19:30Прочитав статью так и не понял, как автор решил проблему отсутствия статического IP. Тот ip, что отображается на сервисе, который указал автор, это стандартный динамический.
Rumbis
06.01.2024 19:30Tailscale поможет даже с серой за-NATовой динамикой. DDNS- с белой динамикой.
Первый, конечно, зависим от внешних иностранных сервисов (это, по сути, приватная VPN-точка).
gadyapetrovichhrenova
06.01.2024 19:30-1Трындец, домашний интернет такая стабильная вещь, uptime 99.9999999999%. Я лично пока не сумосшедший хостить сайты дома. Сейчас хостинга за доллар валом.
ssolder
06.01.2024 19:30Ну да ну да проброс порта по ssh можно сделать даже на серый ip (за провайдерский nat) и легко управлять компом по рдп или использовать веб диск по ssh просто пробросить порт 22 ... Нужен любой VPS с него проброс на локальную машину... А чтобы вообще по красоте делаем это на роутере с openwrt и получаем Профит vps брал в США вы можете где ближе хоть в РФ
Tamashii
06.01.2024 19:30Одно слово - NAT.
И идём дружно менять провайдера/тариф/подключать услугу "Постоянный IP"...
AbdulKus
06.01.2024 19:30Я для таких целей использовал сеть yggdrasil. Там выдаётся статический ipv6 к которому легко можно подключиться с любого устройства. Довольно удобно. Единственное, пришлось пару раз пробрасывать туннели, ТК не весь софт работал с ipv6
Ivanii
Dyn DNS?
phaggi
Так-то да… но если выбранный сервис ddns сломается/откажется работать со страной/захочет денег и т.п., то параллельный канал не помешает.
Но так-то городить телеграм бота, когда можно просто сделать почтовый автоответчик… а можно и то и другое…
vvzvlad
Зачем городить почтовый автоответчик, когда можно позвонить жене и спросить IP-адрес?
sedyh
Скорее обычный STUN сервер.
qw1
Нет, STUN сервер не позволит узнать текущий ip-адрес машины, которая где-то там включилась и мы не знаем её ip-адрес, и она не знает наш ip-адрес.
boba_boba
Провайдеры блокируют доступк серверу через серый IP. Без туннеля здесь не обойтись. И знание текущего IP, и dyn dns здесь не помогают.
Aelliari
Не в случае автора, иначе бот в телеге ему бы никак не помог