Forum Linux.debian/ubuntu Router double-WAN sous Debian Wheezy et ipv6

Posté par (page perso) . Licence CC by-sa
2
4
déc.
2014

Bonjour à tous.

J'ai deux freebox, ipv6 activé sur les deux. J'ai un routeur sous Debian 7 stable, qui gère trois réseaux locaux (LAN, sans-fil et DMZ).

J'essaye de suivre les indications présentes sur cette page pour mettre en place l'ipv6 sur ce routeur: http://madduck.net/docs/ipv6/.

Après l'installation de radvd, les clients reçoivent bien une ipv6 dans le préfixe fourni par l'une des box. Puisque bind est installé sur le routeur, ils sont aussi capables de résoudre des noms de domaine. Par contre, pas moyen d'accéder à Internet depuis les postes clients.

Le routeur peut faire des ping6, les clients peuvent pinguer l'ipv6 du routeur, mais ne peuvent pas pinguer des hôtes externes.

Dans /var/log/kern.log, j'ai toute une série de messages de ce type, cerbere étant le routeur:

Dec  4 02:31:49 cerbere kernel: [158625.903240] icmp6_send: no reply to icmp error

Mon premier objectif est de corriger ce problème et de permettre aux clients d'accéder à internet.

Dans un second temps, j'aimerais savoir comment je dois faire (si c'est possible) pour bénéficier du même "pseudo-load-balancing" que j'ai actuellement en ipv4 (via des nexthop), parce qu'à priori, cela impliquerait que j'installe un serveur DHCPv6 sur le routeur pour distribuer des adresses "locales" ou en tout cas pas sur le même préfixes que les box.

Merci d'avance pour vos réponses. Si vous avez besoin de plus de détails, je vous répondrai avec plaisir :)

Edit

Les lignes d'erreur sont causées par radvd.

Ma conf de radvd est la même que sur le site pré-cité, à part bien sûr que j'ai changé le préfixe.

  • # Enabling forwarding

    Posté par . Évalué à 2.

    Tu n'aurais pas oublier d'activer le forwarding dans sysctl ?

    Voir le paragraphe "Enabling forwarding".

  • # Forwarding enabled

    Posté par (page perso) . Évalué à 1.

    Non, j'ai bien suivi cette partie aussi. Et pour être certain que ce n'est pas une histoire de firewall, j'ai tout laissé en open.

  • # Plus d'ip...

    Posté par (page perso) . Évalué à 1.

    Je viens de remarquer un autre problème: quand j'active les options suivantes dans /etc/sysctl.conf, le routeur ne parvient plus à obtenir d'adresse IPv6:

    net.ipv6.conf.all.forwarding = 1
    net.ipv6.conf.all.accept_source_route = 1

    Du coup, les clients ne peuvent pas se connecter en ipv6, logique. Mais d'après ce que j'ai compris (y compris dans la doc du fichier sysctl.conf), j'ai besoin de ces deux options sur un routeur.

  • # Une histoire de routes

    Posté par (page perso) . Évalué à 1.

    A priori, quand je fais

    sysctl -w net.ipv6.conf.all.forwarding=1

    Je pers mes routes par défaut, ce qui explique la perte de connectivité. Qu'à cela ne tienne, je recréé les routes par défaut, et j'ai de nouveau une connectivité ipv6 sur le routeur.

    Par contre, je ne maitrise déjà pas bien le routage en ipv4 alors en ipv6…

    • [^] # Re: Une histoire de routes

      Posté par . Évalué à 1. Dernière modification le 04/12/14 à 12:33.

      As-tu une section route 2001:xxxx:xxx:xxx::/64 dans ta conf de radvd?

      Parce que la partie sur la configuration de radvd dans le tuto est assez légère.

      • [^] # Re: Une histoire de routes

        Posté par (page perso) . Évalué à 1.

        Ah non, pas du tout…

        • [^] # Re: Une histoire de routes

          Posté par . Évalué à 1. Dernière modification le 04/12/14 à 20:45.

          Voici la config de radvd sur mon routeur, peut-être que tu pourrais t'en inspirer.

          interface br-lan
          {
              AdvLinkMTU 1480;
              AdvDefaultPreference medium;
              IgnoreIfMissing on;
              AdvSendAdvert on;
              AdvManagedFlag off;
              AdvOtherConfigFlag off;
              AdvSourceLLAddress on;
          
              prefix xxxx:xxxx:xxxx::/64
              {
                  AdvOnLink on;
                  AdvAutonomous on;
                  AdvRouterAddr off;
              };
          
              prefix 2001:xxxx:xxxx:xx::/64
              {
                  AdvOnLink on;
                  AdvAutonomous on;
                  AdvRouterAddr off;
              };
          
              route 2001:xxxx:xxxx:xx::/64
              {
                  AdvRoutePreference medium;
              };
          
              RDNSS xxxx:xxxx:xxxx::1
              {
              };
          
              DNSSL zaun.lan
              {
              };
          };
          
    • [^] # Re: Une histoire de routes

      Posté par (page perso) . Évalué à 1.

      Au passage je remarque que l'un de mes clients (sous Windows 8.1) n'a ni passerelle par défaut ni serveur DNS en ipv6.

    • [^] # Re: Une histoire de routes

      Posté par (page perso) . Évalué à 1.

      Pour info, voilà ma table de routage, telle que construite automatiquement par le système:

      > ip -6 route
      2a01:e35:2e74:xxxx::/64 dev eth2  proto kernel  metric 256  expires 84498sec
      2a01:e35:8a84:xxxx::/64 dev eth4  proto kernel  metric 256
      2a01:e35:8a84:xxxx::/64 dev eth1  proto kernel  metric 256  expires 84490sec
      fe80::/64 dev eth0  proto kernel  metric 256
      fe80::/64 dev eth3  proto kernel  metric 256
      fe80::/64 dev eth1  proto kernel  metric 256
      fe80::/64 dev eth4  proto kernel  metric 256
      fe80::/64 dev eth2  proto kernel  metric 256
      default via fe80::224:xxxx:xxxx:xxxx dev eth1  proto ra  metric 1024
      

      J'ignore totalement à quoi correspond la route par défaut (je suppose, à la passerelle de free).

      La table est à comparer avec le schéma du réseau que j'ai fais plus bas.

  • # architecture

    Posté par (page perso) . Évalué à 2.

    Tout est dans le même lan ou pas ? ( les 2 box , le routeur, les clients ,… )

    Système - Réseau - Sécurité Open Source

    • [^] # Re: architecture

      Posté par (page perso) . Évalué à 1.

      Non tout est bien séparé, chaque réseau sur sa propre interface physique.

      • [^] # Re: architecture

        Posté par (page perso) . Évalué à 2. Dernière modification le 04/12/14 à 13:16.

        Comment as-tu attribué les plages d'adresses ipv6 coté clients ( et ipv6 du routeur / 3 interfaces 3 adresses v6 ).

        Un schéma serait bienvenu.

        Système - Réseau - Sécurité Open Source

        • [^] # Re: architecture

          Posté par (page perso) . Évalué à 1.

          Freebox 1 ---- eth1 [WAN] 2a01:e35:8a84:xxxx:xxxx:xxxx:xxxx:7f8c/64 (dhcp)
                            |
                            |
                       +-----------+
                       |           |---- eth4 [LAN] 2a01:e35:8a84:xxxx:1::1/64
                       |           |
                       |  Routeur  |---- eth3 [DMZ] Pas d'ipv6 pour le moment
                       |           |
                       |           |---- eth0 [WLAN] Pas d'ipv6 pour le moment
                       +-----------+
                            |
                            |               
          Freebox 2 ---- eth2 [WAN2] 2a01:e35:2e74:xxxx:xxxx:xxxx:xxxx:99c0/64 (dhcp)
          
          • [^] # Re: architecture

            Posté par (page perso) . Évalué à 2.

            Assure toi d'avoir des réseaux ip distincts pour chaque patte, sinon cela ne peut fonctionner.

            Système - Réseau - Sécurité Open Source

            • [^] # Re: architecture

              Posté par (page perso) . Évalué à 1.

              C'est prévu, mais avant je voudrais au moins que les machines du LAN puissent accéder à Internet en ipv6, si possible avec load-balancing (à voir comment ça sera réalisé, chaque chose en son temps)

              • [^] # Re: architecture

                Posté par (page perso) . Évalué à 2.

                Justement, si tout est bien défini comme je l'ai dit ça fonctionne tout seul.

                En revanche, s'il y a un clash d'adresse ça passe pas du tout.

                Système - Réseau - Sécurité Open Source

                • [^] # Re: architecture

                  Posté par (page perso) . Évalué à 1.

                  Ok, dans ce cas j'ai attribué les adresses suivantes:

                  2a01:e35:8a84:xxxx:0::1/64 à eth3 (DMZ)
                  2a01:e35:8a84:xxxx:2::1/64 à eth0 (WLAN)

                  Ça te paraît correct ?

                  • [^] # Re: architecture

                    Posté par (page perso) . Évalué à 2.

                    Tout dépend de ce qui se cache derrière les "x"…

                    Système - Réseau - Sécurité Open Source

                    • [^] # Re: architecture

                      Posté par (page perso) . Évalué à 1.

                      Ben ce sont des adresses qui correspondent au préfixe attribué à eth1 en l'occurrence.

                      • [^] # Re: architecture

                        Posté par (page perso) . Évalué à 2. Dernière modification le 04/12/14 à 21:53.

                        ça peut pas fonctionner, un routeur connecte des réseaux différents !

                        2101:660:7000:ABCD/64 et 2101:660:7000:ABDE/64 par exemple

                        Si tu as le même réseau sur 2 pattes, les machines ne peuvent communiquer puisqu'elles croient être accessible directement ( les autres étant masquées ).

                        Système - Réseau - Sécurité Open Source

                        • [^] # Re: architecture

                          Posté par (page perso) . Évalué à 1.

                          Ok, alors mettons que j'ai comme préfixe 2a01:e35:8a84:ABCD::/64, je devrais donc attribuer les adresses suivantes (par exemple) à LAN, WLAN et DMZ:

                          2a01:e35:8a84:ABCD:0::1/64
                          2a01:e35:8a84:ABCD:1::1/64
                          2a01:e35:8a84:ABCD:2::1/64

                          Non ?

                          • [^] # Re: architecture

                            Posté par (page perso) . Évalué à 2.

                            Ce sont les mêmes réseaux ! ( masque 64 bits = 16*4 cqfd)

                            Système - Réseau - Sécurité Open Source

                            • [^] # Re: architecture

                              Posté par (page perso) . Évalué à 1.

                              Désolé, je rame…

                              Donc je dois bien spécifier des adresses comprises dans le préfixe fourni par free, mais sur des sous-réseaux distincts (ce qui semble logique, mais ipv6 me fait peur et donc me faire faire des conneries…)

                              Autrement dit (par exemple):

                              2a01:e35:8a84:ABCD:0::1/80
                              2a01:e35:8a84:ABCD:1::1/80
                              2a01:e35:8a84:ABCD:2::1/80

                              De quoi adresser 2a01:e35:8a84:ABCD:0::2 jusqu'à 2a01:e35:8a84:ABCD:0:ffff:ffff:ffff sur le premier réseau, si je ne me trompe pas.

                              C'est mieux ?

                              • [^] # Re: architecture

                                Posté par (page perso) . Évalué à 2.

                                ça va mieux fonctionner

                                A noter tu peux utiliser depuis "0", c-a-d : 2a01:e35:8a84:ABCD:0::0 jusqu'à 2a01:e35:8a84:ABCD:0:FFFF:FFFF:FFFF extrémités incluses.

                                Système - Réseau - Sécurité Open Source

  • # Délégation de préfixe

    Posté par (page perso) . Évalué à 1.

    Après m'être plus amplement renseigné sur la question, je me suis dis que puisque la freebox permet la délégation de (plusieurs) préfixe, autant m'en servir puisque c'est fait pour les routeurs.

    Dans l'interface d'administration de la freebox, j'ai donc activé la délégation pour le deuxième préfixe (si je l'active pour le premier, je n'obtiens plus d'ipv6 sur WAN). J'ai ensuite installé wide-dhcp-client, avec la configuration suivante:

    interface eth1 {
        send ia-pd 0;
    };
    
    id-assoc pd {
        prefix-interface eth4 {
            sla-id 1;
        };
    };
    

    eth1 étant l'interface WAN1 et eth4 l'interface LAN.

    J'ai configuré radvd de la manière suivante:

    interface eth4
    {
        AdvManagedFlag off;
        AdvOtherConfigFlag off;
        AdvSendAdvert on;
        AdvDefaultPreference high;
        AdvLinkMTU 1280;
    
        prefix 2a01:e35:8a84:ABCD::/64
        {
            AdvOnLink on;
            AdvAutonomous on;
        };
    };
    

    Et pour finir, j'ai ajouté la route suivante:

    ip -6 route add 2a01:e35:8a84:ABCD::/64 dev eth4
    

    Et du coup, cette fois, les machines clients sur ce réseau parviennent à contacter l'extérieur en ipv6. Content, ça marche.

    Mais.

    1. Est-ce bien propre de faire les choses ainsi ?
    2. Puis-je reprendre le même principe pour les deux autres réseaux que sont WLAN et DMZ ?
    3. Puis-je reprendre le même principe pour la deuxième connexion WAN ?
    4. En ipv4, mon DNS pointe sur les ip publiques de mes box (qui sont aussi du coup les ip des interfaces WAN puisque je suis en mode bridge). C'est pareil en ipv6 ou je suis obligé de mettre les ipv6 assignées à chaque serveur de la DMZ ?
    5. Comment sécuriser tout ça ? comme en ipv4 ? Je décide ce qui rentre et sort en fonction de l'interface ?
    • [^] # Re: Délégation de préfixe

      Posté par (page perso) . Évalué à 1.

      Bon ben en fait, je me réponds tout seul aux questions 2 et 3: oui, et c'est super facile en fait.

      Il me reste à savoir comment sécuriser le bouzin, et quelles ips renseigner dans mes DNS :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.