[[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)