2013
01.28

Un des points un peu bloquant sur OpenVZ , est qu’il est nécessaire de vérifier la configuration réseau pour être sûr que nos machines virtuelles sont bien configurées.

Afin de s’assurer que la configuration réseau soit bien OK, il est nécessaire de modifier 2 éléments:

1. La configuration de boot de la VZ
2. La configuration réseau de la machine hôte.

1. La configuration de boot de la VZ

Pour se faire , il faut créer un fichier dans /etc/vz/conf/.

Voici un exemple pour la vz 101.
La vz 101 a pour ip : 192.168.1.201.
Voici le fichier 101.mount correspondant :

#!/bin/bash
. /etc/vz/vz.conf
. ${VE_CONFFILE}

# Configure veth with IP after VPS has started
{
IP=192.168.1.201
DEV=veth101.0
while sleep 1; do
/sbin/ifconfig $DEV 0 >/dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/ip route add $IP dev $DEV
break
fi
done
} &

Bien modifier les droits et mettre les droits d’exécution sur ce fichier ( chmod a+x 101.mount ).

2. La configuration réseau de la machine hôte.

Afin d’avoir un script propre qui lance automatiquement au démarrage du serveur hôte, j’ai créé un script boot_confioguration.sh qui permet de tester :
– le fichier /proc/sys/net/ipv4/ip_forward
– le fichier /proc/sys/net/ipv4/conf/eth0/proxy_arp
– la configration sur les machines VZ du réseau ( chaque machine a une ip = n°vz+100 : vz101 <-> ip 201 )
voici le script en question :

#!/bin/bash
### BEGIN INIT INFO
# Provides: boot_configuration
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Test connection aux machines virtuelles
# Description: Verification firewall et etat de conneciont des VM openVz
### END INIT INFO

vert=$(tput setaf 2)
rouge=$(tput setaf 1)
defaut=$(tput sgr0)
function test_ip
{
machine=$1
ip=$(($machine+100))
echo -n "Test de la machine $machine "
if [[ `vzctl exec $machine ifconfig |grep -c 192.168.1.$ip` == "1" ]]
then
return 0
else
return 1
fi
}

case $1 in
start)
echo "Demarrage du firewall"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
;;
stop)
echo "Arret du firewall"
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
status)
echo "Etat du firewall : "
if [[ `cat /proc/sys/net/ipv4/ip_forward` = "1" ]]
then echo "- $vert firewall actif : forward IP ok $defaut"
else echo "- $rouge firewall inactif : forward IP ko $defaut"
fi
if [[ `cat /proc/sys/net/ipv4/conf/eth0/proxy_arp` = "1" ]]
then echo "- $vert firewall actif : proxy_arp ETH0 ok $defaut"
else echo "- $rouge firewall inactif : proxy_arp ETH0 ko $defaut"
fi
for i in `ls -ld /var/lib/vz/private/1??|awk -F"/" '{print $NF}'`
do
test_ip $i
if [[ $? == "0" ]]
then echo " : $vert accessible $defaut"
else echo " : $rouge inaccessible $defaut"
fi
done
;;
*)
echo "Usage : $0 start|stop|status"
exit 2
esac


Bien modifier les droits et mettre les droits d’exécution sur ce fichier ( chmod a+x /etc/init.d/boot_configuration ).
Le script est placé dans le répertoire /etc/init.d. Puis un lien symbolique dans /etc/rc2.d ( pour debian de base ) ) permet de lancer et de l’arrêter avec la machine.
root>/etc/rc2.d $ ln -s /etc/init.d/boot_configuration /etc/rc2.d/S99boot_configuration

Voici ce que ça donne:


root $ service boot_configuration status
Etat du firewall :
- firewall actif : forward IP ok
- firewall actif : proxy_arp ETH0 ok
Test de la machine 101 : accessible
Test de la machine 103 : accessible
Test de la machine 104 : inaccessible
Test de la machine 105 : accessible
root $

Aucun commentaire.

Ajoutez votre commentaire

%d blogueurs aiment cette page :