[Résolu] Relever l'adresse IP d'un visiteur sur un serveur esp8266

Bonjour à tous,

J'ai réalisé une petit serveur web (sur NodeMCU ESP8266) sur mon réseau domestique, accessible (en DMZ) au monde extérieur.

Je m'aperçois que des connexions inconnues tentent d'y accéder. (1 ou plus par jour)
Peut-être des robots ? ou des "gosses" qui s'amusent ?

Rien de bien grave, mais je souhaiterais pouvoir relever l'adresse IP de ces "visiteurs".
Je ne vois pas comment relever ces adresses via le moniteur : Serial.println(xxxxx);

Une piste !, un exemple !

Merci

Édit: sans doute pas visible au niveau HTTP car c’est plus bas dans les couches OSI

Lire ce partage et essayer

Si tu utilises la classe WiFiClient : appelle la méthode remoteIP()

Bonsoir et merci pour vos réponses rapides.

@hbachetti . J'ai itilisé la classe WiFiClientSecure.
J'ai déjà essayé méthode remoteIP()
erreur 'Class ESP8266WiFiClass' has no member named 'remoteIP'

@J-M-L
C'est une bonne piste mais je ne m'attendais pas à cette réponse.
Effectivement, j'aurais surement des informations mais je ne sais pas comment m'y prendre non plus.
Pour débuter, j'ai utilisé cet exemple :

Comment "saisir" l'en tête HTTP lors de la réception de la requête ?

L'auteur dit 3 choses à faire :

  • Brancher un méthode lorsque l’argument est reçu de la page web. C’est la méthode hasArg(String nomArgument)
  • Récupérer la valeur de l’argument avec arg (nomArgument)
  • Réaliser le traitement attendu, du code Arduino classique
    Mais l'argument c'est simplement quelques caractères !

Dans la fonction handleRoot, on ajoute un test qui vérifie la présence de l’argument D6.
S’il est présent, on exécute la fonction handleD6.

void handleRoot(){ 
  if ( server.hasArg("D6") ) {
    handleD6();
  } else {
    server.send ( 200, "text/html", getPage() );
  }  
}
class WiFiClientSecure : public WiFiClient

Héritage ...

re

Désolé, je ne vois pas ce qu'il faut faire.
Je suis débutant.

erreur 'Class ESP8266WiFiClass' has no member named 'remoteIP'

Ce n'est pas la classe ESP8266WiFiClass qui possède la méthode remoteIP() mais la classe WiFiClientSecure.

Bonjour

En attendant de trouver une solution par un code approprié tester l'activation du debug (Debug Port) avec par exemple l'option WiFi ? C'est en général dans le dans le menu Outils pour les cartes à ESP8266

Je n'ai rien sous la main actuellement pour valider mais il me semble avoir vu l'IP du client....

Bonjour al1fch,

J'utilise IDE Arduino 1.8.7
J'ai Debug port : "Disabled" (2 autres choix possibles serial et serial 1)
J'ai Debug Level : "Wifi" ( j'ai mis, parmi 25 possibilités environ)
Mais je n'ai jamais utilisé ces outils. C'est peut-être très intéressant ?

J'ai essayé mais je ne vois rien de plus.
Je patauge toujours. Quelle syntaxe utiliser ?

Merci

Silence radio = je patauge toujours

avec Debug sur Serial et Debug level sur WiFi?

Bonsoir,

J'ai trouvé la(une) solution sur ce site :
https://www.esp8266.com/viewtopic.php?f=32&t=8329&start=4

Il me suffisait d'ajouter ces 2 lignes
String addy = server.client().remoteIP().toString();
Serial.println(addy);

Nota : en local il m'indique l'adresse IP de ma passerelle par défaut : 192.168.0.254
Affaire à suivre.
mais je la note résolue.

Bonjour à tous,

ça fonctionne très bien. De quoi s'amuser à voir d'où cela vient avec ce lien !
https://fr.geoipview.com/?q=51.38.57.199&x=0&y=0
De tous les pays !
Adresses IP récoltées en 4 heures de 13h30 à 17h30 environ ce jour, 12/11/2019

91.194.90.159
51.38.57.199
207.180.208.189
124.107.165.88
45.143.220.23 ??
74.131.80.191
177.189.16.178
177.189.16.178
164.52.24.163 ??
83.33.195.50
94.23.208.18
122.51.54.16

geryko:
J'ai trouvé la(une) solution sur ce site :
ESP8266 WiFIWebServer get IP and MAC ADDRESS of the client. - Everything ESP8266

euh.. c'est le lien que je vous ai donné dans le post #1... :o :confused:

mais bravo - vous savez que les robots et hackers du monde entier s'intéressent à vous :slight_smile:

Bonsoir J-M-L,

Exact, c'est bien le même lien.
La 1ère fois j'avais dû passer à travers sans comprendre ou lire trop vite.

Mes excuses et merci quand même. +1 au compteur !
A+

Salut ,

ben en meme temps tout le monde sait qu on ne met jamais un acces de son domicile vers l' exterieur en DMZ ...

c ' est un peu , comment dire si vous ne voulez pas faire entrez les cambrioleurs chez vous , mais que vous enlevez la porte d' entrée ........

c ' est sur ils ne rentreront jamais :slight_smile:

la DMZ c ' est exactement la meme analogie .

Bonsoir,

Oui, d'accord mais c'est comme ça qu'on apprend !

oui , mais il y a d' autres façons " plus securisé " d ' arriver a vos fins que de mettre un acces a votre domicile sur le net en DMZ , enfin tout depend de ce que vous voulez realisez .

generalement on place une adresse fixe ( ou dynamique avec DDNS ) pour un acces internet , puis sur sa box on fait une ouverture et / ou une redirection de ports afin d' avoir un minimum de securité pour ne pas se faire " piraté ".

meme si vous n' avez pas de données sensible sur votre reseau domestique , certains pirates pourrait detournez votre bande passante ou faire d' plein d' autre trucs malveillants .

ne facilitez pas les choses avec une DMZ !

c ' est juste un conseil .

Bonne soirée .

Bonsoir iznobe,

Oui, mais c'est comme cela qu'on apprend ?

Et que me proposes-tu de mieux.

  • Quelle est la meilleure sécurité pour "isoler" mon réseau privé des accès extérieurs ?
  • Quelles sont les autres solutions ? (hormis éteindre mon serveur)

(Je ne parle pas de la sécurité du contenu du serveur)

Salut , comme je l ’ ai dit dans mon post precedent , enlevez la DMZ pour votre serveur ! la DMZ ouvre tout les ports …

ensuite ouvrir un port en entree( ou des ) sur votre box correspondant(s) au port(s) dont vous avez besoin pour ce serveur .
ssh = 22;
web = 80;
ftp = 20 21 etc .

tout les autres ports doivent bien entendu rester fermer .

a ce stade , vous n’ autorisez deja que certains protocoles sur certain ports , ca limite deja vachement !

pour y ajouter ( un peu ) de securité il est conseillé de ne pas acceder directement par les ports par defauts ( trop facile )

on choisi un port entre 1000 et 65535 , puis on fait une redirection ( toujours dans la box : NAT ) .
Par exemple pour un serveur web avec port custom de l’ exterieur vous faites : votre_adresse.com:64359 ( 64359 est le port exterieur ) .

vous le redirigez sur le port 80 interne de votre machine serveur soit avec votre ip fixe locale , soit adresse mac de la carte , soit le DNS local , tout depend de votre box .

ca complique les choses pour les potentiels intrus .

ca reste simple a mettre en oeuvre et ca augmente la securité , c ’ est vraiment le B a BA de la securité .

Bonjour,

J'ai (enfin) réussi à paramétrer comme il le fallait car il ne suffisait pas de vouloir le faire il fallait aussi y parvenir.
Même ma redirection d'un seul port n'était pas correcte. J'avais dû mettre une plage de ports : 80 à 80 !
Tout est rentré dans l'ordre. Il faut dire que cette box Free Crystal V5 n'est pas facile à dompter.
Un vrai parcours du combattant.

  • L'interface utilisateur est illisible. Même les anglais n'auraient pas su faire aussi horrible.
  • La manière de relancer la box pour faire prendre en compte les modifications est aussi piégée.
    Ne surtout pas utiliser la télécommande (du décodeur TV) qui permet soit disant de "redémarrer" la box.

Toutes ces difficultés non maitrisées m'avaient conduit à ne trouver qu'une solution fonctionnelle mais mauvaise.
Maintenant, la théorie et la pratique sont en accord.
Je n'ai plus toutes ces adresses IP inconnues qui atterrissent sur mon serveur.

Un grand merci à Iznobe qui m'a obliger à "creuser" un cette box récalcitrante (à marquer au fer rouge).