4 votes

Comment créer un bridge / tun tap sous linux dans /etc/network/interfaces ?

J'ai besoin de créer un pont réseau pour mes machines virtuelles qemu sous linux.

J'ai beau lire les pages de manuel, les documentations officielles et les tutoriels, je n'arrive toujours pas à comprendre les étapes.

Par exemple ( de https://wiki.ubuntu.com/KvmWithBridge )

# The primary network interface
auto br0
iface br0 inet static
        address 192.168.0.101
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_stp off
        bridge_maxwait 5
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.0.4
        dns-search mydomain.net

Cela n'a aucun sens pour moi :

  • Pourquoi un pont a-t-il besoin d'une adresse IP ? Pourquoi puis-je travailler avec des ponts et des adresses IP, puisqu'il ne devrait s'agir que d'une liaison de données ?
  • pourquoi dois-je démonter eth0 ? un pont est une connexion entre 2 périphériques physiques, pourquoi est-il logique de démonter une carte ethernet pour créer une interconnexion avec cette carte ?
  • Qui ou quoi obtient l'IP ici ? 192.168.0.101 Qu'est-ce que c'est exactement ?

C'est un schéma qui se répète dans de nombreux tutoriels, guides et documentations qui mélangent des mots sans signification apparente (apparemment, un pont est censé s'occuper des adresses IP...).

Je me pose donc la question suivante : comment créer un pont pour que mon qemu peut se connecter par l'intermédiaire de mon eth0 via un pont ? Je voudrais utiliser iproute2 y /etc/network/interfaces et rien d'autre pour des raisons de simplicité .

4voto

Ashly Points 1

Je vais essayer de répondre à vos questions.

  1. Une interface de pont n'a pas besoin d'adresse IP pour commuter les trames entre les ports. Bien sûr, vous pouvez configurer une interface de pont sans adresse IP. Dans ce cas, votre hôte Linux fonctionnera comme un simple commutateur L2. Lorsque vous attribuez une adresse IP à une interface de pont, vous pouvez considérer votre hôte Linux comme un commutateur L3 avancé.

  2. Il n'est pas nécessaire de désactiver l'interface pour l'ajouter au pont.

  3. Après ifup br0 dans votre système linux, l'option br0 sera créée. Adresse 192.168.0.101 lui sera attribué.

  4. Après avoir lancé une VM qemu avec les options appropriées dans votre système, une interface supplémentaire devrait apparaître. Après cela, vous pouvez l'ajouter dans le fichier br0 manuellement avec la commande

ip link set dev <tap-iface> master br0

  1. Vous pouvez écrire un court script pour ajouter une nouvelle interface de prise dans le pont. Ce script peut être placé dans un répertoire spécial et sera exécuté après le démarrage du nouvel hôte qemu.

  2. Si vous préférez le iproute2 vous pouvez l'utiliser dans le fichier d'interfaces, en utilisant l'élément intérieur pre-up , up , post-up et d'autres déclarations.

  3. Si j'ai bien compris, vous pouvez ajouter quelque chose comme dans /etc/network/interfaces pour faire apparaître le fichier tap et l'ajouter au pont :

    iface tap10 inet manual pre-up /sbin/tunctl -t $IFACE -u root || true pre-up /sbin/ip link set dev $IFACE master br0 up /sbin/ip link set dev $IFACE up post-down /sbin/tunctl -d $IFACE || true

Les versions plus récentes d'iproute2 prennent en charge les interfaces tun/tap, de sorte que l'utilisation de l'option tunctl binaire n'est pas nécessaire.

iface tap10 inet manual
  pre-up /sbin/ip tuntap add mode tap user root name $IFACE || true
  pre-up /sbin/ip link set dev $IFACE master br0
  up /sbin/ip link set dev $IFACE up
  post-down /sbin/ip link del dev $IFACE || true

Dans la ligne de commande de démarrage de la VM qemu, vous devez utiliser quelque chose comme cela :

-netdev tap,id=mynet0,ifname=tap10,script=no,downscript=no

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X