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