Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Salle des serveurs _ Comment trouver l'IP de connexion depuis un téléphone mobile?

Écrit par : Mac Arthur 22 Dec 2011, 12:51

Bonjour,

Je ne suis pas sur que mon post soit dans la bonne section (internet plus que réseau) mais il s'agit d'un sujet assez technique.
Des utilisateurs peuvent se connecter via internet sur mon site avec accès à une partie privée (login psw) en SSL.
Ais-je un moyen de déterminer d'où se connecte quelqu'un possédant un compte opérateur France (SFR Orange etc...) qui le ferait depuis un téléphone portable (3G et non pas Wifi) depuis l'étranger.
Il semble que je n'ai l'information que depuis le serveur France de l'opérateur du mobile mais pas la connexion point d'origine jusqu'à l'opérateur France.
Par avance merci de votre aide.
Mac

Écrit par : riete 22 Dec 2011, 14:51

Si j'ai bien compris tu parle de clients mobile ??

Dans la mesure ou ton client est un iPhone, tu as la possibilité de récupérer sa position si celui-ci t'autorise à le faire grace à la Class JS geolocation.
Tu trouveras tout ou presque http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/GettingGeographicalLocations/GettingGeographicalLocations.html.

Ca marche plutôt bien wink.gif (si tu as un iphone, sur Androïd bof sad.gif )

Correction: En revoyant le titre, je vois que je me suis laissé abusé par le contenu. Tu y ecris "d'où se connecte quelqu'un". J'ai donc pensé à la position GPS. Ma réponse est donc hors sujet.
Ceci étant dit, tu peux très bien récupérer l'adresse IP de ton client grace à PHP ou a d'autre language coté serveur. Mais ce n'est pas l'IP qui te donneras la position d'un client mobile tongue.gif

Écrit par : makpro 23 Dec 2011, 00:15

il y a aussi le X-Forwarded-For header que tu peux utiliser

Écrit par : Mac Arthur 23 Dec 2011, 08:54

Merci pour vos réponses.
Je reformule de façon simple.
Je ne cherche pas à géolocaliser mon utilisateur précisément.
Je souhaite par exemple savoir si il se connecte depuis Pékin ou New York lorsqu'il utilise son téléphone mobile et ouvre son explorateur internet pour se connecter avec son login et son psw.
Ceci ne concerne bien sur que les connexions via son opérateur téléphonique français. Si il est en wifi le problème est résolu, l'IP de connexion étant enregistrée.
Mac

Écrit par : Polo35230 23 Dec 2011, 13:16

Citation (Mac Arthur @ 22 Dec 2011, 12:51) *
Il semble que je n'ai l'information que depuis le serveur France de l'opérateur du mobile mais pas la connexion point d'origine jusqu'à l'opérateur France.


Bonjour,

C'est curieux.
Ce serait logique si l'utilisateur (à l'étranger) passait par un proxy web de son opérateur français, sinon, l'adresse IP devrait voyager de bout en bout.

A partir du moment ou on a l'adresse IP, on peut la soumettre à un outil qui permettra de savoir (à peu près) l'origine de l'appel.
Par exemple:
http://www.localiser-ip.com/

Pour avoir l'adresse IP, il faut avoir un outil qui permettra de tracer les connexions entrantes sur le serveur (du genre firewall (Comme VirusBarrierX6) ou analyseur de réseau (comme wireshark)), qui pourrait filtrer les connexions entrantes (TCP SYN) sur les port SSL (ex 443 pour HTTPS).



Écrit par : flan 24 Dec 2011, 08:07

Citation (Polo35230 @ 23 Dec 2011, 13:16) *
Citation (Mac Arthur @ 22 Dec 2011, 12:51) *
Il semble que je n'ai l'information que depuis le serveur France de l'opérateur du mobile mais pas la connexion point d'origine jusqu'à l'opérateur France.


Bonjour,

C'est curieux.
Ce serait logique si l'utilisateur (à l'étranger) passait par un proxy web de son opérateur français, sinon, l'adresse IP devrait voyager de bout en bout.

A partir du moment ou on a l'adresse IP, on peut la soumettre à un outil qui permettra de savoir (à peu près) l'origine de l'appel.
Par exemple:
http://www.localiser-ip.com/

Pour avoir l'adresse IP, il faut avoir un outil qui permettra de tracer les connexions entrantes sur le serveur (du genre firewall (Comme VirusBarrierX6) ou analyseur de réseau (comme wireshark)), qui pourrait filtrer les connexions entrantes (TCP SYN) sur les port SSL (ex 443 pour HTTPS).

En 3G, les adresses IP sont NATées. En France, je me retrouve avec du 10.0.x.x, par exemple.

Écrit par : Polo35230 24 Dec 2011, 15:48

Alors là, les adresses 10.0.0.0/8 sont réservées à des réseaux privés.
La plupart des entreprises, grand comptes, etc, les utilisent sur leurs LANs.
Donc, impossible de localiser une adresse de ce type.

Par contre, cette adresse, si elle est bien attribuée par l'opérateur (côté client) ne peut pas être celle qui sert à voyager dans internet (le réseau 10.0.0.0/8 n'est pas routé dans internet).
Pour moi, cette adresse est encapsulée dans les en-têtes protocolaires d'un tunnel (VPN SSL par exemple).
Ce n'est pas elle qui est utilisée comme addresse IP du tunnel (côté client).

L'adresse IP qu'il faudrait connaître, c'est l'adresse avant désencapsulation.

Et là, j'en reviens à l'analyseur de réseau wireshark qui prend la trace sur l'interface physique du Mac (donc, avant désencapsulation).
Il suffirait alors de capturer (via un filtre) les TCP SYN entrantes et de regarder les adresses.
On aurait alors l'adresse IP source qui a servi à établir la connexion tunnel,
Maintenant, si le serveur est une entreprise, avec de très nombreuses connexions entrantes, ça risque d'être plus difficile....

Sujet complexe (pour moi), je ne suis pas sûr à 100% de ce que j'ai dit... sad.gif
Mais la trace donnerait une bonne indication...

Écrit par : Mac Arthur 24 Dec 2011, 17:54

Oui c'est ça, du 10.xxxx et ensuite ça se complique....

Écrit par : Mac Arthur 26 Dec 2011, 09:15

Donc effectivement de multiples utilisateurs peuvent se connecter au meme moment.
Je ne souhaite pas traiter la recherche de ces IP en live mais plutot a posteriori pour faire des statistiques.
Est ce que Wireshark nécessite de travailler "online" ou peut traiter des fichiers batchs 1 fois par semaine par exemple et donc traiter les IP 10 xxxx a posteriori alors que l'utilisateur s'est déjà déconnecté?
A moins que d'autres aient une autre solution.
Par avance merci de votre aide
Mac

Écrit par : Polo35230 26 Dec 2011, 13:45

Wireshark n'est pas vraiment fait pour ça.
Il permettra de voir si on peut vraiment identifier l'adresse IP du client. Je ne sais pas si je me suis bien expliqué plus haut, mais par exemple, dans l'utilisation d'un tunnel (VPN SSL, par exemple), il y a 4 adresses IP: Deux adresses IP qui servent à l'établissement du tunnel (c'est l'adresse source qui nous intéresse), et celles qui sont encapsulées (pour moi, celles en 10) et qui ne sont pas significatives.
Et surtout, si cette adresse est exploitable.
Il est gratuit, et comme dit plus haut, avec la mise en place d'un filtre sur les connexions entrantes, on verra les adresses IP avant désencaptulation.
Le fichier trace pourra être bien sûr être exploité en mode texte, mais wireshark est avant tout un outil d'analyse...

Maintenant, si le but, c'est d'analyser des logs de connexions entrantes (ou sortantes), le mieux c'est d'utiliser un firewall.
Perso, j'utilise VirusBarrier X6 (payant, mais je crois qu'il y a une version d'évaluation), qui intègre un firewall, et qui permettra de journaliser (mais peut-être pas dans sa version gratuite) les événements de façon plus ergonomique et de les historiser.

Avant peut-être de l'installer, il faudrait être sûr que les événements capturés sur le serveur soient ceux qui vous intéressent.
Si l'extrémité du tunnel n'est pas sur le serveur, (mais sur une box, ou sur une passerelle VPN du réseau local), c'est râpé...

Pour ça, une petite trace tcpdump prise sur le serveur pourrait donner des indications sur les connexions TCP.
Un exemple de trace prise sur mon mac (192.168.1.11). 192.168.1.1 est l'IP de la box.
Dans la trace ci dessous, on voit qu'il n'y a qu'une seule connexion entrante (109.229.5.208 vers mon Mac.port 38980 (s'est skype))

sudo tcpdump -n -i en0 tcp[13]==2 (en0 pour une interface ethernet, en1 pour une interface wifi)

imac:~ Polo$ sudo tcpdump -n -i en0 tcp[13]==2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:05:06.296801 IP 192.168.1.11.49610 > 212.161.8.36.13392: Flags [S], seq 2622069441, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818001 ecr 0,sackOK,eol], length 0
12:05:07.655403 IP 192.168.1.11.49611 > 204.9.163.200.13392: Flags [S], seq 2060273963, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818015 ecr 0,sackOK,eol], length 0
12:05:14.635426 IP 192.168.1.11.49612 > 149.13.32.15.13392: Flags [S], seq 833913079, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818084 ecr 0,sackOK,eol], length 0
12:05:52.241308 IP 192.168.1.11.49620 > 192.168.1.1.60000: Flags [S], seq 860704569, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818460 ecr 0,sackOK,eol], length 0
12:05:59.877261 IP 192.168.1.11.49621 > 192.168.1.1.60000: Flags [S], seq 1910304488, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818536 ecr 0,sackOK,eol], length 0
12:06:09.813109 IP 192.168.1.11.49622 > 192.168.1.1.60000: Flags [S], seq 433678811, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818636 ecr 0,sackOK,eol], length 0
12:06:18.918283 IP 192.168.1.11.49623 > 192.168.1.1.60000: Flags [S], seq 3042426448, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818727 ecr 0,sackOK,eol], length 0
12:06:20.654464 IP 192.168.1.11.49624 > 192.168.1.1.60000: Flags [S], seq 4220703363, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818744 ecr 0,sackOK,eol], length 0
12:06:24.991118 IP 109.229.5.208.1215 > 192.168.1.11.38980: Flags [S], seq 150771892, win 65535, options [mss 1440,nop,nop,sackOK], length 0
12:06:25.521424 IP 192.168.1.11.49625 > 77.183.115.145.80: Flags [S], seq 3234832695, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 337818793 ecr 0,sackOK,eol], length 0


Mieux que la commande ci-dessus:
sudo tcpdump -n -i en0 dst 192.168.1.11 and 'tcp[13]==2' (dans l'exemple 192.168.1.11 est mon mac)

Elle permettra de ne tracer que les connexions entrantes.

Maintenant, il y a peut-être plus simple comme solution... smile.gif

Écrit par : NetWalker 3 Jan 2012, 11:25

Bonjour,

Effectivement cela peut dépendre de l'opérateur.

Tu peux utiliser des sites comme http://www.whatismyip.com/ qui te donnent ton IP au moment ou tu surfe, ce qui peut être utile si tu dois créer une règle temporaire de Firewall. Comme il s'agit d'adresses IP dynamiques cela ne peut être que temporaire.

En utilisant ensuite un site comme http://www.adresse-ip.biz/ tu pourras avoir plus ou moins de détails. En tout cas au minimum le pays et le fournisseur d'accès. Le site indique aussi la longitude et la latitude mais dans le cas d'un accès 3G cela ne localise pas un téléphone portable.

Bonne Année !

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)