Auteur Sujet: Script pour retourner l'IPv6 + IPv4 publique  (Lu 12021 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 304
    • Twitter LaFibre.info
Script pour retourner l'IPv6 + IPv4 publique
« le: 13 mars 2015 à 13:38:40 »
Script pour retourner l'IPv4 publique et l'IPv6

La page https://ip.lafibre.info permet de retourner l'IP utilisée.

Comment faire pour retourner l'IPv4 et l'IPv6 (si le client est compatible IPv6) ?

Je suppose qu'il faut détecter sur la connexion est IPv6 (donc si la première IP retournée est en IPv6, le serveur écoute en IPv4 et IPv6) et si c'est le cas faire une seconde connexion en IPv4 only pour récupérer l'IPv4.

Vous auriez un script simple pour le faire ?

Voici le code tout simple que j'utilise sur La page https://ip.lafibre.info/ (disponible en http et https)

<?php
$ClientIp 
$_SERVER["REMOTE_ADDR"];//On obtient l"adresse IP
$ClientHost gethostbyaddr($ClientIp);//on transforme en Host avec adresse du FAI
$ClientHostTab explode("."$ClientHost);//on divise en segments le host par rapport à chaque point
$nb_points substr_count($ClientHost".");// Nombre de point(s) dans la ligne
//$ClientFaiUrl = "http:\/\/www.",$ClientHostTab[$nb_points - 1],".",$ClientHostTab[$nb_points];

echo "<!DOCTYPE html>\n";
echo 
"<html lang=\"fr\">\n";
echo 
"    <head>\n";
echo 
"      <meta charset=\"utf-8\" />\n";
echo 
"      <title>Quelle est mon IP ?</title>\n";
echo 
"      <meta name=\"description\" content=\"Donne votre adresse IP, le reverse-DNS et le FAI associé\" />\n";
cho "      <meta name=\"author\" content=\"Vivien - https://lafibre.info\">\n";
echo 
"      <meta name=\"keywords\" content=\"IP, reverse DNS\" />\n";
echo 
"    </head>\n";
echo 
"<body>\n";
echo 
"<img src=\"lafibre.png\" alt=\"LaFibre.info\"><br />\n";
echo 
"<strong>Informations données par votre navigateur aux sites internet :</strong><br />\n";
echo 
"      <ul><li>Votre IP publique est <strong><font color=green>",$ClientIp,"</font></strong></li>\n";
echo 
"      <li>Votre nom d'hôte (\"reverse DNS\") est <strong>",$ClientHost,"</strong></li>\n";
echo 
"      <li>Votre navigateur est <strong>",getenv("HTTP_USER_AGENT"),"</strong></li>\n";
echo 
"      <li>Votre FAI supposé est \"<strong><a href=\"http://www.",$ClientHostTab[$nb_points 1],".",$ClientHostTab[$nb_points],"\" title=\"Portail web\" target=\"_blank\">",ucfirst($ClientHostTab[$nb_points 1]),"</a></strong>\"</li></ul>\n";
echo 
"<small>Si vous souhaitez récupérer :<br /></small>\n";
echo 
"<small>- L'IP pour un site disponible en <strong><font color=purple>IPv4</font></strong> et <strong><font color=purple>IPv6</font></strong>, vous pouvez utiliser la page <a href=\"https://ip.lafibre.info\" title=\"IP publique\" target=\"_blank\">http<strong>s</strong>://ip.lafibre.info</a> (https) ou <a href=\"http://ip.lafibre.info\" title=\"IP publique\" target=\"_blank\">http://ip.lafibre.info</a> (http)<br /$
echo "
<small>- L'IP pour un site disponible en <strong><font color=purple>IPv4</font></strong> uniquement, vous pouvez utiliser la page <a href=\"https://ipv4.lafibre.info\" title=\"IPv4 publique\" target=\"_blank\">http<strong>s</strong>://ipv4.lafibre.info</a> (https) ou <a href=\"http://ipv4.lafibre.info\" title=\"IPv4 publique\" target=\"_blank\">http://ipv4.lafibre.info</a> (http)<br /></small>\n";
echo "<small>- L'
IP pour un site disponible en <strong><font color=purple>IPv6</font></stronguniquementvous pouvez utiliser la page <a href=\"https://ipv6.lafibre.info\" title=\"IPv6 publique\" target=\"_blank\">http<strong>s</strong>://ipv6.lafibre.info</a> (https) ou <a href=\"http://ipv6.lafibre.info\" title=\"IPv6 publique\" target=\"_blank\">http://ipv6.lafibre.info</a> (http)<br /></small>\n";
echo 
"<small>- votre <strong><font color=purple>IPv4</font></strong> publique par script, vous pouvez utiliser la page <a href=\"https://ipv4.lafibre.info/ip.php\" title=\"IPv4 publique\" target=\"_blank\">http<strong>s</strong>://ipv4.lafibre.info/ip.php</a> (https) ou <a href=\"http://ipv4.lafibre.info/ip.php\" title=\"IPv4 publique\" target=\"_blank\">http://ipv4.lafibre.info/ip.php</a> (http)<br /></small>\n";
echo 
"<small>- votre <strong><font color=purple>IPv6</font></strong> publique par script, vous pouvez utiliser la page <a href=\"https://ipv6.lafibre.info/ip.php\" title=\"IPv6 publique\" target=\"_blank\">http<strong>s</strong>://ipv6.lafibre.info/ip.php</a> (https) ou <a href=\"http://ipv6.lafibre.info/ip.php\" title=\"IPv6 publique\" target=\"_blank\">http://ipv6.lafibre.info/ip.php</a> (http)<br /></small>\n";
echo 
"<br /><br />";
echo 
"<small>Scripts pour Linux, qui récupérent l'IP publique, et qui indiquent si c'est une IPv4 ou une IPv6 :</small>\n";
echo 
"      <ul><li><small>Script python3 : <a href=\"ip.py\" title=\"Script perl IP publique\">ip.py</a></small></li>\n";
echo 
"      <li><small>Script perl : <a href=\"ip.pl\" title=\"Script perl IP publique\">ip.pl</a></small></li>\n";
echo 
"      <li><small>Script shell - bash : <a href=\"ip.sh\" title=\"Script perl IP publique\">ip.sh</a></small></li></ul>\n";
echo 
"</body>\n";
echo 
"</html>\n";
?>

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 104
  • Paris (75)
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #1 le: 13 mars 2015 à 13:59:26 »
edit: scratch that, j'avais compris dans l'autre sens

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 104
  • Paris (75)
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #2 le: 13 mars 2015 à 14:10:24 »
Tu veux l'info ou ? coté serveur (le serveur sait que ce même client a tel ipv4 et tel ipv6) ou juste coté client (une page qui affiche l'ipv4 et l'ipv6).

remy74

  • Abonné Free fibre
  • *
  • Messages: 42
  • Saint-Sixt (74)
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #3 le: 13 mars 2015 à 14:12:06 »
A priori la fonction de base PHP utilisé dans le script n'est pas très compatible avec IPv6.
C'est ce qui est reporté ici http://php.net/manual/en/function.gethostbyaddr.php.
Le but, c'est d'avoir l'IPv4 ou l'IPv6 du client, mais pas les 2 en même temps, on est bien d'accord ?

corrector

  • Invité
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #4 le: 13 mars 2015 à 15:29:41 »

Optix

  • AS41114 - Expert OrneTHD
  • Abonné Orne THD
  • *
  • Messages: 4 694
  • WOOHOO !
    • OrneTHD
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #5 le: 13 mars 2015 à 16:25:29 »
Difficile à faire, car le socket est établi en v6, donc PHP traite une requête sur ce socket là.

Si tu veux gérer du v4, il faut faire un sous-domaine uniquement en v4 et remonter les résultats sur la page en AJAX (si tu veux les synthétiser sur la même).

corrector

  • Invité
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #6 le: 13 mars 2015 à 16:37:00 »
Tu as besoin que la page principe obtienne l'information ou que l'utilisateur la voit?

Comme j'ai indiqué un simple objet externe dans la page affiche l'information, sans utilisation de choses aussi subtiles que des scripts intégrés d'autres domaines (qui violent le principe fondamental de la sécurité de Web).

vivien

  • Administrateur
  • *
  • Messages: 47 304
    • Twitter LaFibre.info
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #7 le: 13 mars 2015 à 17:42:11 »
Le but est de faire une page toute bête, avec des info intéressantes pour l'utilisateur, lisible depuis n'importe quel périphérique, même un vieux nokia, une TV ou un navigateur en mode texte.

Exemple avec les info IPv4 + IPv6 que je souhaiterais afficher :
- Votre IPv4 publique est 80.215.198.21
- Votre IPv6 est 2a01:e0c:1::1
- Votre nom d'hôte IPv4 ("reverse DNS") est reverse.toto.fr
- Votre nom d'hôte IPv6 ("reverse DNS") est reverse.toto.fr
- Votre navigateur est Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0
- Votre FAI supposé est "toto"

Aujourd'hui quand on a l'IPv6, la page n'affiche plus l'IPv4 : (là j'utilise w3m, un navigateur en mode texte)

« Modifié: 13 mars 2015 à 19:52:10 par kgersen »

corrector

  • Invité
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #8 le: 13 mars 2015 à 17:51:34 »
Ben j'ai mis une image parce que c'est tout ce que le forum autorise, mais sinon en texte pur tu mets une iframe pointant sur https://ip.lafibre.info/ip.php tout simplement.

Il te faudra créer ipv4.lafibre.info et ipv6.lafibre.info bien sûr.

Synack

  • AS16080 Rentabiliweb Telecom
  • Expert
  • *
  • Messages: 689
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #9 le: 13 mars 2015 à 17:58:49 »
Tu ne peux effectivement pas avoir les 2 infos (IPv4 et IPv6) sur la même connexion TCP puisqu'elle s'établit avec l'un ou avec l'autre selon le choix du client. Donc faut bien de l'iframe/ajax/etc pour établir 2 sous connexions vers des hosts fixés IPv4 et IPv6 pour récupérer l'information.

corrector

  • Invité
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #10 le: 13 mars 2015 à 18:27:05 »
C'est pas de l'AJAX normal qu'il faut, c'est de la communication par inclusion de script. Beurk.

Optix

  • AS41114 - Expert OrneTHD
  • Abonné Orne THD
  • *
  • Messages: 4 694
  • WOOHOO !
    • OrneTHD
Script pour retourner l'IPv6 + IPv4 publique
« Réponse #11 le: 13 mars 2015 à 19:01:01 »
Il y a bien IPv6-Test.com qui est excellent, mais là aussi, le site effectue des requêtes AJAX sur différents sous-domaines :





Pour l'avoir en script, tu ne pourras pas renvoyer le résultat en one-shot, surtout si ce n'est pas un navigateur en face qui fait la requête (et qui ne pourra pas exécuter des iframes ou du JS).