Fédération FDN

FFDN - FAI associatifs

Outils pour utilisateurs

Outils du site


documentation:vmlaclns

Intitulé du projet / étude

Contact

  • Alves, Fernando, (fendo)
  • fernando(point)alves(at)sameswireless.fr

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 :

  • CPU 64 bits.
  • processeur multi-core supportant la virtualisation.

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 vm_modele.img:

root@hote:~# lvcreate -n lvlns -L 10g h415
root@hote:~# dd if=/var/lib/libvirt/images/vm_modele.img of=/dev/h415/lvlns

Monter la partition root de la VM LNS

root@hote:~# kpartx -av /dev/hote/lvlns
root@hote:~# mount /dev/mapper/hote-lvlns1 /mnt/vm

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”:

# 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

Démonter la partition root de la VM LNS

root@hote:~# umount /mnt/vm
root@hote:~# kpartx -dv /dev/hote/lvlns

Copier vmmodele.xml

root@hote:~# cp /etc/libvirt/qemu/vmmodele.xml /etc/libvirt/qemu/vmlns.xml

Générer un UUID,Editer et modifier le fichier vmlns.xml

root@hote:~# uuidgen 
342b0a43-c872-4fc6-aadb-222d654e411d

Modifier name, uuid, disk (device, source..) et interface (type, mac address, source bridge)

<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='x86_64' 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>

Etape 4 - VM FreeRadius

documentation/vmlaclns.txt · Dernière modification: 2012/09/17 08:15 (modification externe)