Forum Linux.général Fonctionnalité tun/tap

Posté par  . Licence CC By‑SA.
Étiquettes :
1
13
avr.
2018

Bonjour,
Je suis actuellement en train de virtualiser une pile tcp/ip grâce à la fonctionnalité tap sur une machine virtuelle. Étant débutant avec cette fonctionnalité, j'aimerais savoir si il est possible de créer une seconde machine virtuelle et de faire communiquer le réseau virtualisé avec la seconde machine virtuelle grâce à un réseau privé?
Merci d'avance pour votre aide

  • # VPN interne

    Posté par  . Évalué à 5.

    C'est le principe même des tap : ce sont de vraies interfaces réseau, donc routables, etc.

    Vérifie d'abord que tu peux pinguer entre ton tap et l'hôte. Tant que ça ne fonctionne pas, tu as un soucis de configuration.

     

    Puis tu actives le routage sur la machine hôte :

    # temporaire
    sysctl  --write net.ipv4.ip_forward=1
    
    # permanent
    echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/ip_forward.conf
    sysctl --load /etc/sysctl.d/ip_forward.conf

    et là tes différents tap peuvent communiquer entre eux, avec l'hôte, et même avec l'extérieur si leur configuration ip est bonne.

    • [^] # Re: VPN interne

      Posté par  . Évalué à 1.

      Merci pour ta réponse,
      J'arrive bien a pinguer entre mon hôte et mon tap mais même en reprenant tes commandes je n'arrive pas à faire communiquer mon autre VM avec mon tap. Sachant que "je pense" que leur configuration ip est bonne. Vois tu une autre raison pour laquelle cela ne fonctionne pas ?

      • [^] # Re: VPN interne

        Posté par  . Évalué à 3.

        Chaque VM doit pouvoir pinguer l'hôte.
        Si chaque VM est sur le même plan d'adressage que l'hôte (c'est plus simple pour commencer), alors ça devrait fonctionner directement.

        exemple :
        hôte = 192.168.0.10/24
        VM1 = 192.168.0.100/24
        VM2 = 192.168.0.101/24
        Avec ça tes VM doivent même pouvoir pinguer ton routeur par défaut (par exemple 192.168.0.1). Tu peux alors leur assigner un DNS et un routeur par défaut (comme pour n'importe quel machine sur le réseau en fait) et ça roule, les VM auront alors accès à internet. Ou laisser DHCP faire le job, car TAP est comme un commutateur Ethernet (un switch).

        Tu as peut-être des règles de pare-feu qui gênent.

        • [^] # Re: VPN interne

          Posté par  . Évalué à 1.

          Je pense avoir une erreur sur la configuration réseau car mes VM sont bien sur le même plan d'adressage que l'hôte mais je n'arrive toujours pas à pinguer. Comment puis-je savoir si le problème vient ou pas de ma config ?

          • [^] # Re: VPN interne

            Posté par  . Évalué à 3.

            C'est de ma faute, j'ai oublié de préciser un point essentiel : il faut que tes TAP soient dans un même pont (bridge). Et ta carte réseau physique aussi si tu veux pouvoir communiquer avec l'extérieur.

            C'est le pont qui fait office de commutateur (switch).

            brctl  addbr  vmbr0                           # créer le pont
            ip  addr  add  192.168.x.y/24  dev  vmbr0     # lui attribuer une adresse IP
            ip  link  set  dev  vmbr0  up                 # activer le pont
            brctl  show

             

            Il faut ensuite ajouter les TAP :

            brctl addif br0 tap0
            brctl addif br0 tap1

            Si tu veux ajouter eth0 il est mieux de d'abord lui supprimer son adresse IP (ou alors celle du pont sera une adresse secondaire).

            • [^] # Re: VPN interne

              Posté par  . Évalué à 1. Dernière modification le 19 avril 2018 à 09:41.

              Merci encore pour ton aide.
              J'ai créé deux interfaces Tap sur une seule machine virtuelle pour tester ta solution dans le but de les faire communiquer à travers le bridge
              Si j'ai bien compris le bridge me donne un schéma comme cela:

              Bridge 192.168.0.1
              |
              |
              |---------------|---------------|
              | |
              | |
              Tap0 192.168.0.2 Tap1 192.168.0.3

              Quand je fais brctl show
              Je vois bien mes 2 interfaces connectées Cependant les pings
              ping 192.168.0.3 -I vmbr0
              ne passent toujours pas

              • [^] # Re: VPN interne

                Posté par  . Évalué à 3.

                ping 192.168.0.3 -I vmbr0

                ping 192.168.0.3 tout court devrait fonctionner aussi.

                Ça m'agace un truc aussi basique qui ne fonctionne pas :-)
                --> si tu as le temps ce soir, téléphone moi après 21h30 (au 0805 indiqué sur ma page perso). Sinon dimanche soir.

                • [^] # Re: VPN interne

                  Posté par  . Évalué à 1. Dernière modification le 21 avril 2018 à 18:28.

                  Merci
                  pour ta proposition avec plaisir pour demain si ça ne fonctionne toujours pas.
                  J'ai réussi a faire pinger les taps sur deux différentes VM en utilisant un segment LAN entre les deux VM (je bosse sur vmware).
                  les ifconfigs donnent des adresses comme:

                  VM n°_1
                  ens33 : inet addr: 192.168.57.130 Masque 255.255.255.0
                  tap0 : inet addr 192.168.57.133 Masque 255.255.255.0

                  VM n°_2
                  ens33 : inet addr: 192.168.57.130 Masque 255.255.255.0
                  tap0 : inet addr 192.168.57.132 Masque 255.255.255.0

                  l'application que je fais tourner derrière l'interface tap est une pile lwIP à qui j'adresse les adresses
                  VM n°_1
                  lwip: inet_addr: 192.168.57.140 Masque 255.255.255.0 gw: tap0 (VM n°_1)
                  VM n°_2
                  lwip: inet_addr: 192.168.57.141 Masque 255.255.255.0 gw: tap0 (VM n°_2)

                  mais cette application (lwip) qui se sert de l'interface tap est injoignable. Si je configure les tap0 sur un réseau différent des ens33 aucune communication n'est possible.
                  C'est peut être facile mais je dois bien admettre que j'ai vraiment l'impression d'être perdu la ahah.

                  • [^] # Re: VPN interne

                    Posté par  . Évalué à 2.

                    je bosse sur vmware

                    ?!!
                    Si tu utilises wmware, ça gère le réseau tout seul. Donc si tu bricoles de ton côté, forcément ça ne fonctionne pas.

                    • [^] # Re: VPN interne

                      Posté par  . Évalué à 1.

                      Donc j'ai bien réussi a réaliser le montage avec le bridge en travaillant sur des réseaux différents les interfaces tap arrivent correctement à communiquer entre elles.
                      "Ouf"

                      Cependant, je n'arrive plus maintenant à communiquer entre mes interfaces tap et leurs applications lwip.
                      Par exemple un ping de tap0 vers 172.16.0.2 va créer une suite de requête arp :
                      - ARP, Request who-has 172.16.0.2 tell 172.16.0.1
                      ARP, Reply 172.16.0.2 is-at da:7b:…..
                      et ces requêtes ne se terminent jamais.

                                                 Bridge 172.16.2.1
                                                        |
                                                        |
                                        |---------------|---------------|
                                        |                               |                    
                                        |                               |                    
                                 Tap0 172.16.0.1               Tap1 172.16.1.1           
                                        |                               |                    
                                        |                               |                    
                                 lwIP 172.16.0.2               lwIP 172.16.1.2
                      
                      • [^] # Re: VPN interne

                        Posté par  . Évalué à 3.

                        tu me semble faire des choses complexes pour rien

                        si c'est une pile IP elle doit pouvoir travailler sur la carte reseau,
                        si ce n'est pas le cas, tu travailles via le TAP, mais il te faut alors des IPs differentes sur tes TAPs et sur tes interfaces physiques,

                        sinon ton ping 172.16.x.y va sortir par defaut avec l'interface physique.

                        exemple: tes machines en enPS sur le reseau 172.16.0.x/24, les TAPs sur 172.16.1.x/24

                        tu ping alors 172.16.1.1 depuis la machine 172.16.1.2 et inversement.

  • # bridge vs tap/tun

    Posté par  . Évalué à 3.

    pour que cela fonctionne il te faut plusieurs choses

    • en bridge il faut que toutes les machines soient sur le meme reseau
      192.168.1.1 pour to "serveur"
      192.168.1.2 pour ta premiere VM
      192.168.1.3 pour ta 2e VM
      192.168.1.254 pour ta box

    • en TAP ou en reseau privé
      ton serveur doit avoir 2 IP, une sur ton LAN, une sur le TAP
      LAN 192.168.1.1, TAP 192.168.2.1
      tes VMs sur le TAP devront alors avoir 192.168.2.2 et 192.168.2.3, avec passerelle 192.168.2.1 (le serveur)
      il faut aussi que le serveur fasse le forward entre le LAN et le TAP (cf le post precedent)
      mais probablement aussi du SNAT/MASQUERADE pour cacher les machines du reseau 192.168.2.x/24 derriere son IP LAN
      sinon ta box ne pourra pas repondre à ces machines

    • [^] # Re: bridge vs tap/tun

      Posté par  . Évalué à 1.

      Bonjour merci pour ta réponse.
      Actuellement toutes mes machines sont bien sur le même réseau. La seule machine ne pouvant communiquer avec les autres est la machine faisant tourner lwIP grâce à la fonction TAP. le serveur fait bien le forward entre le LAN et le TAP :
      un
      cat /etc/sysctl.d/ip_forward.conf
      me rend bien
      net.ipv4.ip_forward=1

      Mais j'avoue que je débute dans l'administration réseau et que :
      "ton serveur doit avoir 2 IP, une sur ton LAN, une sur le TAP"
      et
      "probablement aussi du SNAT/MASQUERADE pour cacher les machines du reseau 192.168.2.x/24 derriere son IP LAN"
      Ca me parle pas vraiment
      Merci pour ton aide

      • [^] # Re: bridge vs tap/tun

        Posté par  . Évalué à 3.

        Mais j'avoue que je débute dans l'administration réseau

        bienvenu dans ce monde

        si toute tes machines se voient et communiquent en reseau et qu'une seule (celle de IwIP) ne fonctionne pas => c'est IwIP qui t'emmerde
        verifie que la machine ait une adresse IP,
        regarde si tu vois arriver les flux depuis/vers cette machine (l'outil tcpdump doit pouvoir t'aider)

        l'ip_forward n'est utile que dans le cas ou tes machines sont sur des reseaux "differents"

        si tu veux faire des reseaux séparés pour tes VMs,
        tu vas avoir un reseau qui ressemble à ca

        VM1
        |
        reseau10
        |
        PC Serveur <--> reseau1 box internet <--> internet
        |
        reseau20
        |
        VM2

        ton PC "serveur" doit donc avoir une IP dans chaque reseau pour pouvoir parler à chaque machine (VM1, VM2, box internet)
        il doit ensuite cacher les reseau10 et reseau20 quand les VM veulent aller sur internet, sinon ta Box internet ne saura pas repondre à VM1/VM2
        et enfin ton PC devra faire le forward pour que les paquets passent entre reseau1, reseau10 et reseau20

Suivre le flux des commentaires

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