Auteur Sujet: Ubuntu ne veut pas utiliser ma connectivité IPv6  (Lu 2406 fois)

0 Membres et 1 Invité sur ce sujet

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« le: 22 octobre 2019 à 17:05:34 »
Salut à tous,

Je me suis enfin décidé à moderniser mon installation VPN perso, passage de OpenVPN à Wireguard et prise en charge de l'IPv6, pour me permettre d'avoir une connectivité IPv6 même si je suis sur des réseaux qui ne le permettent pas.

Bon, l'installation tout va bien. Pour l'instant, je travaille avec des IPv6 ULA pour mes machines, mais j'ai la possibilité de leur mettre des adresses globales, je verrai ça.
Donc oui, je continue à faire du NAT même en IPv6, pour l'instant (Wireguard ne permet pas encore d'avoir des IPv6 globales temporaires, "privacy extensions").

Venons-en à mon problème, sur 2 machines sous Ubuntu, l'une ayant accès à une connectivité IPv6 native et l'autre non, les systèmes préfèrent utiliser IPv4 plutôt qu'IPv6, même si les 2 fonctionnent correctement !

Voici quelques tests :

$ curl -q https://wtfismyip.com/text
{ Mon IPv4 publique }

$ curl -6 -q https://wtfismyip.com/text
{ Mon IPv6 publique }

$ host wtfismyip.com
wtfismyip.com has address 69.195.159.158
wtfismyip.com has IPv6 address 2604:5800:0:4c::6

Le premier curl aurait dû utiliser IPv6...
Ca se vérifie également dans un navigateur, toutes les requêtes sont IPv4 (confirmé sur ip.lafibre.info). IPv6 n'est utilisé que si le site ne dispose pas d'IPv4 (ipv6.google.com par exemple).

Je n'ai rien modifié à mon fichier /etc/gai.conf, qui gouverne justement les résolutions de nom. Je suis sur le fichier par défaut.

A votre avis, qu'est-ce qui peut bloquer ? Est-ce simplement le fait que je n'ai pas d'adresses IPv6 globales sur mon tunnel ?

Voici les configs IP:

$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.20/24 brd 192.168.0.255 scope global dynamic noprefixroute wlan0
       valid_lft 42005sec preferred_lft 42005sec
    inet6 2a01:XXX:XXX:XXX:XXX:1282:296a:d829/64 scope global temporary dynamic
       valid_lft 86168sec preferred_lft 71504sec
    inet6 2a01:XXX:XXX:XXX:XXX:XXX:XXX:XXX/64 scope global dynamic mngtmpaddr
       valid_lft 86168sec preferred_lft 86168sec
    inet6 fe80::XX:XX:XX:XX/64 scope link
       valid_lft forever preferred_lft forever
17: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.XX.XX.XX/24 scope global wg0
       valid_lft forever preferred_lft forever
    inet6 fdXX:XX:XX::XX/64 scope global
       valid_lft forever preferred_lft forever

J'ai également configuré un client sur Android, et le soucis est le même.

Toute aide serait la bienvenue :)
Merci par avance.
Flo

vivien

  • Administrateur
  • *
  • Messages: 47 228
    • Twitter LaFibre.info
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #1 le: 22 octobre 2019 à 17:15:37 »
Effectivement quand l'IPv6 est non natif alors que l'IPv6 est natif, les systèmes d’exploitations privilégie IPv4.

C'est par exemple le cas avec Windows et Teredo sous Windows qui permet d'avoir une IPv6 pour accéder a des sites web IPv6 only

=> Teredo : Tunneling IPv6 sur UDP activé par Windows 8.1

Dans ton cas l'IPv4 est natif et le VPN n'est utilisé que pour avoir une connectivité IPv6 ?

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #2 le: 22 octobre 2019 à 17:20:16 »
Comme tu peux le voir sur les commandes que j'ai noté, sur cette machine, j'ai IPv4+IPv6 natif (sur wlan0). Et j'utilise le tunnel pour acheminer mon trafic vers un serveur que je contrôle. Sur le tunnel, j'ai de l'adressage IPv4 "privé" et IPv6 ULA.
Le comportement est le même sur une machine ne disposant pas d'IPv6 native, avec le même tunnel.

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 288
  • Antibes (06) / Mercury (73)
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #3 le: 23 octobre 2019 à 06:24:11 »
Le problème ce sont les adresses ULA. Dans le tableau de précédence par defaut, les adresses IPv4 (même privées) ont toujours la préférence sur les adresses IPv6 ULA. Sous Linux il est possible de changer cette table grâce à un fichier dans /etc dont j’ai oublié le nom...

J’ai également un serveur WireGuard chez moi et j’ai abandonné l’idée de faire de l’ipv6 dedans à cause de ce problème,  parce que mon préfixe chez Orange peut changer et que WireGuard ne propose pas de solution pour attribuer des adresses dynamiquement : il faudrait que je change la conf sur tous les clients à chaque fois que le préfixe change...

A noter également un truc étrange : mes clients WireGuard se connectent en IPv4 au lieu d’IPv6 même quand le client est en IPv4+IPv6 (coté serveur je suis bien en dual stack et son FQDN a bien un enregistrement A et AAAA). Quand je supprime l’enregistrement A la connection se fait en IPv6. Donc WireGuard (en tout cas le client officiel iOS) semble privilégier systématiquement IPv4, même par rapport aux IPv6 « publiques ».

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #4 le: 23 octobre 2019 à 10:11:05 »
Je ne suis pas convaincu que le problème soit simplement les adresses ULA. Je viens de tout reconfigurer avec des adresses globales, et le problème reste le même.

Donc pour faire simple, il est impossible d'avoir une connectivité IPv6 vue "native" par le système lorsqu'on utilise un tunnel ? C'est étrange quand même...

20: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 state UNKNOWN qlen 1000
    inet6 2001:bc8:XXX:XXX:8000::3/65 scope global
       valid_lft forever preferred_lft forever

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 288
  • Antibes (06) / Mercury (73)
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #5 le: 23 octobre 2019 à 10:30:39 »
Dans mon cas, avec des adresses globales, ça passait bien en IPv6... Ce n'est juste pas gérable à cause du préfixe Orange non fixe...

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #6 le: 23 octobre 2019 à 10:49:30 »
"ça passait bien" ça veut dire quoi ? Mon IPv6 fonctionne très bien, en ULA ou en global. Le problème est qu'IPv4 reste privilégié dans les 2 cas par mon système...

J'ai trouvé quelques docs :

https://test-ipv6.com/faq_avoids_ipv6.html

Mais je ne comprend pas ce qu'il me faudrait changer. J'ai bien mon interface wg0 avec une IP dans 2001:bc8:47a0:XXX::/64, ce n'est pas assez global pour être privilégié ?

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #7 le: 23 octobre 2019 à 11:39:12 »
En fait je n'ai pas été assez patient ! Après quelques minutes, IPv6 est désormais considéré comme natif par mon système ! Je me connecte donc bien en IPv6 préférentiellement. Il faut donc bien des IPv6 globales, et non pas ULA comme lors de mes tests initiaux.
Merci :)

Edit: bon en fait c'est plutôt aléatoire, je suis de retour en IPv4 preferred sans avoir rien changé...

decalage

  • Abonné Orange adsl
  • *
  • Messages: 189
  • 92
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #8 le: 23 octobre 2019 à 12:15:20 »
Pour ce que ca vaut : j'ai eu un problème similaire sur Windows et le souci était le pilote de la carte réseau. Des problèmes avec NDP faisait que le système repassait en ipv4.

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #9 le: 23 octobre 2019 à 12:23:11 »
Alors je viens de tester sur un Windows, et aucun soucis, immédiatement après la configuration du tunnel (même configuration que mes Ubuntu), le dual stack est bien présent et IPv6 est privilégié...
Aucun problème sur Android non plus.
C'est juste Ubuntu qui me gère ça bizarrement...

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #10 le: 23 octobre 2019 à 16:43:49 »
Bon, pour Ubuntu, j'ai quelques pistes.

Lorsque la machine dispose d'IPv6 en natif sur son réseau, alors une fois le tunnel Wireguard lancé, IPv6 est utilisé préférentiellement.
Alors que si la machine ne dispose pas d'IPv6 en natif sur le réseau physique, alors l'IPv6 du tunnel n'est pas utilisé en priorité.

Savez-vous comment changer ce comportement ? Je précise bien que j'ai des adresses globales sur mon tunnel

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
Ubuntu ne veut pas utiliser ma connectivité IPv6
« Réponse #11 le: 23 octobre 2019 à 19:13:42 »
J'ai trouvé d'où venait le problème sur mes Ubuntu  ;D ;D

Le fautif était /etc/nsswitch.conf

Pour une raison dont je ne me rappelle pas, il contenait :

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd
group:          compat systemd
shadow:         compat

#hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
hosts: files resolve dns myhostname
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Je l'ai remplacé par le fichier par défaut et tout est rentré dans l'ordre (IPv6 est privilégié même si disponible uniquement dans le tunnel).

sudo cp /usr/share/libc-bin/nsswitch.conf /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files
group:          files
shadow:         files
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Je n'ai donc rien modifié dans /etc/gai.conf qui me semblait pourtant celui qui gouvernait mon problème.