PHP Comment se connecter à un hote extérieur en IPv6 ?

Bonjour à toutes et à tous,
PHP Comment se connecter à un hote extérieur en IPv6 ?

Bonjour,

J'utilise l'offre 'Hébergement Perso' (Perso2014).
Mes scripts PHP ont besoin de se connecter à un serveur extérieur (un RPi derrière une box SFR).

Je dois migrer ces connections de IPv4 à IPv6.
(Je suis sûr que l'adresse IPv6 que j'utilise est correcte et fonctionnelle car j'ai testé avec netcat depuis mon téléphone en 4G et la connection s'effectue normalement).

Mais mon script PHP en IPv6 donne l'erreur suivante :
php_network_getaddresses: getaddrinfo for 2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx4 failed: Address family for hostname not supported (0)

Merci pour votre aide,
Jerome

En IPv4 la connection fonctionne bien, pas d'erreur.
echo "

IPv4

";
$fp = fsockopen("xxx.xxx.xxx.xxx", 1042, $errNo, $errStr, 10);
echo "fsockopen dit ".$errStr." (".$errNo.")
";
if ($fp) fclose($fp);

En IPv6, aucune des tentatives suivantes ne fonctionne.

echo "

IPv6

";
$fp = fsockopen("[2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx4]", 1042, $errNo, $errStr, 10);
echo "fsockopen dit ".$errStr." (".$errNo.")" ;
if ($fp) fclose($fp);

$fp = fsockopen("tcp://[2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx4]", 1042, $errNo, $errStr, 10);
echo "fsockopen dit ".$errStr." (".$errNo.")" ;
if ($fp) fclose($fp);

$fp = fsockopen("2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx4", 1042, $errNo, $errStr, 10);
echo "fsockopen dit ".$errStr." (".$errNo.")" ;
if ($fp) fclose($fp);

Bonjour,

avez-vous lu la documentation PHP à ce sujet ?

Cordialement, janus57


Comment se connecter à un hote extérieur en IPv6 ?


Bonne question. Je ne trouve rien de très concret là-dessus.
Peut-être cet article assez ancien ? https://packetlife.net/blog/2010/mar/17/using-6to4-ipv6-home/
Votre FAI fournit-il quelconque gateway, proxy, tunnel ?

La partie serveur (RPi derrière box SFR) fonctionne bien en IPv6. Je m'en suis assuré avec netcat depuis plusieurs points d'internet.
Mon problème est le client IPv6 (script PHP @ovh)

Bonjour, j'avais lu ces pages, et créé mes requetes fsockopen en conséquence me semble t il.
https://www.php.net/manual/en/function.fsockopen.php
https://www.php.net/manual/en/transports.inet.php
J'ai meme tenté en enlevant les (3e exemple de mon post).
Ai je loupé qqe chose ?

Bonjour,

la bonne syntaxe d'après la doc c'est avec :
[quote]
Note: Lors de la spécification d'adresses IPv6 au format numérique (e.g. fe80::1) vous devez placer l'adresse IP entre crochets. Par exemple : tcp://[fe80::1]:80.
[/Quote]
Cf : https://www.php.net/manual/fr/function.fsockopen.php

Si cela ne fonctionne pas, c'est que OVH n’utilise pas IPv6 en sortie et là vous êtes bloqué côté OVH.

Cordialement, janus57

Autre symptome du meme problème : Le code suivant donne bien 200 pour www.google.com, mais 0 pour ipv6.google.com

J'ai créé un ticket vers le support, qui m'a répondu que c'est un problème de webmestre et pas de leur infrastructure… Je me demance s'ils ont lu mon ticket.

Suis-je le seul à vouloir faire des requetes IPv6 depuis l'hébergement mutualisé ?

$ch = curl_init("https://www.google.com");
$reponse = curl_exec($ch);
$info = curl_getinfo($ch, CURLINFO_HTTP_CODE);
print_r($info);

echo "
";

$ch = curl_init("https://ipv6.google.com");
$reponse = curl_exec($ch);
$info = curl_getinfo($ch, CURLINFO_HTTP_CODE);
print_r($info);


Suis-je le seul à vouloir faire des requetes IPv6 depuis l'hébergement mutualisé ?

Bonjour,

Je pense que oui.

Les mutus possèdent bien une adresse IPv6, mais les connexions sortantes faites par les sites hébergés doivent se faire en IPv4.

Hello,
Fritz2cat a raison.
Voici la réponse du support ovh :

"Je suis navrée, toutefois vous ne pouvez pas adapter l'infrastructure dans le cadre d'une offre mutualisée. Il ne sera de ce fait pas possible de faire des requêtes sortantes en IPv6 avec ce type d'offre.
Si besoin, vous pouvez migrer sur une offre de type VPS, où vous aurez la main complète sur votre infrastructure."

A l'heure de la migration planétaire à IPv6, je suis surpris.