IP-adressen, hoe maak ik een ESP8266 bereikbaar over het internet?

Ik ga proberen om een ESP8266 aan te sturen via internet; maw ik wil een temperatuursensor uitlezen of een waterklep aansturen die thuis in de kelder staan met mijn telefoon, terwijl ik op het werk ben. We zitten dus niet op hetzelfde netwerk.Daarom wil ik me verdiepen in de werking van IP-adressen.

Als bijlage heb ik een opstellingstekening gemaakt.

Elk toestel dat op mijn thuisnetwerk (wifi) zit heeft een IP-adres. Om vervolgens met het internet te communiceren moet het via een gateway IP-adres gaan. Dit gateway IP-adres is uniek voor mijn modem die ik thuis heb staan. Mijn gateway-adres is dus verschillend dan dat van iemand anders.

Klopt mijn bewering totnogtoe?

Uitleg IP_adressen.pdf

De jacht is mooier dan de vangst....
help

Golden Member

De IP adressen die je in het diagram plaats zijn allemaal uniek binnen jouw eigen muren. De kans is vrij aannemelijk dat iemand een of twee huizen verderop exacte dezelfde adressen gebruikt ook binnen zijn eigen muren.

Het IP adres aan de 'buitenzijde' van het modem is normaal gesproken wel een uniek adres (afhankelijk van de provider en de verbinding!)

IP adressen zijn er in verschillende klasses, waarvan een deel prive te gebruiken is en een heel deel 'publiek'
Een beetje leesvoer daarover: https://www.meridianoutpost.com/resources/articles/IP-classes.php

bprosman

Golden Member

Je internet adres aan de buitenkant (internet kant) is uniek, maar ook dynamisch. Dus het kan veranderen.

Kan lang goed gaan maar ga er niet vanuit dat het altijd zo blijft.
Dit kun je oplossen met bijvoorbeeld een DynDNS maar dit soort adressen straat bij bedrijven met een strenge IT ook vaak op de blacklist.
Dus kies iets wat toegelaten word op je bedrijfsnetwerk.
Je kunt natuurlijk ook 's-morgens kijken of je adres nog het zelfde is voor je naar je werk gaat.

Vervolgens zal het verkeer wat via het internet binnenkomt doorgegeven moet worden aan het device binnen (met een intern adres).
De zoekterm daarvoor is "Port forwarding" , kun je in je modem / router instellen.

Misschien werkt dit voor je , niet echt inhoudelijk gekeken :
https://www.instructables.com/Control-ESP8266-Over-the-Internet-from-A…

Of hiermee :
https://forum.arduino.cc/t/upnp_generic-library-to-auto-port-forward-a…

De jongere generatie loopt veel te vaak zijn PIC achterna.
marcob

Golden Member

Port-forwarding en rechtstreeks op de ESP32 inloggen is een optie, maar niet de alle veiligste oplossing. Je kunt iets van een VPN gaan opzetten tussen je telefoon en netwerk.
Een andere oplossing is om bijvoorbeeld de app telegram te gebruiken. Hiermee kun je een bericht vanuit je ESP sturen naar je telefoon en andresom.

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
revado

Honourable Member

Om contact te maken buiten het eigen netwerk zal dus het externe (openbare) ip adres gebruikt moeten worden.
Dat kan je zien door in de browser ( thuis!) bv www.myip.nl in te tikken, dan zie je dat adres.
In de router moet, zoals al gezegd, de poort die de toepassing gebruikt worden doorgezet ( geforward) naar het interne ip adres van de ESP.
Het adres van de router, de gateway, doer er verder niet toe.
Pas wel op met poorten open zetten vanaf internet en gebruik bij voorkeur geen standaard poort zoals poort 80, maar iets aparts indien mogelijk.
De beveiliging van de ESP moet goed zijn, met een goed wachtwoord en dergelijke.
Er wordt door kwaadwillenden heel veel op open poorten gescand met alle risico's van dien!

Edit: @MArcob was ongeveer gelijk.
Inderdaad een VPN of iets dergelijks is veel beter!

Schimanski

Golden Member

Op 9 januari 2023 14:34:10 schreef help:
De IP adressen die je in het diagram plaats zijn allemaal uniek binnen jouw eigen muren. De kans is vrij aannemelijk dat iemand een of twee huizen verderop exacte dezelfde adressen gebruikt ook binnen zijn eigen muren.

Het IP adres aan de 'buitenzijde' van het modem is normaal gesproken wel een uniek adres (afhankelijk van de provider en de verbinding!)

IP adressen zijn er in verschillende klasses, waarvan een deel prive te gebruiken is en een heel deel 'publiek'
Een beetje leesvoer daarover: https://www.meridianoutpost.com/resources/articles/IP-classes.php

de private ranges per class zijn 10.0.0.0/8 (een geheel class-a netwerk), 172.16.0.0/12 (16 aansluitende class-b netwerken) en 192.168.0.0/16 (256 aansluitende class-c netwerken). Adressen uit een private range kunnen niet gebruikt worden op internet, ze zijn non-routable en worden direct gedropt op de eerste hop.

What, me worry? // Radiozendamateur - PA2HGJ // Stuff is the junk you keep -- Junk is the stuff you throw away // Tinkeo Ergo Sum
bprosman

Golden Member

Op 9 januari 2023 15:53:23 schreef Schimanski:
[...]de private ranges per class zijn 10.0.0.0/8 (een geheel class-a netwerk), 172.16.0.0/12 (16 aansluitende class-b netwerken) en 192.168.0.0/16 (256 aansluitende class-c netwerken). Adressen uit een private range kunnen niet gebruikt worden op internet, ze worden direct gedropt op de eerste hop.

Wij hebben wat fabrieken die 192.168.x.x gebruiken, reuze irritant in rapportage :-(

De jongere generatie loopt veel te vaak zijn PIC achterna.
bprosman

Golden Member

Op 9 januari 2023 15:07:11 schreef revado:Er wordt door kwaadwillenden heel veel op open poorten gescand met alle risico's van dien!

Continue als ik de log van mijn firewall mag geloven.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Ja, behoorlijk goed begrepen*. MAAR!
Het standaard opzet is dat het thuisnetwerk wel naar buiten kan connecteren, maar dat er vanuit de buitenwereld niets kan connecteren naar binnen toe. Dat is een kwestie van veiligheid, uiteraard. Zie ook de berichten hierboven vanwege @bprosman en @revado.

Dat is zo standaard opgezet in de router/gateway, die regelt welke trafiek er wordt doorgelaten. En er zit bv. ook een dhcp-server in, die al die ip-adressen toekent op het plaatselijke netwerk.

Men kan daar allemaal gaan aan tweaken, maar dat is behoorlijk tricky. En je wilt echt niet teveel poorten openzetten voor binnenkomende trafiek, voor je het weet is je netwerkje gehackt en heeft een of andere viezerik(in) al je bestanden versleuteld enzovoort, die verhalen zijn intussen wel bekend; denk maar aan Stad Antwerpen, een paar weken geleden.

Een veiliger opzet is dat je op je thuisnetwerk een bijzondere mailaccount opzet, en dat mail die daarnaar wordt verstuurd commando's bevat voor de domotica of wat dan ook. Want mail komt binnen door een connectie die vanuit het thuisnetwerk wordt opgestuurd, er is dus geen inkomende trafiek voor nodig. De prijs daarvoor is wel dat de mailclient (Thunderbird of Outlook of wat dan ook) slechts om de paar minuten gaat pollen of er mail is.

@Schimanski: ik meende begrepen te hebben dat die indeling in klasse A/B/C was afgeschaft? Maar het kan goed zijn dat bepaalde providers nog op die basis (sommige van) hun routers instellen, natuurlijk.

*behalve dat de vermelde adressen IPv4 zijn, niet IPv6. IPv6-adressen zien eruit als 2603:8080:B200:5CDE:F85F:3C04:4BA8:6174 , bv.

revado

Honourable Member

Op 9 januari 2023 16:14:26 schreef bprosman:
[...]

Continue als ik de log van mijn firewall mag geloven.

Absoluut!
Ik heb zeker 20 jaar een eigen mailserver gedraaid thuis met de MX direct naar mijn (vaste) ip.
Als je daar alleen al de log en het aantal "aanboor pogingen" naar smtp, imap en pop poorten van ziet op de firewall /proxyserver, dat nam de laatste jaren schrikbarend toe.
Ik heb dat al een tijdje buiten de deur, geen open poorten meer.

Schimanski

Golden Member

@Schimanski: ik meende begrepen te hebben dat die indeling in klasse A/B/C was afgeschaft? Maar het kan goed zijn dat bepaalde providers nog op die basis (sommige van) hun routers instellen, natuurlijk.

Classful addresseren wordt i.d.d. niet meer gebruikt op de manier waarop het ooit bedacht is, er was teveel overhead in de toen al krappe IP4 ruimte. Alleen in de leerboeken bestaat het begrip classful nog, het is tegenwoordig classless waarbij je gewoon het aantal adressen kunt toewijzen dat nodig is i.p.v. een heel blok waarvan soms merendeel niet werd gebruikt. Als een class-C net te klein was (je had b.v. 384 adressen nodig) dan kreeg je een Class-B toegewezen waarvan 64150 adressen dan ongebruikt bleven. Met classless kun je aansluitende blokken samenvoegen* en als een geheel routeren.

De genoemde private ranges bestaan echter nog gewoon.

* samenvoegen o.b.v. 3 regels
1) alle adressen in het blok moeten aansluitend zijn
2) blokgrootte moet een macht van 2 zijn
3) eerste adres moet deelbaar zijn door blokgrootte

What, me worry? // Radiozendamateur - PA2HGJ // Stuff is the junk you keep -- Junk is the stuff you throw away // Tinkeo Ergo Sum
fripster

Golden Member

OT: weet iemand waarom nou juist 10.0.0.0 // 172.16.0.0 en 192.168.0.0 gebruikt zijn? Is daar misschien een (binaire) reden voor? Wie weet dat?

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu
Schimanski

Golden Member

10.0.0.0/8 was ooit het begin (ARPA net) toen dat wegging kwam het hele blok vrij. De andere twee zullen gekozen zijn omdat daarin de benodigde aansluitende reeksen beschikbaar waren (private ranges werden ingevoerd toen TCP/IP al in gebruik was).

https://www.rfc-editor.org/rfc/rfc1597
https://www.rfc-editor.org/rfc/rfc1918

What, me worry? // Radiozendamateur - PA2HGJ // Stuff is the junk you keep -- Junk is the stuff you throw away // Tinkeo Ergo Sum

Is het qua veiligheid dan beter om te werken met aanbieders zoals Thingspeak?

De jacht is mooier dan de vangst....

Als je een complete Linux-bak of windows-bak direct op het internet hangt, dan loop je het risico dat er een service draait die vatbaar is voor een bugje waar een hacker naar blijkt te scannen. Of dat jij ooit een test account hebt aangemaakt met accountnaam "test" en wachtwoord "test". Dan is er een legitieme service, zonder bug, maar toch een hacker die je systeem in kan.

De kans op bugs bij zelfgemaakte software is groter, maar de kans dat hackers daar gebruik van kunnen maken is kleiner.

Dus als jij 1 poort van je ESP8266 op het internet beschikbaar maakt, dan loop je het risico dat iemand naar je meetgegevens gaat kijken. Zorg voor een wachtwoord in je ESP8266 software als je dat niet wil. Maar de kans op een complete hack is beheersbaar. Ik zou het acceptabel vinden.

Third parties voor dit soort dingen inschakelen... Keer op keer blijkt dat ZIJ dan de weakest link zijn. En hackers willen er ook meer moeite in steken: Als ze die thinspeak site hacken, hebben ze ineens controle over een hele hoop verbindingen. Mogelijk is dat de moeite waard om die site grondig te hacken. Maar als jij 1 poortje open zet naar een zelfgemaakt esp8266 programma? Mwah. Kans dat daar wat te halen valt is klein.

[Bericht gewijzigd door rew op maandag 9 januari 2023 18:11:34 (21%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
buckfast_beekeeper

Golden Member

Werk via MQTT. DE ESP kan probleemloos waardes sturen naar de MQTT broker. Een webpagina op je telefoon kan ook die waardes ophalen. Wil je thuis iets wijzigen dan zorg je er voor dat je web pagina een tag plaatst bij de MQTT broker. De ESP kan dan om de x seconden kijken of er post is en dan uitvoeren wat de tag vraagt.

Hoef je op je eigen netwerk niks open te zetten.

Van Lambiek wordt goede geuze gemaakt.

@BFBK: hierboven heeft @rew netjes uitgelegd dat een "derde partij" vooral geen goed idee is, wegens te aantrekkelijk voor bedriegers (m/v/x). Of waar moet die MQTT anders draaien?

@rew: verregaand akkoord, behalve dat ook ik een read-only access nog wel zou zien zitten; maar de topicstarter wil data/commando's kunnen schrijven, dat is toch wel een flinke brug verder.

Schimanski

Golden Member

De enige juiste manier is eigenlijk een perimeter firewall en een inside firewall met daartussen een DMZ waar de spulleboel die internet connectivity nodig heeft staat.

Voor de particulier die z'n ESP wil benaderen is dit overkill, gebruik dan een VPN of oplossingen zoals MQTT.

What, me worry? // Radiozendamateur - PA2HGJ // Stuff is the junk you keep -- Junk is the stuff you throw away // Tinkeo Ergo Sum
bprosman

Golden Member

Op 9 januari 2023 18:08:48 schreef rew:
Als je een complete Linux-bak of windows-bak direct op het internet hangt, dan loop je het risico dat er een service draait die vatbaar is voor een bugje waar een hacker naar blijkt te scannen. Of dat jij ooit een test account hebt aangemaakt met accountnaam "test" en wachtwoord "test". Dan is er een legitieme service, zonder bug, maar toch een hacker die je systeem in kan.

De kans op bugs bij zelfgemaakte software is groter, maar de kans dat hackers daar gebruik van kunnen maken is kleiner.

Dus als jij 1 poort van je ESP8266 op het internet beschikbaar maakt, dan loop je het risico dat iemand naar je meetgegevens gaat kijken. Zorg voor een wachtwoord in je ESP8266 software als je dat niet wil. Maar de kans op een complete hack is beheersbaar. Ik zou het acceptabel vinden.

Third parties voor dit soort dingen inschakelen... Keer op keer blijkt dat ZIJ dan de weakest link zijn. En hackers willen er ook meer moeite in steken: Als ze die thinspeak site hacken, hebben ze ineens controle over een hele hoop verbindingen. Mogelijk is dat de moeite waard om die site grondig te hacken. Maar als jij 1 poortje open zet naar een zelfgemaakt esp8266 programma? Mwah. Kans dat daar wat te halen valt is klein.

Vaak worden gehackte machines ook misbruikt om verder het netwerk in te kruipen naar andere devices. Die kans is met een ESP module wel nihil.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Vaak worden gehackte machines ook misbruikt om verder het netwerk in te kruipen naar andere devices. Die kans is met een ESP module wel nihil.

Als een hacker zich de moeite wil doen om mijn sensor uit te lezen en verder geen schade kan aanrichten, dan doet hij maar :+

De jacht is mooier dan de vangst....
buckfast_beekeeper

Golden Member

Op 9 januari 2023 18:19:58 schreef Paulinha_B:
@BFBK: hierboven heeft @rew netjes uitgelegd dat een "derde partij" vooral geen goed idee is, wegens te aantrekkelijk voor bedriegers (m/v/x). Of waar moet die MQTT anders draaien?

@rew: verregaand akkoord, behalve dat ook ik een read-only access nog wel zou zien zitten; maar de topicstarter wil data/commando's kunnen schrijven, dat is toch wel een flinke brug verder.

MQTT is niet zomaar ergens wat plaatsen. Voor connectie heb je gebruikersnaam en paswoord nodig. Daarna heb je de unieke topic naam nodig van wat er wordt gepubliceerd. Bijvoorbeeld uniekId/JSONout
{“Temperature”:22}.

Vele systemen waar je vanop afstand zaken kan bedienen werken via dit principe. Bijvoorbeeld home assistant.

Van Lambiek wordt goede geuze gemaakt.

Hoe zit dat eigenlijk met videobeelden?

Stel ik heb een ESP32-cam die beelden maakt van mijn voordeur en die wil ik van op afstand bekijken met mijn telefoon.
Moet ik dan gebruik maken van een externe aanbieder of kan dat ook via een server die ik thuis heb staan?

De jacht is mooier dan de vangst....

Op 9 januari 2023 19:43:48 schreef Vovpvi:
[...]

Als een hacker zich de moeite wil doen om mijn sensor uit te lezen en verder geen schade kan aanrichten, dan doet hij maar :+

vooral dat. jij bent geen grootbank of ander groot systeem waar geld te rapen is. als zij een mail sturen: we hebben controle over je oprit camera, je moet 1000bitcoins betalen of we blokkeren het toestal definitief...

ga ik naar mijn rpi, trek de voeding eruit en gedaan heeft de hacker.

om zo min mogelijk poorten open te zetten, kan je wel bv een VPN opzetten.
zo hebben mijn raspberrys enkel de poortjes 80 open naar buiten (website gedeelte), maar via mijn VPN kan ik toch aanpassingen doen aan de systemen

voor je camera nu, je zou bv elke seconde een beeld kunnen maken en die op poort 80 beschikbaar zetten. dan kan je die laatste 'foto' online bekijken. verder geen toegang tot die camera, en het gedeelte dat de foto maakt en online zet is ook afgeschermd.

als je zo een IP camera in de action koopt, dan stuurt die zijn beelden door naar de fabrikant zijn server in china. jij logt in op die server en ziet jouw beelden (samen met 10tallen chinezen die er ook aan kunnen in dat bedrijf). als 1 hacker dat bedrijf hakt, heeft die toegang tot 10 000den cameras

voorbeeld: ik laat nu elke 30min een foto nemen van mijn meterstand die hier komt te staan:
http://81.243.177.177:8080/eleccam.jpg

ik hou van werken ..., ik kan er uren naar kijken

Op 10 januari 2023 09:19:09 schreef fcapri:
[...]

voorbeeld: ik laat nu elke 30min een foto nemen van mijn meterstand die hier komt te staan:
http://81.243.177.177:8080/eleccam.jpg

Wat gebeurt er met de foto's die je al hebt genomen? Worden die overschreven?

De jacht is mooier dan de vangst....

Op 10 januari 2023 12:15:01 schreef Vovpvi:
[...]

Wat gebeurt er met de foto's die je al hebt genomen? Worden die overschreven?

bij deze nu wel, ik heb een andere pagina waar altijd nieuwe fotos inkomen. met een klein scriptje kan je wel telkens de laatste laten zien
http://81.243.177.177:8080/elec.cgi
je kan ook een script maken die telkens bv de laatste 10 achter elkaar afspeelt... je bent vrij te programmeren wat je wil.

deze worden gemaakt met een raspberry en een doodsimpele usb webcam.

filmen kan ook hoor, ik heb een camera systeem online, maar ga de link hier niet posten :-) . zit nu op werk en kan de boel hier bekijken, kan het zien op de gsm, kan het zien op men android auto radio...

ik hou van werken ..., ik kan er uren naar kijken