Официальный сайт компании Arduino по адресу arduino.cc
IPv6 в домашней автоматизации
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Доброго всем дня! Не решил куда правильно разместить тему.
Это просто сообщение, которое может быть полезным в домашней автоматизации новичкам ..да и не новичкам тоже.
Суть сообщения в том, что ESP8266 начал поддерживать IPv6. Выбирается это в меню, в свойствах платы: lwIP variant. В последнем аддоне 2.5.2 точно есть.
Что это дает? - да практически все, о чем мечтают строители умных аквариумов, светильников, карнизов и унитазов! В сочетании с любым ДДНСом, поддерживающим IPv6 (а я других не знаю, напрмер duckdns - поддерживает) мы имеем, что любая наша "финтифлюшка" на ESP8266 получает имя для доступа хоть из Автстралии.
Откуда берем IPv6? - Да откуда угодно. Почти все провайдеры сейчас, (иногда - в тестовом режиме) имеют DHCP6 или нативный IP6 анонс. IP6 никто не продает за деньги, в отличии от IP4, потому что их хватит до тепловой смерти вселенной! ;)) Если у вашего провайдера нет маршрутизируемых IP6, то их можно взять туннелем, но это уже ничем не отличается от получения IP4 туннелем, то есть кайфа нет (хотя бы бесплатно!). Кайф - повторю - что особенность ip6 в том, что можно и за роутером назначать нормальные - МАРШРУТИЗИРУЕМЫЕ адреса.
=====================
Выложу малюсенький пример поливалки для цветов в квартиру родителей. Провайдер Онлайм, Москва, IP6 выдаются через DHCP6 по запросу и /64 и /56, оба сразу. IP4 у этого провайдера стоит 180р/месяц.
Код непричесанный, отладка не выброшена, куски мусора из стандартных примеров к ЕСП-шке остались. Не для выставки, а для демонстрации связки IP6 и duckdns в любой своей свистоперделке.
Не нужно мне говорить, что сервер надо делать на SPIFFS и ajax, я знаю! Тут просто одна функция и так написалось...само... уж простите! Сервера побольше - честное пионерское, с ajax, картинками, анимацией и чем-то-там-ещё! ;)))
#include <OneWire.h> #include <ESP8266WiFi.h> #include <AddrList.h> #include <ESP8266HTTPClient.h> #include <WiFiClient.h> #ifndef STASSID #define STASSID "aaaa" #define STAPSK "bbbb" #endif #define PUMP 14 OneWire ds(12); float temperature(OneWire & ds); const char* ssid = STASSID; const char* password = STAPSK; WiFiServer server(80); String myIPv6; void ddnsUpdate(void) { WiFiClient client; HTTPClient http; const uint32_t DdnsUpdateInterval = 30ul*60ul*1000ul; static uint32_t lastUpdateDdns = millis(); static bool isOK = false; String rq = "http" + "://www." + "duckdns.org/update?domain=xxxxx&token=yyyyy&ipv6=" + myIPv6; // rq имеет столь извращённый вид из-за особенностей вставки кода в сообщения данного форума. if (!isOK || millis() - lastUpdateDdns > DdnsUpdateInterval) { lastUpdateDdns = millis(); Serial.print("request is:"); Serial.println(rq); if (http.begin(client, rq)) { int httpCode = http.GET(); if (httpCode > 0) { Serial.printf("[HTTP] GET... code: %d\n", httpCode); if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { String payload = http.getString(); Serial.println(payload); isOK = true; } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); }} } void setup() { Serial.begin(115200); pinMode(PUMP, OUTPUT); digitalWrite(PUMP, 0); Serial.println(); Serial.print(F("Connecting to ")); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); for (bool configured = false; !configured;) { for (auto addr : addrList) if ((configured = !addr.isLocal() && addr.isV6() // uncomment when IPv6 is mandatory // && addr.ifnumber() == STATION_IF )) { break; } Serial.print('.'); delay(500); } Serial.println(); Serial.println(F("WiFi connected")); server.begin(); Serial.println(F("Server started")); for (auto a : addrList) { Serial.printf("IF='%s' IPv6=%d local=%d hostname='%s' addr= %s", a.ifname().c_str(), a.isV6(), a.isLocal(), a.ifhostname(), a.toString().c_str()); if (a.isLegacy()) { Serial.printf(" / mask:%s / gw:%s", a.netmask().toString().c_str(), a.gw().toString().c_str()); } if (!a.isLocal() && a.isV6()) myIPv6 = a.toString(); Serial.println(); } } void loop() { const uint32_t MaxOnTime = 10000ul; static uint32_t swTime = millis(); uint32_t cTime = millis(); float t = temperature(ds); int val = digitalRead(PUMP); if (val && cTime - swTime > MaxOnTime) { val = 0; swTime = cTime; } ddnsUpdate(); digitalWrite(PUMP, val); WiFiClient client = server.available(); if (!client) { return; } Serial.println(F("new client")); client.setTimeout(5000); // default is 1000 String req = client.readStringUntil('\r'); Serial.println(F("request: ")); Serial.println(req); if (req.indexOf(F("gpio/0")) != -1) { val = 0; } else if (req.indexOf(F("gpio/1")) != -1) { if (val == 0) swTime = cTime; val = 1; } digitalWrite(PUMP, val); //read rest to clean up while (client.available()) { client.read(); } client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html lang=\"ru\">\r\n")); client.print(F("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n")); client.print(F(" Насос сейчас ")); client.print((val) ? F("Включен") : F("Выключен")); client.print(F(" ")); client.print(((cTime -swTime)/1000)); client.print(F(" секунд")); client.print(F("<br> Температура в комнате ")); client.print(t,2); client.print(F(" Celsius")); client.print(F("<br><br><a href='/index'>Нажать здесь чтобы ОБНОВИТЬ страницу</a>")); client.print(F("<br><br>Нажать <a href='/gpio/1'>здесь</a> чтобы включить полив,или <a href='/gpio/0'>здесь</a> чтобы выключить.<br>Через 10 секунд насос отключится сам </html>")); Serial.println(F("Disconnecting from client")); } float temperature(OneWire & ds) { const int tConv = 750; static uint32_t om = millis(); uint32_t nm = millis(); static float t = 20; byte data0,data1; static bool requestSent = false; if (!requestSent) { ds.reset(); ds.skip(); ds.write(0x44); om = nm; requestSent = true; } if (nm - om > tConv && requestSent) { requestSent = false; ds.reset(); ds.skip(); ds.write(0xBE); data0 = ds.read(); data1 = ds.read(); t = (((data1 << 8) | data0) & ~1) / 16.0 ; } return t; }
Особенность ipv6 в том, что как раз вот из-за Neighbour Discovery и открытых маршрутизируемых адресов за роутером, получается, что все IoT железки смотрят своими открытыми портами прямо в инет, нужно хитро настраивать фаерволы. Но и плюсов много с ipv6, с этим соглашусь.
все IoT железки смотрят своими открытыми портами прямо в инет
ESP давно поддерживает HTTPS и авторизацию, что еще нужно для усмирения паранойи? ;)))
Открытый порт для OTA прошивки своей штуковины, вероятно не стоит светить в сеть... ;)))
Давайте уж спокойнее быть! У меня весь дом обвешан типичными камерами с Али, которые весь поток льют на китайский сервер, через который, собственно, мы их и видим в смартфоне... и что? Нужно опасаться раскрытия секретного способа мастурбации китайцами? Как-то не парит.
Не знаю, зачем я про это читал, но Wiznet W6100 тоже поддерживает ipv6. Ждем модулей...
блоки ipv6 для провайдеров стоят денежку однако, и выделяет их всё тоже сообщество
Не знаю, зачем я про это читал, но Wiznet W6100 тоже поддерживает ipv6. Ждем модулей...
Садман41, уважаемый! Я очень стесняюсь поинтересоваться целью использования дорогого и слабого Ethernet модуля, при наличии мощных и дешевых ESP с 4МБ ПЗУ и 48КБ ОЗУ? Есдинственное, что приходит в голову - ради POE?
Я правда не могу придумать оправдание не использовать WiFi, это не "заводка к срачу". Если я что не вижу - это моя вина, просто поясни, плз.
wdrakula - как узнать, что у провайдера есть IPv6? на сайте ничего не сказано. а задавать вопросы поддержке не хочу. чтобы не светится :)
Может есть какая диагностическая утилита, чтобы запустил и получил адрес - при наличии?
wdrakula - как узнать, что у провайдера есть IPv6? на сайте ничего не сказано. а задавать вопросы поддержке не хочу. чтобы не светится :)
Может есть какая диагностическая утилита, чтобы запустил и получил адрес - при наличии?
пакеты IPV6 провайдер не может не пропускать )))
wdrakula - как узнать, что у провайдера есть IPv6? на сайте ничего не сказано. а задавать вопросы поддержке не хочу. чтобы не светится :)
Может есть какая диагностическая утилита, чтобы запустил и получил адрес - при наличии?
Чтобы не светить что именно???
Вы можете обойтись и без провайдера, подняв бесплатный туннель до специального шлюза. Также вам бесплатно выдадут подсеть, например, /48 или /64, хватит на сотню лет вперёд с запасом.
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B1%D1%80%D0%BE%D0%BA%D0%B5%D1%80%D0%BE%D0%B2_IPv6
если есть белый IPV4 зачем плодить сущности IPV6?
Садман41, уважаемый! Я очень стесняюсь поинтересоваться целью использования дорогого и слабого Ethernet модуля, при наличии мощных и дешевых ESP с 4МБ ПЗУ и 48КБ ОЗУ? Есдинственное, что приходит в голову - ради POE?
Кому-то нравится водка, кому-то пиво. Кому-то правая, а кому - левая. И каждый найдёт сто тыщ объяснений своему пристрастию и они будут логичны для него и нелогичны для другого.
Мне нравятся проводные системы и не нравится натыкивать везде AP. Что тут поделать... Отец был телефонистом и кабельщиком-спайщиком. Наверное по наследству передалось ))
Хотя, вайрлесом я вполне себе пользуюсь, сопровождаю и даже тащу опенсорц-стык (если так можно выразиться) для мониторинга UniFi.
Не нужен NAT, а особенно CGNAT. У каждого чайника, кофейника, холодильника свой внешний ip.
Не нужен NAT, а особенно CGNAT. У каждого чайника, кофейника, холодильника свой внешний ip.
то-есть, в программировании плодить сущности - говнокодить, а в сети это нормально?
Личное простанство должно оставаться личным пространством моё стойкое убеждение
wdrakula - как узнать, что у провайдера есть IPv6? на сайте ничего не сказано. а задавать вопросы поддержке не хочу. чтобы не светится :)
Вот тут не понял совсем? Чего светить? Это запрещенная технология? ;)))) Ты себя хорошо чувствуешь? Звони и спрашивай, но тот же Ростелеком (Онлайм - в Москве) официально не включил раздачу, но уже два года раздает..."в тестовом режиме". Не через RA, а через DHCP6. Так чт просто пробуй и RA и DHCP6 если получил адрес - хорошо. ;)) МТС-МГТС - официально раздает и даже на мобильники, что удобно. Но не везде. Иногда у меня мобильник на улице получает IP6 иногда (в области) - нет. Это сразу видно по тому, как rutrecker открывается... если не открывается - значит ip6 не получил! ;))))))))))))
Ip4 практически закончены. Если есть "белый" адрес - хорошо. В моем случае белый был за 180 р в месяц. Или туннель из Стокгольма, где у нас семейная VPSка с проксями. Решение с IPv6 - явно проще и красивее. Провайдер дает белые адреса и даже прорты пробрасывать не надо. Ddns и больше ничего. К тому же роутеру - собственно простенькому микротику - откуда угодно, прямо по Винбоксу по его, микротиковскому, ddns.
IP4 - сорс NAT, дестинейшн NAT, фильтры, манглы, изврат с балансом провайдеров. Совершенно нетривиальная маршрутизация - "что на кого пойдет просто, а что в фейловере, а куда пихнем блокированные сайты?". Вот на всё это становится просто насрать с IP6. Но тут - что кого радует.
Кроме того, по ip6 (пока) не ддосят и брутфорсят, поэтому открытость в мир не мешает жить. По ip4 меня хакеры уже в край достали - десятки попыток взлома в минуту (это я про свой дом), от dns брутфорса - специальный скрипт - иначе роутер ложился и умирал. На IP6 - тишина и покой на открытых портах!
ну я собственно так и думал. ОК.
Просто писать под ESP легко и приятно, без иницирования спора! ;)))
Личное простанство должно оставаться личным пространством моё стойкое убеждение
Всё правильно, лишняя сущность - это NAT в ipv4. А личное пространство таковым и останется, только безмерно расширится. Вместо одного платного ip4 адреса вам бесплатно дают сто тысяч адресов.
Не хотите быть в одной сети с холодильником? Ок, разбивайте свою сеть на подсети и не будьте, людям - одну сеть, Вертерам - другую.
Да, плюс wdrakula правильно заметил, банить по ip с ipv6 бесполезно, никакой памяти не хватит на таблицы.
Дошло даже до того, что "в целях конфиденциальности" windows самостоятельно, автоматически, меняет свой ipv6 адрес раз в десяток-другой минут. Чего б и не поменять, если их у неё доступны миллионы.
официально не включил раздачу, но уже два года раздает..."в тестовом режиме". Не через RA, а через DHCP6. Так чт просто пробуй и RA и DHCP6 если получил адрес - хорошо. ;)) МТС-МГТС - официально раздает и даже на мобильники, что удобно. Но не везде.
Отлично! Покупаем железо, пилим софт запускаем на ip6. А провайдер закрывает раздачу. Или, что вероятней, продавать начинает. А про офигенный запас адресов я уже когдато слышал - «640 Кб должно быть достаточно для каждого». Если каждой зубочистке свой статический белый давать, то кончатся они быстрей ip4.
2128 ≈ 3.4 × 1038 возможных адресов в адресном пространстве. Если сравнить это число с количеством видимых звезд в нашей Вселенной (которое оценивается примерно в 1024 звезд), то на каждую звезду можно выделить примерно чуть более 340 триллионов адресов. Считается, что атомов на Земле примерно 1050, так что можно выдавать не только каждой зубочистке, но и каждому атому, ну, через одного.
Так и разгребают подсетями сразу.
Ну и пусть разгребают, это же хорошо, всё равно всем хватит с запасом. Обычно раздают /64, соответственно хватит на 264 человек, то есть, ещё очень надолго.
но и каждому атому, ну, через одного.
вот уже начались ограничения :)))
Дракула. спасибо, покурю тему.
У меня было два подхода к IPv6 - лет восемь назад и года четыре. Тогда что-то не пошло... может еще рано было.
мне IPV4 пока хватает, да и не признаю светить наружу внутренний контент
мне IPV4 пока хватает, да и не признаю светить наружу внутренний контент
Тема открыта про использование IPv6 в IoT. Собственно содержит единственно важное уведомление о поддержке IPv6 в ESP8266, который сейчас основа IoT.
Мне очень ценно твое незабывемое замечание о том, что тебе хватает IPv4! Апплодирую стоя! Считаю твое замечание очень важным и уместным. Выражаю сердечную за него признательность!
Я верю, что и другим участникам форума очень важно знать, что использует некий чудак, на территории не очень понятного статуса. Это может изменить их парадигму!
Ну и пусть разгребают, это же хорошо, всё равно всем хватит с запасом. Обычно раздают /64, соответственно хватит на 264 человек, то есть, ещё очень надолго.
Ну вот и сократилось сразу в 264раз. Надолго - не технический термин. Когда ОЗУ с 64К в 10 раз увеличили, тоже думали всем и надолго. А виш как вышло то.
2**64 это больше, что по 2.5 миллиарда на каждого жителя земли. Сравнение с 64К ОЗУ, конечно уместно и иллюстративно, кто ж спорит?!
(вспомнился несравненный Лавров...)
2**64 - это 18,446,744,073,709,551,616. То есть, 18446744073709551616 человек могут иметь каждый по 18446744073709551616 адресов. Не, технически не хватит, "неумные, ай-ай-ай" (с) Лавров.
2**64 - это 18,446,744,073,709,551,616. То есть, 18446744073709551616 человек могут иметь каждый по 18446744073709551616 адресов. Не, технически не хватит, "неумные, ай-ай-ай" (с) Лавров.
они то могут, но кто им даст, безвозмедно, то-есть задаром, взрослые вроди люди...
сегодня нет ежемесячных платежей, завтра будут...
PS на бойне тоже есть - козёл-провокатор
Ну, лично я вот безвозмездно использую через туннель /48 уже шестой как год, и планирую и далее. Нужно станет - заплачУ, так же, как сейчас плачу лиру за подсети ipv4. И всегда есть те, кто хочет нажиться на чём-то (в данном случае, на вашем неумении получить себе подсеть ipv6 бесплатно).
Опять же, мы же не агитируем. Просто, как я понял, wdrakula тоже использует ipv6, и ему тоже нравится. Больше пиров в торренте, больше удобства. Ваше личное так и останется личным, фаервол никто не отменял же. ipv6 - это (очень грубое приближение!) тот же ipv4, только их очень много.
Более того, я тот ещё консерватор. Люблю, знаете ли, старое, привычное. Генри Форда тоже гнобили в своё время, нахрена эти самобеглые повозки, есть же моя крутая лошадь, нафиг это всё надо. Но ипаков реально не хватает, в часы пик машины провайдера, обеспечивающие конический нат загибаются под нагрузкой. Рано или поздно всё равно всем придётся перейти, так, может, сделать это раньше, обставить конкурентов?
Ну, лично я вот безвозмездно использую через туннель /48 уже шестой как год,
можно поинтересоваться, а сколько именно из этой подсети вы используете?
10 адресов из возможных 1208925819614629174706176 минус там несколько. И да, я жадный ублюдок и транжира. :)
PS Прикол, к wdrakula не заходят боты, а ко мне заходят, у бота фейсбука ip содержит :face:b00c: :)
10 адресов из возможных 1208925819614629174706176 минус там несколько. И да, я жадный ублюдок и транжира. :)
PS Прикол, к wdrakula не заходят боты, а ко мне заходят, у бота фейсбука ip содержит :face:b00c: :)
1. ...и это не я сказал...
2. ...так ты тоже ГОВОРИ, что не заходят...
Резюме?
видимо имел бы смысл в развёртывании шлюза в альтернативные сети, к примеру те же AREDN или BBHN, но хоть этот протокол и был вкомпилирован в прошивки но никогда применён не был, а с сентября 2018 вообще был выкинут, обоснование - занимает место, в мире все процессы связаны, умный сам сделает выводы
Какая связь между ipv6, который использует 300-400 миллионов человек, и никому не нужным AREDN, про который знает полтора радиолюбителя?
Какая связь между ipv6, который использует 300-400 миллионов человек, и никому не нужным AREDN, про который знает полтора радиолюбителя?
без комментариев
Какая связь между ipv6, который использует 300-400 миллионов человек, и никому не нужным AREDN, про который знает полтора радиолюбителя?
Не корми тролля.
Дык может это я его троллю :) Дело в том, что я 30 с лишним лет как радиолюбитель. Но не такой продвинутый, EH- и ртутные антенны не работают и не должны, а mini-whip и прочие, рассчитанные в ммана вполне; не бегаю в полях с языком на плече с кучами проводов, а просто выставил заводскую антенну за окно на карниз и подключил к фабричному же трансиверу; не интересуюсь dx обменом парой фраз с Новой Зеландией, чтобы потешить своё чсв, но вполне себе общаюсь с друганами по рациям на отдыхе; катушка Мишина просто нагрузка для гены (о, а ещё есть чудо-алмаг :), да и правят миром не рептилоиды, а всяческие кланы супербогатеев, которые грызутся между собой за ресурсы.
Тут вон aredn упомянули :) есть ещё такой aprs, на весь С-Пб, на 6 миллионов рыл, аж целых два! человека про него знают и используют, округляя их до статистической погрешности, получаем 0 интереса к этим технологиям в реальной жизни, кроме небольшой незначащей кучки маньяков, которые тоже никому не интересны.
Но не такой продвинутый, EH- и ртутные антенны не работают и не должны, а mini-whip и прочие, рассчитанные в ммана вполне; не бегаю в полях с языком на плече с кучами проводов, а просто выставил заводскую антенну за окно на карниз и подключил к фабричному же трансиверу; не интересуюсь dx обменом парой фраз с Новой Зеландией, чтобы потешить своё чсв, но вполне себе общаюсь с друганами по рациям на отдыхе
Тут вон aredn упомянули :) есть ещё такой aprs, на весь С-Пб, на 6 миллионов рыл, аж целых два! человека про него знают и используют, округляя их до статистической погрешности, получаем 0 интереса к этим технологиям в реальной жизни, кроме небольшой незначащей кучки маньяков, которые тоже никому не интересны.
EH работает точно так, как и должна работать сильно укороченная антенна, ну не все мастера связи и далеко не всем дано проводить по 20-25 тысяч связей за три месяца, APRS в связке с RS0ISS спас жизни членам одной арктической экспедиции, представляешь, я тоже предпочитаю промышленную аппаратуру YAESU, KENWOOD )))
У каждого свои друзья, у меня по всему миру, так получилось...
Да, катушка Мишина, это просто дипольная антенна свёрнутая в спираль настроенная на частоту около 300кГц
PS поднять IPV6 из-за десятка адресов это в какой-то мере тоже потешить своё самолюбие, не находишь, если правда озвучишь задачу не решаемую на IPV4 которых у тебя ну минимум полтыщи, я послушаю, может я чего то не знаю по жизни ...
PPS да, для HAM позывной это узнаваемое ИМЯ
73 de ua6em ex.uk6eac,ua6eam, r6emp,r450kc,rg22em