Table des matières

Intitulé du projet / étude

Contact

Présentation

Exemple de création d'un environnent de test réseau, à l'aide de VMs KVM, composé d'un serveur LAC pppoe (ou autre support ppp), d'un serveur LNS et d'un serveur Freeradius.

Avancement

Cette environnement a été testé sur un OS hôte Debain 6.0.4-amd64 installé sur un Dell R415 avec comme système de fichier LVM.

Etape 1 - Machine Hôte

Configuration minimum de la machine :

Installation des packages:

apt-get install bridge-utils
apt-get install qemu-kvm libvirt-bin
apt-get install kpartx

Activer IP forward dans /etc/sysctl.conf:

 "net.ipv4.ip_forward=1" 

Bridger l'interface eth0 (pour que les VM soit accessible de l'extérieur), configuration dans le fichier “/etc/network/interface”:

auto br0 
iface br0 inet manual
# utiliser static si affectation d'une IP a l'interface bridge
#iface br0 inet static
#        address 192.168.0.254
#        netmask 255.255.255.0
#        broadcast 192.168.0.255
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
Création d'une VM Modèle Debian Linux

Créer une VM Linux Debian modèle de 10G avec VMM (Virtual Machine Manager, en remote depuis pc client), choisir image type raw. (Exemple : /var/lib/libvirt/images/vm_modele.img).Choisir “Interface réseau virtuelle/Spécifiez le nom du périphérique partagé/Nom du pont = br0”. Lors de l'installation activer OpenSSH et configurer l’environnement selon ses préférences.

installer le package VLAN:

vmmodele:~# apt-get install vlan 

La VM peut ensuite être supprimé mais il faut conserver une copie de l'image (vm_modele.img) et du fichier xml (/etc/libvirt/qemu/vmmodele.xml) qui nous servira a créer les VM suivantes a base de Linux Debian.

Etape 2 - VM FreeBSD MPD5

Création d'un LV pour la VM FreeBSD

:~# lvcreate -n lvfrbsd -L 10g h415

Télécharger la dernière version iso de FreeBSD (ex: FreeBSD-9.0-RELEASE-amd64-….iso). Utiliser virsh ou VMM pour créer la VM en utilisant le LV “/dev/h415/lvfrbsd”. Ne pas utiliser les drivers Virtio lors de l'installation car il ne sont pas disponibles par défaut dans FreeBSD.
Lors de l'installation activer OpenSSH et configurer l’environnement selon ses préférences.

Installer les applications:

[root@freebsblac /root]# pkg_add -r wget
[root@freebsblac /root]# pkg_add -r mpd5
[root@freebsblac /root]# wget http://people.freebsd.org/~kuriyama/virtio/9.0/virtio-kmod-0.228301.tbz
[root@freebsblac /root]# pkg_add  virtio-kmod-0.228301.tbz

Editer/Crèer le fichier “/boot/loader.conf” et ajouter ces lignes:

virtio_load="YES"
virtio_pci_load="YES"
virtio_blk_load="YES"
if_vtnet_load="YES"
virtio_balloon_load="YES"

Modifier “fstab” et “rc.conf” pout utilisation de virtio:

[root@freebsblac /etc]# sed -i.bak -Ee 's|/dev/ada?|/dev/vtbd|' /etc/fstab
[root@freebsblac /etc]# sed -i.bak -e 's|em0|vtnet0|' /etc/rc.conf

configuration réseau et MPD dans fichier “/etc/rc.conf”

hostname="freebsblac"
keymap="fr.iso.acc.kbd"

# LAN Interface get ip by DHCP
ifconfig_vtnet0="DHCP promisc"

# VLAN11 LAC <--> LNS 
cloned_interfaces="vlan11"
ifconfig_vlan11="inet 10.0.11.253 netmask 255.255.255.0 vlan 11 vlandev vtnet0"
ifconfig_vlan11_alias0="ether 52:54:00:79:11:27"

# Static route to the tun l2tpns
static_routes="l2tpns"
route_l2tpns="-net 62.5.16.41/32 10.0.11.252"

sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

# Set MPD
mpd_enable="YES"
mpd_flags="-b -s ppp"

Configuration de MPD5 en LAC pppoe:

[root@freebsblac /root]# cat /usr/local/etc/mpd5/mpd.conf

default:
        create link template PPPX pppoe
        set pppoe iface vtnet0
        set link action forward L2TPNS
        set link enable incoming

        create link template L2TPNS l2tp
        set l2tp peer 62.5.16.41
        set l2tp secret totolns

Arrêter la VM et modifier la configuration (à l'aide de VMM ou manuellement dans fichier xml) pour utiliser les drivers virtio (disque et réseau).

root@hote:/etc/libvirt/qemu# cat vmfrbsd.xml 
<domain type='kvm'>
  <name>vmfrbsd</name>
  <uuid>ffa8bf7b-e39f-4988-9783-2eb95de017ca</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.12'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/h415/lvfrbsd'/>
      <target dev='hda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:79:11:26'/>
      <source bridge='br1'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Etape 3 - VM LNS (L2TPNS)

Création de la VM LNS à partir de vmmodele.img: <code> root@hote:~# lvcreate -n lvlns -L 10g h415 root@hote:~# dd if=/var/lib/libvirt/images/vmmodele.img of=/dev/h415/lvlns </code> Monter la partition root de la VM LNS <code> root@hote:~# kpartx -av /dev/hote/lvlns root@hote:~# mount /dev/mapper/hote-lvlns1 /mnt/vm </code> Modifier le fichier “/home/mnt/etc/hosts” et “/home/mnt/etc/hostname” pour qu'ils reflétent le nom de la nouvelle VM.
Editer le fichier “/home/mnt/etc/network/interfaces”: <code> # The loopback network interface auto lo iface lo inet loopback # LNS ←–> INTERNET auto eth0 iface eth0 inet dhcp # VLAN LNS ←–> RADIUS auto eth0.10 iface eth0.10 inet static address 10.0.10.252 netmask 255.255.255.0 broadcast 10.0.10.255 network 10.0.10.0 hwaddress ether 52:54:00:91:0e:0f # VLAN LNS ←–> LAC auto eth0.11 iface eth0.11 inet static address 10.0.11.252 netmask 255.255.255.0 broadcast 10.0.11.255 network 10.0.11.0 hwaddress ether 52:54:00:91:0e:10 </code>
Démonter la partition root de la VM LNS <code> root@hote:~# umount /mnt/vm root@hote:~# kpartx -dv /dev/hote/lvlns </code> Copier vmmodele.xml <code> root@hote:~# cp /etc/libvirt/qemu/vmmodele.xml /etc/libvirt/qemu/vmlns.xml </code> Générer un UUID,Editer et modifier le fichier vmlns.xml_ <code> root@hote:~# uuidgen 342b0a43-c872-4fc6-aadb-222d654e411d </code> Modifier name, uuid, disk (device, source..) et interface (type, mac address, source bridge) <code> <domain type='kvm'> <name>vmlns</name> <uuid>342b0a43-c872-4fc6-aadb-222d654e411d</uuid> <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>2</vcpu> <os> <type arch='x8664' machine='pc-0.12'>hvm</type>

  <boot dev='hd'/>
</os>
<features>
  <acpi/>
  <apic/>
  <pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
  <emulator>/usr/bin/kvm</emulator>
  <disk type='block' device='disk'>
    <driver name='qemu' type='raw'/>
    <source dev='/dev/hote/lvlns'/>
    <target dev='vda' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  </disk>
  <interface type='bridge'>
    <mac address='52:54:00:91:eb:e0'/>
    <source bridge='br0'/>
    <model type='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  </interface>
  <serial type='pty'>
    <target port='0'/>
  </serial>
  <console type='pty'>
    <target type='serial' port='0'/>
  </console>
  <input type='tablet' bus='usb'/>
  <input type='mouse' bus='ps2'/>
  <graphics type='vnc' port='-1' autoport='yes'/>
  <video>
    <model type='cirrus' vram='9216' heads='1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
  </video>
  <memballoon model='virtio'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  </memballoon>
</devices>

</domain> </code>

Etape 4 - VM FreeRadius