Virt/KVM

De TartareFR
Version datée du 26 septembre 2013 à 09:30 par Didier (discussion | contributions) (Page créée avec « == Etat des lieux initial == On dispose d'une interface réseau réelle '''p128p1''' (Interface nVidia gigabit intégrée à la carte mère) Fichier <path>/etc/sysconfig... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Etat des lieux initial

On dispose d'une interface réseau réelle p128p1 (Interface nVidia gigabit intégrée à la carte mère)

Fichier <path>/etc/sysconfig/network-scripts/ifcfg-p128p1</path>

UUID="6f08e7f7-8bd9-423c-92a5-6dfa08c0986d"
NM_CONTROLLED="yes"
HWADDR="A4:BA:DB:FB:F0:78"
BOOTPROTO="dhcp"
DEVICE="p128p1"
ONBOOT="yes"

Connexion au réseau via un TAP

Mise en place du bridge

On commence par générer un uuid pour notre bridge

uuidgen 
a0744d19-f4a3-47a7-af7a-ab2db84b2d80

On configure notre bridge (br0) et on intègre notre interface réseau réelle dans ce bridge. Fichier <path>/etc/sysconfig/network-scripts/ifcfg-br0</path>

DEVICE=br0
NAME="bridge0"
TYPE=Bridge
STP=yes
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
UUID=a0744d19-f4a3-47a7-af7a-ab2db84b2d80
ONBOOT=yes
BRIDGING_OPTS=priority=128

Fichier <path>/etc/sysconfig/network-scripts/ifcfg-p128p1</path>

UUID="6f08e7f7-8bd9-423c-92a5-6dfa08c0986d"
#NM_CONTROLLED="yes"
HWADDR="A4:BA:DB:FB:F0:78"
#BOOTPROTO="dhcp"
DEVICE="p128p1"
ONBOOT="yes"
BRIDGE="a0744d19-f4a3-47a7-af7a-ab2db84b2d80"

On redémarre le réseau

systemctl restart NetworkManager

On peut vérifier le résultat avec la commande <app>ip addr</app>

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: p128p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP qlen 1000
    link/ether a4:ba:db:fb:f0:78 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a6ba:dbff:fefb:f078/64 scope link 
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether a4:ba:db:fb:f0:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.148/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::a6ba:dbff:fefb:f078/64 scope link 
       valid_lft forever preferred_lft forever

Ajout d'un TAP

L'ajout d'un TAP à notre bridge se passe en trois étapes

  • Création d'un TAP dont nous serons propriétaire avec notre login habituel ( user= didier )
    tunctl -u didier -t tap0
  • Ajout de notre TAP au brige
    brctl addif br0 tap0
  • Démarrage de notre TAP
    ifconfig tap0 up

Ce n'est pas vraiment compliqué, mais pour automatiserle processus, on va créer un fichier unit: <path>/usr/local/lib/systemd/system/tap@.service</path>

[Unit]
Description=Virtual Network Device
After=syslog.target network.target

[Service]
Type=oneshot
RemainAfterExit=yes
Environment=TAPUSER=didier
Environment=TAPGROUP=kvm
ExecStartPre=-/usr/sbin/tunctl -u $TAPUSER -g $TAPGROUP -t tap%i
ExecStartPre=-/usr/sbin/brctl addif br0 tap%i
ExecStart=-/usr/sbin/ifconfig tap%i up
ExecStop=-/usr/sbin/ifconfig tap%i down
ExecStop=-/usr/sbin/brctl delif br0 tap%i
ExecStop=-/usr/sbin/tunctl -d tap%i

[Install]
WantedBy=multi-user.target

Puis on va créer un lien symbolique pour que systemd gère notre fichier

ln -s /usr/local/lib/systemd/system/tap@.service tap@0.service

Pour créer un autre TAP, il suffira de créer un autre lien symbolique ( en incrémentant le numéro après l'arobase )

ln -s /usr/local/lib/systemd/system/tap@.service tap@1.service

On peut maintenant gérer nos TAP avec Systemd.