documentation:vmlaclns

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

documentation:vmlaclns [2012/09/17 08:15] (Version actuelle)
Ligne 1: Ligne 1:
 +
 +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:
 +<code>
 +apt-get install bridge-utils
 +apt-get install qemu-kvm libvirt-bin
 +apt-get install kpartx
 +</code>
 +
 +Activer IP forward dans /etc/sysctl.conf:
 +<code> "net.ipv4.ip_forward=1" </code>
 +
 +Bridger l'interface eth0 (pour que les VM soit accessible de l'extérieur), configuration dans le fichier "/etc/network/interface":
 +<code>
 +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
 +</code>
 +
 +== 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:
 +<code>vmmodele:~# apt-get install vlan </code>
 +
 +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__
 +<code>
 +:~# lvcreate -n lvfrbsd -L 10g h415
 +</code>
 +
 +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:
 +<code>
 +[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
 +</code>
 +
 +Editer/Crèer le fichier "/boot/loader.conf" et ajouter ces lignes:
 +<code>
 +virtio_load="YES"
 +virtio_pci_load="YES"
 +virtio_blk_load="YES"
 +if_vtnet_load="YES"
 +virtio_balloon_load="YES"
 +</code>
 +
 +Modifier "fstab" et "rc.conf" pout utilisation de virtio:
 +<code>
 +[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
 +</code>
 +
 +configuration réseau et MPD dans fichier "/etc/rc.conf"
 +<code>
 +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"
 +</code>
 +
 +Configuration de MPD5 en LAC pppoe:
 +<code>
 +[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
 +</code>
 +
 +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).
 +<code>
 +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>
 +</code>
 +
 +==== Etape 3 - VM LNS (L2TPNS) ====
 +
 +__Création de la VM LNS à partir de vm_modele.img:__
 +<code>
 +root@hote:~# lvcreate -n lvlns -L 10g h415
 +root@hote:~# dd if=/var/lib/libvirt/images/vm_modele.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='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>
 +</code>
 +
 +
 +==== Etape 4 - VM FreeRadius ====
 +
  
  • documentation/vmlaclns.txt
  • Dernière modification: 2012/09/17 08:15
  • (modification externe)