Forum Linux.debian/ubuntu Utilisation d'OVS et de quagga

Posté par . Licence CC by-sa.
0
20
fév.
2015

Hello,

Je suis en train d'apprendre à utiliser OpenVSwitch et Quagga pour faire un peu de routage.
Je cherche à faire le cas suivant sur ma machine :

Schéma du projet

Le but est que les machines qui seront sur OVS1 et OVS2 puissent joindre internet. Pour le routage sur Quagga j'utiliserai RIPv2.

Mon souci est : je crée un Br avec ovs-vsctl sur lequel je plug mon premier routeur (quagga_ext).
Mais après je ne vois pas comment je peux créer des OVS "dans le vide" que je relierai mes quagga.
Au début j'ai essayé de créer plusieurs Br en pensant que ça allait créer mes ovs sur lesquels je plug mes "VM" avec des TAP. Le souci c'est qu'une fois tout en place, le trafic remonte jusque quagga_ext pour ensuite repasser par les BR associés à chaque ovs pour sortir sur internet.
Dans mon cas je voudrais qu'absolument tout passe par quagga_ext. Je vérifie le chemin avec traceroute.
Tout est sous forme de snapshot de VM que je lance avec KVM.

Ma question finale est : Comment créer OVS1 et OVS2 ?

Je ne sais pas si j'ai été assez claire, sinon n'hésitez pas !
Merci d'avance pour votre aide

Likeaninja

  • # Architecture

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

    Aucune raison que cela passe par le routeur quagga puisque le réseau est joignable en interne.

    Si tu veux faire cela les réseaux doivent être séparés physiquement, et effectivement ils seront routés sur le routeur qui les fait communiquer.

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

    • [^] # Re: Architecture

      Posté par . Évalué à 1.

      Comment les séparer physiquement alors ? Quand tu virtualises sous kvm un VM je ne vois pas comment elle peut se plug sur ta carte réseau si tu ne lui dis pas.
      J'utilise en plus un adressage différent (pour les OVS) de ma carte réseau.

  • # Pas compris le problème :p

    Posté par . Évalué à 1. Dernière modification le 20/02/15 à 11:51.

    Ma question finale est : Comment créer OVS1 et OVS2 ?

    ovs-vsctl add-br ovs1
    ovs-vsctl add-br ovs2

    Tu peux plugger à chaud une VM sur un switch existant, ça lui rajoutera des ports virtuels à la volée. Libvirt est capable de le faire sans soucis. Tu dois créer un "réseau virtuel" par switch et attacher tes VM à ces réseaux (soit lors de l'installation, soit plus tard en éditant les paramètres de la machine)

    https://libvirt.org/formatnetwork.html

    Note que tu peux utiliser un seul switch virtuel et utiliser les VLAN pour créer ta topologie :)

    • [^] # Re: Pas compris le problème :p

      Posté par . Évalué à 1.

      Justement en utilisant ces commandes là, ça crée deux br… Mais le "souci" des br c'est qu'elles sont directement pluggées sur la carte réseau de la machine. Du coup les VM qui sont sur OVS1 ou OVS2 passent directement par la BR pour aller sur internet et non par le routage quagga…
      J'ai pourtant défini mes routes rip comme il le faut et vérifier les routes (route -n) des VMs pour vérifier que rien n'était en contradiction.

      • [^] # Re: Pas compris le problème :p

        Posté par . Évalué à 2.

        faire 3 machines ?

        1 machine routeur (R12), connectée à 3 cartes reseaux LAN, OVS1 et OVS2
        1 machine M1 branchée sur OVS1
        1 machine M2 branchée sur OVS2

        dire à M1 et M2 de passer par R12 pour sortir

      • [^] # Re: Pas compris le problème :p

        Posté par . Évalué à 1.

        Mais le "souci" des br c'est qu'elles sont directement pluggées sur la carte réseau de la machine

        Pas par défaut

        [root@arch2 ~]# ovs-vsctl add-br ovs1
        [root@arch2 ~]# ovs-vsctl add-br ovs2
        [root@arch2 ~]# ovs-vsctl list-ports ovs1
        [root@arch2 ~]#
        [root@arch2 ~]# ovs-vsctl list-ports ovs2
        [root@arch2 ~]#

        Il faut rajouter des interfaces manuellement

        [root@arch2 ~]# ip tuntap add mode tap dev tap2
        [root@arch2 ~]# ovs-vsctl add-port ovs1 tap2
        [root@arch2 ~]# ovs-vsctl list-ports ovs1
        tap2

        Tu as peut-être un reste de configuration dans lequel tu aurais ajouté ton interface physique par accident… En présumant que le nom de ton interface physique est eth0, essaye ceci :

        [root@arch2 ~]# ovs-vsctl del-port ovs1 eth0
        [root@arch2 ~]# ovs-vsctl del-port ovs2 eth0

        • [^] # Re: Pas compris le problème :p

          Posté par . Évalué à 1. Dernière modification le 22/02/15 à 13:00.

          En fait, je veux créer deux OVS indépendant séparé à chaque fois par des routeurs et si je plug une VM sur l'un ou sur l'autre que je puisse avoir accès au net.

          Ce que j'ai du mal à saisir, c'est que ma BR0 n'est pas plug à ma eth0 "ovs-vsctl add-port br0 eth0" puisque je ne fais pas cette commande mais j'arrive quand même à avoir internet…

          Pour créer mes interfaces tap j'utlise un script comme celui-ci (un br0, un br1) :

          #!/bin/sh
          switch='br0'
          /sbin/ifconfig $1 0.0.0.0 up
          ovs-vsctl add-port ${switch} $1
          #!/bin/sh
          switch='br0'
          /sbin/ifconfig $1 0.0.0.0 down
          ovs-vsctl del-port ${switch} $1

          Et après je lance mes VM avec cette commande (légèrement modifiée à chaque fois) :

          [root@toto~]#kvm -net nic,macaddr=XX:XX:XX:XX:XX:XX -net tap,script=/etc/openvswitch/ovs-ifup,downscript=/etc/openvswitch/ovs-ifdown /dev/master/vm10

          et mes VM qui seront routeurs :

          [root@toto~]#kvm -net nic,macaddr=00:11:22:33:44:AA -net nic,macaddr=00:11:22:33:44:BB -net tap,script=/etc/openvswitch/ovs-ifup,downscript=/etc/openvswitch/ovs-ifdown -hda /dev/master/quagga_ext

          Je m'arrange pour qu'elles aients une patte dans chaque OVS

          Du coup mes VMs sont censées se trouver sur chaque OVS. Mais après ça ne marche pas.

Suivre le flux des commentaires

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