Auteur Sujet: Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)  (Lu 4188 fois)

0 Membres et 1 Invité sur ce sujet

StardustOne

  • Abonné SFR fibre FttH
  • *
  • Messages: 62
Salut,

voici mon besoin fonctionnel:
     ____                    ____                     .-,(  ),-.   
    |    |                  |    |                .-(          )-.
    |____|---------------   |____|--------------->  internet V6   )
    /::::/ \                /::::/                '-(          ).-'
    desktop \            dedibox srv 1Gbps            '-.( ).-'   
400mbps symetrique
              \                     \
               \                     \
                \                     \
                 \                     \
                  v                     \
              .-,(  ),-.                 v ____         
           .-(          )-.               |    |       
          (  internet V4   )              |____|       
           '-(          ).-'              /::::/       
               '-.( ).-'             Hurricane Electric V6 tunnel
            SFR FTTH IPV4

Mon desktop Debian10 a une interface avec IPv4 native SFR (je souhaite garder l'IPv4 de SFR sans passer par un VPN dual-stack avec l'IP dedibox). Il n'a pas dIPv6 malgré ma tentative d'activation (status 'non connecté via la box NB6VAC-MAIN-R4.0.41).
Je voudrais ajouter une stack IPv6. Je pourrais créer un tunnel ou un VPN avec l'IPv6 dedibox, mais les IPv6 sont souvent blacklistées pour de la navigation desktop.
J'ai créé un tunnel Hurrican Electric (=~ 648mbps en DL) sur ma dedibox et viré mon interface SLAAC IPv6 dedibox.
Ce tunnel fonctionne bien (test OK avec 'traceroute -6 -i he-ipv6 lafibre.info').
Je ne peux pas utiliser le tunnel Hurrican Electric directement sur mon desktop, because le CPE SFR fait du caca avec le protocol 41, voir ce fil où on a investigué pour que j'en arrive à créer ce post de synthèse.
Ce que j'aimerais donc à présent faire, c'est de créer une interface virtuelle sur mon desktop, qui se servirait de ma dedibox comme relais pour accéder à l'IPv6 de Hurrican Electric.
J'aimerais utiliser un protocole qui fonctionne avec les CPE SFR et qui soit véloce en BP, j'ai une connexion 400mbps symétrique :
 - OpenVPN beaucoup trop lent (et ma dedibox n'est pas un foudre de guerre en ressources système, je suis à 100% sur 4 coeurs dans 'htop' avec OpenVPN)
 - ipsec: encore trop lent
 - 'protocol 41', merde chez moi (CPE SFR)
 - wireguard ?
 - autre ?

Quelles seraient vos recommandations SVP pour récupérer une interface virtuelle IPv6 sur mon desktop avec dedibox comme relais et Hurrican Electric comme source de connectivité IPV6 ? (pas de solution dual-stack, IPv6 only)

Je suis loin d'être un expert réseau, je suis sysadmin Linux.
« Modifié: 05 juin 2020 à 21:49:27 par StardustOne »

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #1 le: 06 juin 2020 à 01:41:22 »
wireguard cf l'autre post. il te suffit d'activer le /48 chez HE , il sera routé vers ton dédibox.

du coup dans le dedibox tu peux renvoyer le 1er /64 du /48 via wireguard ou carrement tout le /48 si tu veux faire plusieurs réseaux (ou du docker) dans ton debian desktop.



donc la partie peer coté dedibox t'as juste à mettre dans "AllowedIPs =" ce bloc /48 ou juste un /64 de ce bloc (ou un /60 , suivant tes besoins).

Tu peux aussi te contenter du "Routed /64" fournit par HE mais s"il n'est pas utilisé dans la dedibox.

StardustOne

  • Abonné SFR fibre FttH
  • *
  • Messages: 62
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #2 le: 06 juin 2020 à 02:26:34 »
OK, j'ai activé le /48 et j'ai mis à jour l'IPv6 de Hurrican Electric dans la conf wireguard.

Conf coté serveur dedibox :

[Interface]
Address = fe80::1/64
SaveConfig = true
ListenPort = 1094
PrivateKey = x

[Peer]
PublicKey = y
AllowedIPs = 2001:<CUT>::/48, fe80::/64
Endpoint = <IPv4 publique desktop>

Coté desktop:
[Interface]
Address = fe80::2/64
PrivateKey = a
PostUp = ip -6 route add fe80::1 dev wg0
PostDown = ip -6 route del fe80::1 dev wg0
DNS = 80.67.169.12
ListenPort = 1094

[Peer]
PublicKey = b
Endpoint = <IPv4 public dedibox>:1094
AllowedIPs = ::/0, fe80::/64
PersistentKeepalive = 25

Grace à la route que j'ai ajouté coté desktop, je peux ping sans préciser l'interface:

$ ping -c1 fe80::1
PING fe80::1(fe80::1) 56 data bytes
64 bytes from fe80::1%wg0: icmp_seq=1 ttl=64 time=3.76 ms

--- fe80::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.764/3.764/3.764/0.000 ms

Par contre, il me manque sûrement quelque chose, car je n'ai pas de connectivité IPv6 sur mon desktop vers l'internet mondial:

$ ping6 -c1 lafibre.info
PING lafibre.info(lafibre.info (2a01:6e00:10:410::2)) 56 data bytes
From fe80::1%wg0 (fe80::1%wg0): icmp_seq=1 Destination unreachable: Beyond scope of source address

--- lafibre.info ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

routes coté desktop (pas clair pour moi ce qui est pris par le VPN ou pas...)
$ ip -6 r
::1 dev lo proto kernel metric 256 pref medium
fe80::1 dev wg0 metric 1024 pref medium
fe80::/64 dev enp0s31f6 proto kernel metric 256 pref medium
fe80::/64 dev wg0 proto kernel metric 256 pref medium

PS: Ne pars pas du principe que je suis à l'aise en réseau, STP si tu peux me donner les commandes à taper. J'ai essayé plein de bidouilles, mais je galère ;)

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #3 le: 06 juin 2020 à 03:16:02 »
deja simplifions la conf:

pas besoin de mettre cela:
PostUp = ip -6 route add fe80::1 dev wg0
PostDown = ip -6 route del fe80::1 dev wg0

car ce n'est pas une bonne pratique.
les addresse fe80... sont particulieres en IPv6, elles ne sont pas forcement unique globalement mais toujours liés a une interface et uniques que sur le lien local a cette interface (on les appele link-local). il est donc plus que conseillé de ne pas faire cela.

pour le reste, voici quelques commandes pour debug:

il faudrait voir les routes  coté dedibox et coté desktop:
ip -6 route table all

on met "table all" car wg-quick utilise une table speciale pour la route par défaut quand on met ::/0 dans AllowedIPs

on peut aussi utiliser juste:
ip -6 route list table all default
[/tt]
'default' indique qu'on que voir la route par défaut.

coté desktop ca doit être "dev wg0" sinon c'est pas bon.
coté dedibox ca doit être le tunnel he
et coté dedibox il doit y avoir une route pour le /48 vers wg0

tu peux aussi utilise "ip route get ip_de_destination" pour voir la route utilisé pour joindre une ip particuliere:
lafibre.info = 2a01:6e00:10:410::2
ip route get 2a01:6e00:10:410::2


sur le desktop ca doit afficher un truc du genre:

2a01:6e00:10:410::2 from :: dev wg0 table ttttt src 2001:xxxxxxx metric 1024 pref medium

c'est pratique ca montre quelle ip source (src) ca utilise pour joindre cette destination.
fait la meme sur le dedibox pour voir.

pour voir les IPv6 des interfaces de facon résumé:
ip -br -6 a

avant de ping lafibre.info essai de ping l'ip du tunnel he coté dedibox par exemple ('Client IPv6 Address' dans la page HE).

StardustOne

  • Abonné SFR fibre FttH
  • *
  • Messages: 62
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #4 le: 06 juin 2020 à 03:55:58 »
OK pour mes routes de lien locaux, enlevés.

J'ai remis la conf en /64 partout.

Je ping mon IPv6 HE serveur et toutes adresses IPv6 depuis ma dedibox. Je ne ping pas l'IPv6 HE serveur depuis le desktop :

$ ping -c1 2001:<CUT>:38f::1
PING 2001:<CUT>:38f::1(2001:470:1f12:38f::1) 56 data bytes
From fe80::1%wg0: icmp_seq=1 Destination unreachable: Beyond scope of source address

--- 2001:<CUT>:38f::1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Pour rappel, je peux ping l'IP HE dedibox depuis mon desktop mais pas d'autres ipv6 autres que sur le serveur dedibox (fe80::1).

'ip -6 route table all' ne fonctionne pas, en revanche 'ip -6 route list table all default' si, donc:

Sur le desktop:
route par defaut (OK):
ip -6 route list table all default
default dev wg0 table 51820 metric 1024 pref medium

routes:
ip -6 r
::1 dev lo proto kernel metric 256 pref medium
fe80::/64 dev enp0s31f6 proto kernel metric 256 pref medium
fe80::/64 dev wg0 proto kernel metric 256 pref medium

route vers lafibre.info (OK):
ip route get 2a01:6e00:10:410::2
2a01:6e00:10:410::2 from :: dev wg0 table 51820 src fe80::2 metric 1024 pref medium

ip -br -6 a
lo               UNKNOWN        ::1/128
enp0s31f6        UP             fe80::3ad5:47ff:fe15:d0f3/64
wg0              UNKNOWN        fe80::2/64

Sur dedibox:

route par defaut  (OK):
default via 2001:<CUT>:38f::1 dev he-ipv6 metric 1024 onlink pref medium
routes:
ip -6 route·
::1 dev lo proto kernel metric 256 pref medium
2001:<CUT>::/64 dev wg0 metric 1024 pref medium
2001:<CUT>:38f::1 dev he-ipv6 metric 1024 pref medium
2001:<CUT>:38f::/64 dev he-ipv6 proto kernel metric 256 pref medium
fe80::/64 dev enp1s0 proto kernel metric 256 pref medium
fe80::/64 dev he-ipv6 proto kernel metric 256 pref medium
fe80::/64 dev wg0 proto kernel metric 256 pref medium
default via 2001:<CUT>:38f::1 dev he-ipv6 metric 1024 onlink pref medium

route vers lafibre.info (OK):
ip route get 2a01:6e00:10:410::2
2a01:6e00:10:410::2 from :: via 2001:<CUT>:38f::1 dev he-ipv6 src 2001:<CUT>:38f::2 metric 1024 pref medium

ip -br -6 a
lo               UNKNOWN        ::1/128
enp1s0           UP             fe80::208:a2ff:fe0c:631a/64
he-ipv6@NONE     UNKNOWN        2001:<CUT>::2/64 fe80::339f:3773/64
wg0              UNKNOWN        fe80::1/64

Je vois que ça avance, mais il reste une conf quelque part pour laisser opérer la 'magie' :)
« Modifié: 06 juin 2020 à 16:37:15 par StardustOne »

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #5 le: 06 juin 2020 à 06:58:27 »
c'est normal tu n'a pas d'IPv6 public sur ton desktop du coup il ne peut aller au dela du tunnel...


route vers lafibre.info (OK):
ip route get 2a01:6e00:10:410::2
2a01:6e00:10:410::2 from :: dev wg0 table 51820 src fe80::2 metric 1024 pref medium


c'est tres visible la: pour joindre lafibre.info ta source est une ip link-local (src fe80::2) ce qui n'est pas bon: tes paquets de retour n'arrivent jamais car ton desktop n'a pas d'adresse public.

Les pings vers dedibox marchent parce que la dedibox sait joindre fe80::2%wg0.

ip -br -6 a
lo               UNKNOWN        ::1/128
enp0s31f6        UP             fe80::3ad5:47ff:fe15:d0f3/64
wg0              UNKNOWN        fe80::2/64
on voit qu'il te manque cette IPv6 public (on dit GUA = global unicast address) , aucune interface n'en a.

tu peux la mettre sur enp0s31f6 (lan?)  par exemple ou sur une interface virtuelle (on peut aussi la mettre sur wg0 mais ce n'est pas propre...) ou sur le looback (lo) (idéalement sur une interface physique pour avoir les accélérations matérielles du driver).

une bonne pratique est toujours de faire un dessin avec le plan d'adressage pour voir ou son les réseaux (/64 ou plus) et si on en a pas oublié.

StardustOne

  • Abonné SFR fibre FttH
  • *
  • Messages: 62
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #6 le: 06 juin 2020 à 15:10:41 »
OK, j'ai donc ajouté une nouvelle IPv6 publique à mon interface physique sur mon desktop:
ip addr add 2001:<CUT>::3/64 dev enp0s31f6IPs HE:
la *:1 est le serveur HE
la *:2 dedibox
et la *:3 le desktop

route vers lafibre.info (passe par ma nouvelle ip publique et via l'interface wireguard):
ip route get 2a01:6e00:10:410::2
2a01:6e00:10:410::2 from :: dev wg0 table 51820 src 2001:<CUT>:38f::3 metric 1024 pref medium

Je ne peut pas ping ma nouvelle ip publique desktop depuis la dedibox ni ping l'ip HE de la dedibox depuis mon desktop.

Évidement pas ping une IPv6 du net publique.

Il doit manquer une ou des routes, mais je sèche malgré pas mal d'essais infructueux.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #7 le: 06 juin 2020 à 15:38:48 »

la *:1 est le serveur HE
la *:2 dedibox
et la *:3 le desktop


deja ca ce n'est pas bon.

Un meme prefix /64 ne peut etre sur plusieurs liens.

un lien =
- un réseau local (ethernet+wifi par exemple)
- un tunnel wg
- un tunnel he

Les machines qui tu cites ne peuvent avoir des IPv6 sur le meme /64 car elle ne partagent pas le meme lien.

- le serveur HE et le dedibox partagent un lien, le tunnel HE, ils ont chacun une IPv6 d'un meme /64 a chaque bout de ce lien ("Server IPv6 Address" et "Client IPv6 Address" dans la page de config d'HE). Ce /64 n'est pas utilisable ailleurs.

- le dedibox et le desktop partagent un lien,le tunnel wireguard, on n'a pas besoin d'IP (v4 ou v6) la dessus, on a mis des IPv6 de type "link-local" (fe80...) uniquement pour faire des tests locaux de ping.

HE fournit  2 /64 de base plus un /48 optionnel.
- le /64 pour le tunnel : il n'a que 2 IPv6 utilisables: Server IPv6 Address et Client IPv6 Address
- le /64 routé: le 'Routed /64' que tu peux utiliser soit dans le dedibox soit dans le desktop mais pas les 2. Si tu l'utilise dans le dedibox dans ce cas il te faut utilise le /48 pour le desktop (ou au moins un /64 du /48). Si tu n'utilise pas le /64 dans le dedibox dans ce cas tu peux l'utiliser dans le desktop, du coup tu n'a pas besoin du /48.

cas 1: pas besoin du /48

- tu mets le "Routed /64" dans la config wg du dedibox dans la partie "AllowedIPs" du peer desktop
- tu prend une adresse quelconque du "Routed /64" (..::1 par exemple) et tu la met sur l'interface enp0s31f6 du desktop

(chez HE le /64 pour le tunnel et le Routed /64 sont tres proches, ils différent de 1 dans la 3eme partie des l'adresse- attention donc a pas les confondre)

cas 2: utilisation du /48

- tu mets le "Routed /48" (ou une sous partie) dans la config wg du dedibox dans la partie "AllowedIPs" du peer desktop
- tu prend une addesse quelconque du "Routed /48" (..::1 par exemple) et tu la met sur l'interface enp0s31f6 du desktop
- tu peux utiliser le "Routed /64" sur la dedibox (vm, docker, etc ou pour un autre tunnel wg).

StardustOne

  • Abonné SFR fibre FttH
  • *
  • Messages: 62
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #8 le: 06 juin 2020 à 16:12:11 »
OK, cas N°1.

Donc j'ai mon tunnel HE sur dedibox avec 'Client IPv6 Address' de set, qui fonctionne parfaitement.

J'ai viré mon ip du même /64 que le tunnel de la dedibox sur mon desktop et créé une nouvelle IPv6 HE: ip 'Routed /64' (*::1).

Par contre il doit rester encore au moins une étape :)


« Modifié: 06 juin 2020 à 17:00:48 par StardustOne »

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #9 le: 06 juin 2020 à 16:42:17 »


ajuster la config wireguard (allowedips dans la partie peer) dans le dedibox et rafraichir le tunnel.

"ip -6 route" coté dedibox ca donne quoi ?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #10 le: 06 juin 2020 à 16:45:14 »
j'ai repris un schéma et adapté a ton cas:



En réseau; toujours faire un schéma meme a la main avec les prefix réseaux bien indiqués et toujours penser aux flux dans les 2 sens (un ping est un aller et retour).

source du schéma : https://app.diagrams.net/?title=tunnel%20he%20and%20wg.html#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D0B5ma-el6j-bDU1Zwd2haMXRULXc%26export%3Ddownload

StardustOne

  • Abonné SFR fibre FttH
  • *
  • Messages: 62
Desktop Debian10, comment créer une stack IPv6 virtuelle (SFR FTTH)
« Réponse #11 le: 06 juin 2020 à 16:52:13 »
routes coté dedibox:
::1 dev lo proto kernel metric 256 pref medium
2001:<CUT>:38f::1 dev he-ipv6 metric 1024 pref medium
2001:<CUT>:38f::/64 dev he-ipv6 proto kernel metric 256 pref medium
fe80::/64 dev enp1s0 proto kernel metric 256 pref medium
fe80::/64 dev he-ipv6 proto kernel metric 256 pref medium
default via 2001:<CUT>:38f::1 dev he-ipv6 metric 1024 onlink pref medium

Dans wireguard:
AllowedIPs = 2001:<CUT>::/64, fe80::/64 # correspond à 'routed /64' sur HE