On Monday, November 2, 2015 at 11:19:43 PM UTC+1, Simone Gallina wrote:
arduino uno con ethernet 2 collegata via rete al router.
Ok, questo non lo avevi scritto nella prima mail.
In generale, più informazioni date, meglio si riesce ad aiutarvi, senza dover fare tanti post.
Nella rete privata vedo arduino
Definisci vedo: riesci a pingarlo, vedi che lui comunica in rete, ma non riceve i tuoi comandi, oppure funziona tutto?
Non riesco ad accedere ad arduino via web.
Mi pare di capire che stai facendo girare un server web sull'arduino.
Bon, in LAN, riesci ad accedere o no tramite browser all'arduino?
Il problema è solo nell'accederci dall'esterno, dalla rete internet?
il mio router e d-link 2640r
Non conosco, ma dovresti cercare una funzione che si tecnicamente si chiama DNAT o Port forwarding.
Poi certi minchioni di produttori la battezzano con altri nomi più o meno fantasiosi.
Tu hai fondamentalmente due reti, una con indirizzi RFC 1918 (192.168.x.x, 10.x.x.x, 172.16.x.x a 172.31.x.x) non routabili su internet, dall'altra internet.
Il tuo router sta nel mezzo. Su una interfaccia avrà l'indirizzo pubblico, sull'altra tipicamente 192.168.x.1. Il router "regola" il traffico tra le due reti.
Tu sei visibile su internet solo tramite il tuo indirizzo ip pubblico, però in realtà tu hai n dispositivi a casa. Quindi il router deve nasconderli da internet e fare sembrare che tutto il traffico che esce da casa tua sia lui a generarlo. Questo si chiama SNAT.
Quando tu ti colleghi all'indirizzo ip pubblico potrai vedere solo il router. A meno che tu non lo istruisca con delle regole di DNAT che quando arriva qualcosa sulla porta x della sua interfaccia WAN, lui deve indirizzare il traffico alla porta y del dispositivo con ip x.y.z.k.
Prima cosa, devi assegnare un indirizzo ip statico al tuo arduino, e fare in modo che questo indirizzo non sia nel range di indirizzi disponibili dal dhcp server che gira sul router, altrimenti rischi di avere conflitti, poi configurare il router in modo che il traffico che arriva dall'esterno sulla porta (es.: 81, non puoi usare la porta 80 in quanto già in uso dall'interfaccia web del router, a meno che tu non riesca a disattivare l'interfaccia web sull'interfaccia wan, ma a seconda di quanto schifo fa il firmware, questo potrebbe non essere sufficiente) x, venga reindirizzato all'indirizzo 192.168.x.y sulla porta 80.
quando uso ip pubblico mi entra nel router ma non in arduino.
Giusto. Vedi spiegazione sopra.
Non dovrei avere problemi di sicurezza se apro solo arduino al web.
Arduino deve solo aprire il cancello quando lo chiamo.
Dipende da come hai scritto il sw sull'arduino. Se l'autenticazione (perché tu permetti solo l'accesso tramite username e pwd VERO?) è in qualche modo bypassabile o hai scelto password farlocche o presenti a dizionario, potrebbe capitarti che qualcuno dall'altra parte del mondo, ti apra il cancello.
In questo video la cosa è presentata in modo ironico, ma sono cose vere.
https://www.youtube.com/watch?v=0kzjqBacF1kDa qualche parte ci sarà anche la versione in italiano, che rende meglio.