Pull to refresh

Comments 100

Так-то да… но если выбранный сервис ddns сломается/откажется работать со страной/захочет денег и т.п., то параллельный канал не помешает.

Но так-то городить телеграм бота, когда можно просто сделать почтовый автоответчик… а можно и то и другое…

когда можно просто сделать почтовый автоответчик… а можно и то и другое…

Зачем городить почтовый автоответчик, когда можно позвонить жене и спросить IP-адрес?

Скорее обычный STUN сервер.

Нет, STUN сервер не позволит узнать текущий ip-адрес машины, которая где-то там включилась и мы не знаем её ip-адрес, и она не знает наш ip-адрес.

Так «наш» адрес как раз известен, это myexternalip.com, на которую стучится машина «где-то там» через бота.

В терминах статьи, "текущий адрес машины" - это адрес домашнего сервера в родном городе, "наш адрес" - адрес терминала, из которого выходим в интернет в другом городе. Машина в родном городе не знает "наш адрес", который у нас сейчас в другом городе.

В общем все разница в посреднике, который проксирует запрос дальше, верно?

Верно. STUN не может быть этим посредником, потому что у него нет "памяти", т.е. внутреннего состояния, которое запоминает информацию с одного запроса и передаёт его в ответ другого запроса.

Провайдеры блокируют доступк серверу через серый IP. Без туннеля здесь не обойтись. И знание текущего IP, и dyn dns здесь не помогают.

Не в случае автора, иначе бот в телеге ему бы никак не помог

Вы не знали про DDNS или сознательно его почему-то не используете?

Не берусь утверждать, что такое решение является наиболее простым и адекватным. Вероятно, есть более прямолинейный путь достижения моей цели

Человек так и написал, или вы сознательно почему-то не читали статью?

У DDNS тоже есть свои подводные камни. Например, сервис может демонстративно отказаться работать в РФ. Телеграм тут предсказуемее.

Десяток (тки?) DDNSов vs 1 Телеграм?

Тем более, что буржуйский серис скорее всего, заранее предупредит. А вот блокировочка от РКН внезапно может настигнуть.

Да и для супер надежности можно сразу несколько доменных имени иметь.

Так у них у всех API разный ))
Что +1 DDNS, что +1 телеграм бот, это всё равно разбираться.

DDNS. Есть бесплатные сервера. Технология не новая. Появилась ещё во времена модемного интернета.

Не могу не упомянуть telebit.cloud в качестве чуть более интересной альтернативы, мне зашло лучше нгрока. Хотя вроде много ещё таких.

zrok тогда уж

Чем лучше?

UFO just landed and posted this here

реально в 2024м году не найти информацию про DynDNS сотоварищи ?

или там НАТ за НАТом и НАТом погоняет типа CGNAT и через бота тунель делается ?

Или если у вас уже есть сервер с белым ip, можно использовать древнее заклинание:

ssh -R cat@example.com

реально в 2024м году не найти информацию про DynDNS сотоварищи ?

Не удивлюсь. Поисковики в 2024 едва ли ищут что-либо релевантное.

Но можно спросить LLM, либо локальную либо он-лайн осилив многочисленные статьй про ###.

Не удивлюсь, если сейчас ряд авторов делает

  • как сделать Х

  • напиши статью на эту тему, вставив 3 деепричастных оборота и развязку с оборотнями

Ещё тогда можно использовать новомодный ChatGPT

Уважаемый ValdikSS, как выходите из ситуации?

Есть русская поговорка про дурную голову.

А если бы автор умел читать, он легко решил бы проблему обычными средствами, не прибегая к страшному программированию. Да и программированию вообще.
Вот у меня есть машина. У которой нет реального ip адреса вообще никогда, не то, что он есть, но меняется. Единственная моя проблема в доступе на эту машину откуда угодно -- это отсутствие WatchDog на древнем ADSL модеме.

О, да, когда-то на ADSL у прова сессия висла после аптайма больше, чем 23:59:59. Приходилось писать детектор интернета (банальные пинги на несколько гаратнтированно отвечающих адресов + анализ статистики ответов) и перезагружатор роутера через автологин и команду "kill 0" (использовал порт expect на домашнем шлюзе, который и выступал сервером в мир и был на FreeBSD). Эх, молодость.

интернет тариф не поддерживает возможность установки статического 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: телеграм сотрудничает.

три слова: tor hidden service.

можно аналог в i2p

Или другие оверлейные сети, например Yggdrasil, или что нибудь ещё…

Или cloudflare teams/warp/ZeroTrust, черт его знает как оно сейчас называется, позволяющие «внутри команды» гонять tcp-трафик (если нужно вывешивать веб-сервисы наружу - можно просто tunnel)

Или оверлейные решения с прицелом на меш-сети SD-WAN типа ZeroTier/tailscale/netbird/netmaker/и прочие… при наличии сервера - можно и свой координирующий сервер поднять…

P.S. Это кроме многократно упомянутого тут ddns

Yggdrasil

мой опыт с ним негативный. контента нет, против РосВПНнадзора не поможет, ценность сомнительна.

остальное для меня сложно.

контента нет

Мы все ещё про доступ к устройству?

остальное для меня сложно

Tailscale - сложно? А вы точно пробовали? Да, чуть больше телодвижений, чем скачать «tor-браузер», но уровень сложности там околонулевой, а на выходе (если не будет проблем с проблем NAT) - соединение точка-точка с каждой нодой в твоей собственной сети. В случае проблем с NAT - да, будет задействован релей

P.S. Я не ваш ответ критикую, я его дополнял

Мы все ещё про доступ к устройству?

для доступа я описал более простые средства в своем исходном комменте.

согласитесь что простой IPv6 или простой обратный тоннель проще чем наворачивать IPv6 внутри IPv6.

согласитесь что простой IPv6

Только если он есть. Не преувеличивайте сложность использования Tailscale и его «родственников», скачать клиент на нужную платформу и залогиниться через условную гугловскую SSO и… всё.

P.S. Правда конкретно tailscale относительно недавно с IP РФ стали блокировать доступ к скачиванию клиентов

При конфигурации пиру можно указать sni = cremlin.ru, и любой ркн пропустит...наверное.

Точное описание - в доке

После введения пакета Яровой у нашего провайдера услуга статического адреса выросла с 50 до 350 рублей в месяц :(

Я полагаю дело не в законе Яровой (хотя и это тоже), а в том что IPv4 адресов маловато. У меня, кстати, статика стоит 0 рублей в месяц, но первое подключение 400р

Везёт. У нас долго запускали статику физикам и в итоге я почти 6 лет сидел на ней за 6к денег в месяц (это примерно 1200 ваших рупий!). А потом пришёл 2020 и все статические IP у физиков отобрали в пользу юриков, которые платят сильно больше...

Ну, я живу в Поволжье. У меня 500 мбит/с за 800р. Так что если 1200р был гигабитник со статикой или около того, то вполне себе цена. Правда 4 года назад цены другие, но тогда и гигабитников я не вспомню.

В деревнях хуже, 450р за 9мбит/с). В более отдалённых может быть и несколько тысяч за меньшую скорость

Ты не понял. 6к были в + к тарифу, который тоже около 6к был. Сейчас 5900 денег за 500Мбит оптика у меня. Скорость по РК вот такая:

Hidden text

Ну а на внешние ресурсы зависит от времени суток и загруженности внешних каналов. Напомню, 17 лет назад, в 2006м я подключил ADSL 128к на 7Гбайт, а потом шейпер до 32к за те же 5980 денег в месяц. Но с тех пор скорость выросла до 500мбит/с а сам деньге судя по курсам доллара просел со 115 до 460 денег за 1 вечнозелёный.

Некоторым провайдерам придется оплатить модернизацию ядра, чтобы они смогли ipv6 вообще.

В подобных рассказах всегда смущает художественная преамбула. Ни у кого не возникло бы сарказма, если бы автор написал прямо первичную цель разработки: "моё хобби - телеграм-боты, я придумал себе новую задачу" (и проверил её на старом компе в удалёнке), и в теги к статье добавил #ненормальное_программирование. Но выдумывается история с каким-то компьютером в другом городе, жалко его бросать, родители (которые не против шума компа 24/7) и пр.

Да ладно Вам, я так же делал. В студенческой общаге стоял старенький нетбук с убунтой, на которой я держал телеграм бота. Если вдруг забыть заплатить за интернет или отключали электричество - ip адрес менялся.

Добавить команду боту, чтобы он сообщал ip адрес, было совсем не сложно.

На подвиг китайского комсомольца очень похоже...
Сам себе нагеморроил, сам себе преодолел!


---START---
sudo apt-get install ddclient
sudo nano /etc/ddclient.conf
---FINISH---
Ну ведь Убунта же? Убунта? Как "нет"? А что тогда? :)

Горе от ума. Ленивые люди берут базовый тариф на лоукостере, там где почти нет диска, почти нет процессора, но есть безлимитная полоса в 100 Мбит/с и поднимают там OpenVPN. Остальное описано в книжках по сетям и NAT. В таком конфиге оно может даже быть вполне полезным. DDoS-ы не переживёт, а для добросовестного использования вполне хватит.

Там можно даже сайтики почти нормально хостить, выбросив на этот недохост на VDS провайдере nginx, а всё мясо развернув на узле дома....

Но нет, нужен телега-бот написанный на С++ который по curl-у с другого ресурса запрашивает IP и отдаёт его в телеге. Вся надежда на телегу, сайтик с определением IP и вот это вот всё....

Да, для других извращенцев, которым тоже простые решения как серпом по телу: как-то делал на bash раскривушку. Она получала IP из переменной окружения и регистрировала его на ns сервере. В том случае был BIND, но собрать такое на NSD нет проблем, даже проще. А дальше прописываем этот сервер 3-м уровнем (на второй нужна пара серверов), и конектимся по SSH. Всё нужное openssh положит в переменные окружения, останется только прописать команду на подключение по определённому ключу (в авторизованные ssh-ключ можно прописывать команды, стартующие при использовании этих ключей), откуда эта груда костылей получает имя (его прописываем в эту самую команду для ключа), регистрирует IP с которого проведено подключение и завершает сеанс. Конектится можно хоть раз в минуту, NSD переживёт.... Вот и халявный свой DynDNS с блек-джеком и всем, что развёртывающий вздумает на него навесить.... Можно даже узлы c NS и терминальный для соединений разнести по разным виртуалкам или контейнерам, если очень нужно.... У меня загнулось на этапе прототипа. Тесты прошло и было похерено, как рабочий концепт на случай атомной войны, поскольку решение с калиткой (точкой входа на дешёвой VDS) имеет больше перспектив и более управляемо и предсказуемо.

" Мой основной язык на работе и для пет-проектов - C++ " у автора основная цель прокачать С++ и он молодец!

Неплохо бы автору ещё кругозор прокачать. Иначе вся жизнь уйдёт на написание "велосипедов".

Неплохо бы автору ещё кругозор прокачать.

типичному программисту это не нужно. у них нет времени даже читать документацию.

ага а потом у них программа выдает незадокументированную ошибку

Сам к такому решению пришел.но как вариант на подключаемой машине можно поднять softether vpn server при загрузке.он через все пробивался у меня

И мне непонятен момент с DNS,который многие советуют.есть множество вариантов, когда он не работает именно на твоем провайдере.тогда остается или вариант с покупкой статисеского адреса или с подключением через внешний vpn.тогда конечно все просто

Все понятно. Если автору достаточно адреса из ifconfig, то и dyndns будет прекрасно работать.

Я одно время над похожей задачей думал. У меня тогда возникла поблема, котору мне хотелось бы каким то способом решить.

Есть ли возможность узнать и использовать ip адрес телефона ?

Любой сервис типа ifconfig.co, с v6 бывает можно прямо на телефоне посмотреть. По поводу использовать - тут сложнее, почти всегда v4 за CG-NAT и опубликовать сервисы не выйдет без дополнительной услуги со статическим IP (если опсос её предоставляет), v6 - по разному, могут фильтроваться входящие соединения, могут - нет. Опять же, публиковать сервисы с телефона - не особо удобное занятие, но принципиально через мобильную сеть - это возможно. Лучше сразу озвучить цель, может быть кто-то предложит альтернативное решение

Я на телефоне свой проект поднимал.

Телефон всега с собой и включен.

Пробовал сервис ngrok и другие со статическими адресами. Так можно настроить.

Нашев в интпрнете провайдеров, которые позволяют раздавать данные, но они не в России.

А есть возможность избавиться от этого костыля в виде телеграмма? Было бы не плохо иметь удобный веб-интерфейс или приложение, через которое можно работать с веб-сервером. Типа консоли, но более юзер-френдли.

Я делал подобное. Поднял на бесплатном сервере от Оракл nginx который имеет одну html страницу со ссылкой на нужный адрес. Железка, к которой нужен доступ, при включении запускала скрипт, который заходил на арендованный сервак и генерировал упомянутую html страницу.

Я такое городил из-за того, что мне нужен был локальный адрес железки. Я приходил в гости, подключал железку кабелем в местную локалку и начинал демонстрацию работы железки

Я сначала подумал провайдер не даёт белый IP, и автор сделал обратный прокси. А тут просто курл... Кто такие статьи вообще аппрувит, и главное зачем?

Была как-то похожая задача. Поднял TOR и пробросил ssh. Плюсы - достаточно знать onion адрес. Минусы - пинг.

В роутерах же есть DDNS, зачем все делать через ... бота?

А мог бы просто зарегаться на урагане электриков и поиметь себе статический IPv6.

Что касается DDNS, то я до сих пор использую freedns. И когда была статика и когда её не стало - работает полностью одинаково.

Это как? Там же нужно указывать свой IPv4. Причем чтобы он извне был доступен (пусть меняется периодически, но все-таки не за Hide NAT).

У меня именно так и сделано - проверяю периодически свой домашний IPv4 и в случае его изменения через API апдейчу HE, чтобы туннель восстановился и IPv6 опять стал доступным. И DDNS имя там не указать, только IP. Что-то изменилось?

Но это чисто ради с IPv6 поиграть. В реальности-то WG до VPSки небольшой с NGINX reverse proxy и прочими полезностями типа VLESS-XRAY...

Это как? Там же нужно указывать свой IPv4. Причем чтобы он извне был доступен

У автора он доступен, так как было бы иначе - толку бы от его бота было бы ровно 0.

И DDNS имя там не указать, только IP

Сам же пишешь что меняешь через их API, есть ряд готовый скриптов в интернете по аналогии с DDNS которые это могут. Но скорее всего человек имел в виду, DDNS для того чтобы обращаться по домену без знания текущего значения динамического IP. Это не относилось к HE, просто упоминание одного старого сервиса

P.S. После смерти route48, сейчас ещё есть route64 который тоже туннельный брокер, и тоже даёт ipv6 по wireguard но «белый IP» - не нужен. Вроде бы ещё был один который так умеет, но он требовал свою ASN

Ну т.е. все-таки тоже со скриптами (а-ля DynDNS). Но тогда получается, что усложнение есть, а выгода по сравнению с обычным DynDNS не особо ясна. Скорее наоборот - пинги (время отклика) существенно (в несколько раз) вырастут.

Поэтому и решил уточнить, вдруг нарисовалось более красивое решение.

Самое красивое сейчас, имхо, меш-впн если не нужно публиковать ресурс в интернете, и старый добрый DDNS - если нужно. Если за NAT и у тебя веб-сервис с постоянным доступом из вне - можно воткнуть MITM в виде реверс-прокси от cloudflare, ну или ngrok и аналоги

Ну про dyndns уже сказали.

Я не понял момента, телеграм в нормальном виде работает через webhook. И если ИП уже сменился то бот будет ломится на старый и не сможет получить команду, что бы ответить новым ИП.

Вообще задача сводиться к более простой - сервер дёргает специальный скрипт на хостинге, в скрипте смотрится адрес с какого дёрнули, и меняет А запись у домена через АПИ. ТТЛ ставим минимальный и сервер всегда доступен с актуальным IP.

Хостинг надо оплачивать, а телеграм бесплатен.

Ну хорошо дёргает курлом https://api.myip.com получаем актуальный внешний IP. Через API меняем А запись у домена на актуальную. Зачем городить прослойку в ручную через телеграмм?

Разницы большой нет. И там, и там "дёргаем некий внешний сервис неким сетевым клиентом". Сложностью клиента можно пренебречь, пишется 1 раз. Важна лишь надёжность/доступность сервиса.

телеграм в нормальном виде работает через webhook

Там два режима, в одном случае webhook, а в другом - бот отпрашивает сервер, выбирай нужный

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

1. Берем дешевый vps сервер и на нем поднимаем сервер wireguard(поднимал в докере), прописываем проброс нужных портов.

  1. На кинетике настраиваем автоматическое подключение wireguard до vps, и проброс нужных портов до своего домашнего сервера.

  2. Профит, появляется домашний сервер или сервера с реальным ip(и кстати ну очень недорогим), а там доступ к камерам, Homeassistant или серверу майнкрафт, ну или более «специфичным» проектам.

    такой vpn наоборот ))

Если уж на кинетике, там есть бесплатный keendns, работает через облако, никакие nat ему не помеха, скорость позволяет стримы с камер смотреть.

Гладко было на бумаге… очень ограниченный набор портов может работать через облако и прочие ограничения, например к синолоджи таким способом подключиться не смог нормально. Там есть вариант с sstp vpn сервером, тогда можно получить полный доступ к локальной сети извне. Но это несколько другой вариант использования, по сравнению с тем что описывал выше.

Хорошая статья, а ответы про DynDNS и др - бестолковые

если роутер на OpenWrt то там есть пакет ddns который позволяет иметь адрес хоть у 10ка dyndns провайдеров одновременно

Но есть нюанс. Провайдер может выдать ip адрес со своего внутреннего диапазона - nat в нужном режиме просто не работает. Причем выдается то нормальный динамический ip то серый - и например сперва работает, а после реконнекта - не работает. ну сервисы dyndns на такие адреса сразу уже пишут отлуп "внутренний адрес". Видел даже специальные скрипты которые позволяют играть в ipадресную рулетку с провайдером - долбать реконекты пока не выпадет "правильный" адрес. Ну или вручную реконектить

Подключил нужные мне сервера и ПК к yggdrasil и не надо не только реальник выставлять, но и каждый раз запрашивать адреса. Слишком сложный вариант, на мой взгляд.

Проблема в том, что иногда ты на чужом компьютере, где нет возможности установить ноду Yggdrasil, а тебе надо по-быстрому зайти на домашний сервер.

Было такое, соглашусь.
Забежал на сайт putty, прыжок на один из своих серверов и дальше всё, я дома. :) Разумеется, если нужна графика, такой вариант не очень удобен.

Можно купить роутер типа - keenetic или asus. Там есть свои стабильные ddns сервера настраивается в один клик. Ну ещё NASы умеют, типа Synology, но это сильно дороже.

Спасибо. Я сделал так:

  1. Купил доменное имя;

  2. Выбрал DNS-сервис с API Amazon Route53;

  3. Написал скрипт, который определяет внешний ip-адрес и обновляет A запись этого DNS;

  4. Настроил запуск этого скрипта на сервере Cron'ом каждую минуту.

просто вешаем домен на dns.he.net и добавляем в крон раз в час выполняться

curl -4 "https://НУЖНЫЙПОДДОМЕНВАШЕГОДОМЕНА:СЕКРЕТНЫЙПАРОЛЬ@dyn.dns.he.net/nic/update?hostname=НУЖНЫЙПОДДОМЕНВАШЕГОДОМЕНА"

всё, dyndns на ваш полноценный домен за бесплатно. и не надо каждый раз новый ip вбивать

А у меня вообще нет компьютера (полтора года назад продал последний игровой ноут и перекрестился). Всем спокойной ночи )))

Отпад! Давай больше халявы разной! Мне давно уже не по нутру их IP адреса, эти твари специально сделали так чтобы их на всех не хватало.

Подключиться по ssh ? Оставлять ssh доступный снаружи всем - такое себе удовольствие. ВПН поднял, на него машину клиентом. Дальше по ВПН сети ssh, понимание ip внешнего и т.д.

Больше тебе скажу - никто не останавливает поднять у себя на стороне " яумамыпрограмист" внешний интерфейс сайта и публичного сервиса, а по тому же ВПН сайты и т.д...

Выводы - молодец, научился писать код, возьми с полки пирожок и будь скромнее. Статья из серии зырьте как я умею, хвалите меня.

А мне надоело беспатное продление по несколько раз в год, отреверсил как работает служба в keenetic и сделал свой на go. Повесил на свой сервер, пока работает стабильно
https://pastebin.com/cr9wArjh

Прочитав статью так и не понял, как автор решил проблему отсутствия статического IP. Тот ip, что отображается на сервисе, который указал автор, это стандартный динамический.

Tailscale поможет даже с серой за-NATовой динамикой. DDNS- с белой динамикой.

Первый, конечно, зависим от внешних иностранных сервисов (это, по сути, приватная VPN-точка).

Трындец, домашний интернет такая стабильная вещь, uptime 99.9999999999%. Я лично пока не сумосшедший хостить сайты дома. Сейчас хостинга за доллар валом.

Ну да ну да проброс порта по ssh можно сделать даже на серый ip (за провайдерский nat) и легко управлять компом по рдп или использовать веб диск по ssh просто пробросить порт 22 ... Нужен любой VPS с него проброс на локальную машину... А чтобы вообще по красоте делаем это на роутере с openwrt и получаем Профит vps брал в США вы можете где ближе хоть в РФ

Одно слово - NAT.

И идём дружно менять провайдера/тариф/подключать услугу "Постоянный IP"...

Я для таких целей использовал сеть yggdrasil. Там выдаётся статический ipv6 к которому легко можно подключиться с любого устройства. Довольно удобно. Единственное, пришлось пару раз пробрасывать туннели, ТК не весь софт работал с ipv6

У меня интернет через мобильного оператора мтс, я подключил опцию ipv6+, она даёт возможность использования портов 80, 443 и прочих на динамических ipv6 адресах бесплатных от провайдера, плюс я получаю подсеть ipv6 адресов, то есть за роутером каждая машина получает свой внешний ipv6 адрес, далее на роутере настроил правила переадресации портов, чтобы 80, 443, 22 смотрели на виртуалку внутри моей сети, rdp смотрел на основную виндоус машину на которой собственно поднята виртуалка на вмваре, на другой машине виндоус сервер 2022 гиперв использую и там 80, 443 и 22 порт на гиперв виртуалку смотрят, модемов 2 для надежности изначально было, сейчас так как внешних серверов 2 использую.

Далее взял на firstvds виртуалку за 150 рублей в месяц самую простую на centos7, и добавил ipv6 подсеть за 10 рублей месяц, установил nginx, в нём сделал проксирование всех необходимых доменов по ipv6 и ipv4, оба по факту на один ipv6 мой адрес одной машины смотрят, на обоих виндоус машинах написал на дельфи7 получение адреса

За работу 5, за выбор способа 3 (три потому что способ всё же рабочий)

А у Автора нет роутера ?
Во многих роутерах есть свой функционал (asus, mikrotik - это те что я знаю 100%)

Если у Вас есть свой домен, то можете настроить изменение ИП адреса по АПИшке у регистратора ДНС (к примеру cloudflare)

Sign up to leave a comment.

Articles