Catégories
Open-source Planet-libre Reseau

TShark, l’autre TcpDump

TShark est un logiciel avec une interface de type ligne de commande permettant d’analyser les protocoles réseaux capturé depuis une interface (en utilisant la librairie libpcap) ou depuis un fichier de capture au format Wireshark. Développé en parallèle de Wireshark, il est distribué sous licence GNU GPL.

Installation de TShark

Sous Ubuntu, il suffit de l’installer à partir des dépôts avec la commande suivante:

sudo aptitude install tshark

Remarque: il est également possible de faire l’installation depuis les sources.

Catégories
Open-source Planet-libre Systeme

Mise à jour complète de son FreeBSD

100px-logo_freebsd

Pour une mise à jour majeure 7.x -> 8.x. Je vous conseille de suivre les procédures se trouvant sur le site suivant: http://people.freebsd.org/~rse/upgrade/

FreeBSD est surement un des systèmes d’exploitations les plus stable et modulaire que je connaisse. Son administration est une réelle partie de plaisir sauf pour un point: la mise à jour… Nous allons dans un premier temps expliquer pourquoi cette mise à jour n’est pas triviale et ensuite détailler une mise à jour complète.

Pourquoi ?

Un système FreebSD est composé de trois groupe de logiciels: le noyau, le monde et les ports.

Le noyau (ou kernel) est le coeur de système, il permet la communication avec le matériel (CPU, mémoire, entrée/sortie, processus…). Il est géré par l’équipe de développement de FreeBSD. Il est possible de customiser finement ce noyau à vos besoins.

Le monde (ou world) représente des applications ou services proche du système, fournies avec le système FreeBSD.

Les ports sont des applications/services/librairies portés par leurs auteurs ou par des personnes tierces sur le système FreeBSD.

Ainsi quand on doit faire une mise à jour de notre système FreeBSD, il faut commencer par se poser la question suivante: que veut on mettre à jour ? Nous allons dans la suite du billet détailler une mise à jour complète de son système FreeBSD

Comment ?

Avant de commencer la phase de mise à jour proprement dite, il faut récupérer les sources du noyau et du monde (le tout étant recompilé avant d’être installé sur votre machine).

Récupération des sources

Plusieurs méthodes existent. Personnellement, j’utilise la méthode cvsup. On commence par installer le logiciel cvsup (ou csup qui est plus rapide) avec la commande suivante:

pkg_add -r cvsup

mkdir /usr/local/etc/cvsup/

cp /usr/share/examples/cvsup/stable-supfile /usr/local/etc/cvsup

cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc/cvsup

Ensuite on édite les fichiers de configuration /usr/local/etc/cvsup/stable-supfile et /usr/local/etc/cvsup/ports-supfile pour modifier l’URL du serveur de mise à jour:

*default host=cvsup1.fr.FreeBSD.org

Mise à jour du monde

On télécharge les mises à jours:

cvsup /usr/local/etc/csup/stable-supfile

cvsup /usr/local/etc/csup/ports-supfile

On commence par mettre à jour le monde:

cd /usr/src/

make buildworld

On redémarre en mode de maintenance:

mergemaster -p

make installworld

mergemaster -i

On redémarre en mode normal.

PS: l’étape de reboot en mode maintenance n’est pas obligatoire mais fortement conseillée…

Mise à jour du noyau

Puis et seulement puis, on met à jour le noyau de notre système avec les commandes suivantes:

cd /usr/src/sys/i386/conf

ls GENERIC

cd /usr/src

make buildkernel KERNCONF=GENERIC

make installkernel KERNCONF=GENERIC

PS: si vous avez customiser votre noyau, il faut donner le nom du fichier de configuration en lieu et place de GENERIC.

Mise à jour des ports

Comme pour le mode et le noyau, il est nécessaire de récupérer la liste des derniers ports (arbre des ports dans le jargon FreeBSD), pour cela j’utilise les commandes:

portsnap fetch

portsnap extract

portsnap update

Ensuite j’utilise le logiciel portupgrade pour effectuer les mise à jour. Il faut dans un première temps installer ce logiciel sur votre système:

pkg_add -r portupgrade

Ensuite on lance la mise à jour de nos ports installés:

portupgrade -ar

FreeBSD-Update Une solution tout en un

Sur les dernière versions de FreeBSD RELEASE (>6.3 et >8.0), un logiciel automatisant ces taches a été développé par l’équipe de FreeBSD. Le logiciel en question s’appelle freebsd-update.

Attention cette procédure ne peut pas s’appliquer sur les versions STABLE.

Il permet de mettre à jour votre système a deux niveaux:

Mise à jour au niveau sécurité

Il suffit de saisir les deux commandes suivantes:

freebsd-update fetch

freebsd-update install

Mise à jour majeure et mineure

Les trois commandes suivantes vont mettre à jours les ports et migrer FreeBSD dans la dernière version disponible (8.1-RELEASE):

portupgrade -af

freebsd-update -r 8.1-RELEASE upgrade

freebsd-update install

On doit ensuite rebooter la machine, puis re-saisir la commande suivante:

freebsd-update install

Catégories
Blog Open-source Planet-libre Systeme

Configuration d’un serveur dédié pour votre blog

Nous allons dans ce billet détaillé l’installation d’un serveur WordPress (moteur de blog) sur une machine Linux Ubuntu. Vous aurez ainsi une plate-forme de blogging libre !

Installation du système GNU/Linux

On commence par mettre à jour notre système:

sudo aptitude update

sudo aptitude safe-upgrade

Mise en place des règles de Firewall:

#!/bin/bash

########################

# Nicolargo – 28/10/2009

# Regle de Firewall

# Serveur hebergeant:

# – SSH

# – HTTP

########################

# Debut

# Chargement des modules externes pour le suivi des connexions FTP

modprobe ip_conntrack

modprobe ip_conntrack_ftp

# On commence par effacer toutes les regles

iptables -F

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

# On autorise les flux locaux

iptables -A INPUT -i lo -j ACCEPT

# On autorise les flux des connexions etablies

iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

#————————–

# Autorise les flux entrant

#————————–

# SSH serveur

iptables -A INPUT -p tcp –dport ssh -j ACCEPT

# Web serveur

iptables -A INPUT -p tcp –dport http -j ACCEPT

#————————–

# Autorise les flux sortant

#————————–

iptables -A OUTPUT -p tcp –dport domain -j ACCEPT

iptables -A OUTPUT -p udp –dport domain -j ACCEPT

iptables -A OUTPUT -p udp –dport ntp -j ACCEPT

iptables -A OUTPUT -p tcp –dport http -j ACCEPT

iptables -A OUTPUT -p tcp –dport https -j ACCEPT

#————————–

# On drop-and-logue le reste

#————————–

# En cas d’attaque de type Syn-Flood

iptables -N syn-flood

iptables -A syn-flood -m limit –limit 10/second –limit-burst 15 -j RETURN

iptables -A syn-flood -j LOG –log-prefix « SYN flood:  »

iptables -A syn-flood -j DROP

# UDP

iptables -A INPUT -p udp -j LOG –log-prefix « IPTABLES UDP-IN:  »

iptables -A INPUT -p udp -j DROP

iptables -A OUTPUT -p udp -j LOG –log-prefix « IPTABLES UDP-OUT:  »

iptables -A OUTPUT -p udp -j DROP

# TCP

iptables -A INPUT -p tcp -j LOG –log-prefix « IPTABLES TCP-IN:  »

iptables -A INPUT -p tcp -j DROP

iptables -A OUTPUT -p tcp -j LOG –log-prefix « IPTABLES TCP-OUT:  »

iptables -A OUTPUT -p tcp -j DROP

# Fin

Automatisation du lancement des règles au démarrage du serveur:

/etc/init.d/iptables.sh

chmod a+x /etc/init.d/iptables.sh

sudo update-rc.d iptables.sh defaults

Installation de LAMP

Simplement avec la commande suivante:

sudo install apache2 mysql-server php5 php5-mysql phpmyadmin

Configuration du serveur Apache

Test d’Apache en entrant l’adresse de votre serveur (http://@IPduserveur/) dans un navigateur Web:  »It works! »

On désactive se site par défaut avec les commandes suivantes:

sudo a2dissite default

/etc/init.d/apache2 reload

Nous allons maintenant configurer le serveur Apache pour gérer les adresses virtuelles. Il faut dans un premier temps déclarer dans votre DNS une nouvelle entrée qui fait pointer le nom de domaine vers l’adresse IP du serveur (blog.mondomaine.com A @IPduserveur).

Pour tester votre DNS (attention la mise à jour peut prendre un certain temps):

ping blog.mondomaine.com

PING blog.mondomaine.com () 56(84) bytes of data.

64 bytes from blog.mondomaine.com (@IPduserveur): icmp_seq=1 ttl=47 time=111 ms

64 bytes from blog.mondomaine.com (@IPduserveur): icmp_seq=2 ttl=47 time=110 ms

64 bytes from blog.mondomaine.com (@IPduserveur): icmp_seq=3 ttl=47 time=110 ms

On configure ensuite le serveur Apache pour cette adresse:

# cd /etc/apache2/sites-available

# sudo vi virtualhosts

On édite:

NameVirtualHost @IPduserveur

<VirtualHost @IPduserveur>

ServerName @IPduserveur

DocumentRoot /var/www/default

</VirtualHost>

<VirtualHost blog.mondomaine.com>

ServerName blog.mondomaine.com

DocumentRoot /var/www/blog

</VirtualHost>

On créer ensuite les arborescences correspondantes:

cd /var/www

sudo mkdir default

sudo mkdir blog

sudo chown -R www-data:www-data *

Puis on active le site:

sudo a2ensite virtualhosts

sudo /etc/init.d/apache2 reload

Configuration de MySQL

On accède au logiciel phpMyAdmin qui va nous permettre de configurer une base de donnée pour notre blog WordPress. Pour cela, il faut saisir l’URL suivante dans votre navigateur: http://blog.mondomaine.com/phpmyadmin/

PHPMyAdmin main page

Puis ensuite saisir le nom de la base de donnée (par exemple blog) et enfin cliquer sur Créer:

Create DB

PS: il est possible (et conseillé) de créer un utilisateur dédié pour pour accéder à cette base de donnée. Le plus simple est de créer un utilisateur (avec comme nom « blog ») puis de demander la création de la base de donnée correspondante. Les droits seront ainsi fixés automatiquement.

Installation de WordPress

La dernière version de WordPress 2.9 arrivera dans les bacs dans les prochains jours. Nous allons donc utiliser la version stable actuelle (WordPress 2.8.6) pour illustrer ce billet.

On commence par télécharger les sources:

wget http://wordpress.org/latest.zip

Puis on décompresse l’archive:

unzip latest.zip

Il faut ensuite déplacer le répertoire wordpress dans la bonne arborescence de votre serveur. Ainsi, si vous souhaitez accéder à votre blog par l'adresse http://blog.mondomaine.com/, il faut copier le contenu du répertoire de la manière suivante.
sudo cp -r ./wordpress/* /var/ww
Par contre si vous souhaitez que votre blog soit accessible par l'adresse  http://blog.mondomaine.com/blog/, il faut saisir la commande:
sudo mv wordpress /var/www/blog
Il faut ensuite éditer le fichier wp-config.php:

cd /var/www cp wp-config-sample.php wp-config.php sudo chmod a+r wp-config.php vi wp-config.php

Puis éditer le fichier selon votre configuration:

define(‘DB_NAME’, ‘blog’);

define(‘DB_USER’, ‘blog’);

define(‘DB_PASSWORD’, ‘monmotdepasse’);

define(‘DB_HOST’, ‘localhost’);

define(‘DB_CHARSET’, ‘utf8’);

define(‘DB_COLLATE’,  »);

Enfin on finalise l’installation en allant à l’URL: http://blog.mondomaine.com/wp-admin/install.php

Pour résumer

Votre blog est maintenant accessible par l’adresse http://blog.mondomaine.com/

L’interface d’administration se trouve à l’adresse: http://blog.mondomaine.com/wp-admin/

Bon blog !

Catégories
Open-source Planet-libre Systeme

Installation pas à pas de Xen sous Debian

Le but de ce billet est d’installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c’est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre hardware.

Installation du serveur Xen

J’ai choisi d’héberger mon serveur de virtualisation Xen (on appelle cette machine le dom0 pour « domaine 0 » dans le jargon Xen) sur la machine suivante:

HP Proliant DL145
AMD Optron 64
2 Go RAM
2 disques durs de 80 Go en RAID 1 (LVM)
Système d’exploitation: GNU/Linux Debian Lenny 5

J’ai effectué une installation standard à partir du CD d’installation de la Debian 5.0 en appelant ma machine virt1 et en installant comme seul et unique service le daemon OpenSSH (pour un accès à distance).

Ensuite, il faut procéder à l’installation de Xen et de ses utilitaires:

aptitude install xen-hypervisor-i386 xen-linux-system-2.6.26-2-xen-686 xen-utils xen-tools xen-shell xenwatch xenstore-utils


On configure ensuite le réseau de la manière à transformer notre machine dom0 en bridge. Pour cela, on édite le fichier /etc/xen/xend-config.sxp et on remplace la ligne:

(network-script network-dummy)
par
(network-script network-bridge)


On reboot notre système pour prendre en compte le noyau supportant Xen:

reboot


Configuration du serveur Xen

Nous allons utiliser xen-tools pour administrer nos serveurs virtuels. Pour cela il faut éditer le fichier de configuration (/etc/xen-tools/xen-tools.conf) de la manière suivante (en gras les options à adapter selon votre configuration):

dir = /xen
install-method = debootstrap
size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = lenny     # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway   = 192.168.29.1
netmask   = 255.255.255.0

passwd = 1
kernel      = /boot/vmlinuz-`uname -r`
initrd      = /boot/initrd.img-`uname -r`
mirror = http://ftp.lip6.fr/pub/linux/distributions/debian/
ext3_options   = noatime,nodiratime,errors=remount-ro
ext2_options   = noatime,nodiratime,errors=remount-ro
xfs_options    = defaults
reiser_options = defaults
serial_device = hvc0
disk_device = xvda


On pense également à créer le répertoire qui contiendra les domaines hôtes (/xen dans ma configuration):

mkdir /xen


Installation d’un serveur virtuel

Nous allons commencer par ajouter un nouveau serveur virtuel (que l’on appelle domU pour « domaine Users » dans le jargon Xen) à notre configuration. Cette action se fait de manière très simple grâce à la commande suivante (attendre quelques minutes):

# xen-create-image –hostname=servvirt1.mondomaine.com –size=10Gb –swap=512Mb –ip=192.168.29.171 –memory=256Mb –dist=lenny –arch=i386 –role=udev
General Information
——————–
Hostname       :  servvirt1.mondomaine.com
Distribution   :  lenny
Partitions     :  swap            512Mb (swap)
/               10Gb  (ext3)
Image type     :  sparse
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.26-2-xen-686
Initrd path    :  /boot/initrd.img-2.6.26-2-xen-686


Networking Information
———————-
IP Address 1   : 192.168.29.171 [MAC: 00:16:3E:8B:F0:9E]
Netmask        : 255.255.255.0
Gateway        : 192.168.29.1

Xen va alors créer un serveur virtuel disposant d’un disque de 10 Go, d’un taille de swap de 512 Mo et d’une mémoire de 256 Mb. L’adresse IP de ce nouveau serveur virtuel sera 192.168.29.171. Le mot de passe root du système vous sera demandé en fin d’installation.

Un fichier de configuration dédié a ce nouveau serveur a été généré: /etc/xen/servvirt1.mondomaine.com.cfg

Gestion du serveur virtuel

Démarrage du serveur virtuel

Pour lancer le serveur virtuel préalablement créé, il faut saisir la commande:

xm create /etc/xen/servvirt1.mondomaine.com.cfg


Vous pouvez alors vous connecte dessus en SSH:

ssh root@servvirt1.mondomaine.com


Pour automatiser le démarrage de ce serveur virtuel (domU) au lancement de votre serveur hôte (dom0), il faut créer le lien suivant:

ln -s /etc/xen/servvirt1.mondomaine.com.cfg /etc/xen/auto/host1.cfg


Cette commande permet de séquencer le lancement des serveurs domU dans un certain ordre. Cela peut être utile si le service hébérgé sur un serveur virtuel dépend d’un autre…

Autres commandes utiles à l’administration de vos serveurs virtuels

Pour arrêter un serveur virtuel:

xm shutdown servvirt1.mondomaine.com


Pour voir la liste des serveurs virtuelles lancées:

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1765     2     r—–    106.7
servvirt1.mondomaine.com 1   256     1     -b—-      2.6


Liste des serveurs virtuels créés:

# xen-list-images
Name: servvirt1.mondomaine.com
Memory: 256
IP: 192.168.29.171


Occupation des ressources en temps réel:

xentop


Pour rendre prioritaire un serveur virtuel par rapport à un autre, nous allons utiliser les options du gestionnaire d’allocation des ressources (« Credit scheduler », par défaut dans la version Xen 3.0).
Par exemple, si nous avons deux serveurs virtuels servvirt1 et servvirt2 (domU) hébérgés sur notre serveur hôte (dom0) et que nous souhaitons donner deux fois plus de temps CPU à servvirt2, il suffit de saisir la commande suivante:

xm sched-credit -d servvirt2.mondomaine.com -w 512

PS: par défaut, un serveur virtuel à un poids de 256.

La liste des poids des serveurs virtuels peut être obtenue grâce à la commande:

# xm sched-credit
Name                                ID Weight  Cap
Domain-0                             0    256    0
servvirt1.mondomaine.com 1    256    0
servvirt2.mondomaine.com 1    512    0


Les commandes xm sched-credit sont à lancer (par exemple dans un script shell) au démarrage du serveur hôte.

Conclusion

Xen et la virtualisation en général est un très bon moyen, dans cette période de crise, d’optimiser au mieux les ressources hardware disponibles. Il est bien sûr possible de créer autant de serveurs virtuels que possible sur notre serveur hôte (dans les limites de performances souhaités au niveau des domU).

Quelques sources utiles à la rédaction de ce billet:

Catégories
Developpement Open-source Planet-libre

Comment construire un .deb pour Ubuntu

Voici une procédure (assez longue) permettant de générer un .deb (format de package compatible avec l’OS Ubuntu) pouvant être mis sur un depot officiel. Ce billet s’inspire très fortement de ce forum.

Avant de commencer…

Il faut installer les pré-requis suivants:

sudo aptitude install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder

Ensuite on créé l’arborescence suivante dans votre répertoire racine:

cd ~
mkdir packages
cd packages

Création de notre premier package .deb

On doit dans un premier temps récupérer les sources du logiciel à packager (sjitter dans mon exemple):

wget http://fastbull.dl.sourceforge.net/sourceforge/sjitter/sjitter-0.18.1b.tgz
tar zxvf sjitter-0.18.1b.tgz

Le nom du répertoire contenant les sources doit être de la forme nom-version:

mv sjitter sjitter-0.18.1b

On créé un sous répertoire sjitter dans lequel on met l’archive et les sources:

mkdir sjitter
mv sjitter-0.18.1b sjitter-0.18.1b.tgz sjitter

Pour vérifier, le contenu du répertoire de travail doit être le suivant:

# ls -l ~/packages/sjitter
sjitter-0.18.1b
sjitter-0.18.1b.tgz

On va dans le répertoire source:

cd sjitter/sjitter-0.18.1b

Puis on lance la commande:

dh_make -e nicolas@nospam.com -c GPL -f ../sjitter-0.18.1b.tgz
> s
Maintainer name : unknown
Email-Address   : nicolas@nospam.com
Date            : Wed, 27 May 2009 11:52:00 +0000
Package Name    : sjitter
Version         : 0.18.1b
License         : blank
Type of Package : Single
> ENTER

A la première question, il faut répondre:

s = [single binary] – si c’est package normal
l = [library] – si c’est une librairie de dev
m
= [multiple] – si c’est un package comprenant plusieurs binaires
k
= [kernel module] – si c’est module noyau

On va alors dans le sous répertoire debian créé par le programme dh_make:

cd debian

Puis on édite le fichier control:

# vi control
Source: sjitter
Section: net
Priority: extra
Maintainer: Nicolas Hennion <nicolas@nospam.com>
Build-Depends: debhelper (>= 5), autotools-dev
Standards-Version: 3.7.2

Package: sjitter
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Sjitter is a client/server performing tool.
Sjitter is a command line client/server to measure jitter (based on RFC 1889), one way UDP delay and bandwidth. The client and the server’s date should be synchronise to compute the jitter. You can use the NTP protocol to do this.

Avec:
Ligne 1: Nom du projet
Ligne 2: Section à laquelle appartient le projet (voir la des sections disponible ici)
Ligne 3: Laisse la valeur par défaut
Ligne 4: Nom et adresse mail du mainteneur du package
Ligne 5: Il faut y mettre les dépendances finissants par -dev
Ligne 6: Laisse la valeur par défaut
Ligne 7: Vide
Ligne 8: Mettre la même chose qu’en ligne 1
Ligne 9: Architecture cible (any pour toutes)
Ligne 10: Il faut y mettre les dépendances ne finissants pas par -dev
Ligne 11: Description courte du projet (< à 60 caractères)
Ligne 12->n: Description longue (attention à laisser un espace avant votre description)

Puis le fichier changelog:

# vi changelog
sjitter (0.18.1b) maverick; urgency=low

* Version 0.18 (23/03/2009), thanks to Thierry Legras

— Nicolas Hennion <nicolas@nospam.com>  Wed, 27 May 2009 11:52:00 +0000

Avec:
Ligne 1: Nom du package et version d’Ubuntu (maverick dans mon exemple)
Ligne 2: Vide
Ligne 3->n: Liste des changements de cette version
Ligne n+1: Vide
Ligne n+2: Nom, adresse mail et date (attention, il faut mettre votre nom / adresse comme configuré dans Launchpad)

Le fichier copyright:

# vi copyright
This package was debianized by Nicolas Hennion <nicolas@nicolargo.com> on
Wed, 27 May 2009 11:52:00 +0000.

It was downloaded from http://fastbull.dl.sourceforge.net/sourceforge/sjitter/sjitter-0.18.1b.tgz

Upstream Author(s): Nicolas Hennion <nicolas@nicolargo.com>

License: This script is written under the GNU General Public License.

Avec:
Ligne 1: Nom et adresse de l’auteur du package
Ligne 2: Date
Ligne 3: Vide
Ligne 4: A partir de quel source le package a été généré
Ligne 5: Vide
Ligne 6->n: Les auteurs du logiciel (copie du fichier ../AUTHORS)
Ligne n+1: Vide
Ligne n+2->m: Licence sous laquelle le logiciel est distribué (conformément à la volonté de l’auteur)
Ligne m+1: Vide (optionnel)
Ligne m+2: Licence complète (optionnel)


Il y a ensuite certains fichiers optionnels à configurer. Si ils ne sont pas utiles pour votre logiciel, il faut les supprimer.

README.debian: Informations complémentaires sur le logiciel (non présentes dans les autres fichiers)
emacsen-*.ex: Fichier Emacs pouvant être compilé à l’installation
init.d.ex: Si votre logiciel doit se lancer en mode daemon, c’est dans ce fichier qu’il faut écrire le script init.d
manpage.1.ex, manpage.sgml.ex: Fichiers de man (aide)
preinst.ex: Script à lancer avant l’installation
postinst.ex: Script à lancer après l’installation
prerm.ex: Script à lancer avant la désinstallation
postrm.ex: Script à lancer après la désinstallation

On peut ensuite lancer la génération du fichier .deb

cd ..
debuild -S -k_CLES_

Il faut remplacer _CLES_ par votre clés Launchpad (liste des clés: gpg –list-keys).

Si tout se passe sans problème, vous devriez vous retrouver avec les fichiers suivant dans le répertoire ~/packages/sjitter/:

sjitter_0.18.1b-1.diff.gz: Changement entre .deb et les sources originales
sjitter_0.18.1b-1.dsc: Fichier permettant aux mainteneurs des repos de suivre ce package
sjitter_0.18.1b-1_source.changes: Le changelog (liste des changements)
sjitter_0.18.1b-1_source.deb: Le package au format .deb
sjitter_0.18.1b.orig.tar.gz: Les sources originales

Et voilà, vous venez de faire votre premier package Ubuntu, il ne reste plus qu’a le soumettre à la communauté.

Par exemple pour soumettre votre package sur Launchpad:

dput ppa:nicolashennion/ppa sjitter_0.18.1b-1_source.changes

Et hop…

Catégories
Nagios Open-source Planet-libre Systeme

Pour en finir avec NDO

Vu le nombre de messages sur le forum concernant l’installation et la configuration de NDO (la petite boite qui fait le lien entre Nagios et Centreon), je me devais de rédiger ce billet sur le sujet. Nous allons donc voir étape par étape les choses à vérifier et à faire pour faire fonctionner ce bouzin (oui, oui c’est un bouzin).

Dans la suite de ce billet, je pars sur l’hypothése ou vous avez installé Nagios et Centreon en suivant cette série de billets.

NDO c’est quoi ?

NDO est un module additionnel permettant à Nagios d’écrire dans une base de données l’état des machines et services à superviser.

NDO est composé de deux modules: NDOMOD et NDO2DB.

NDOMOD doit être lancé sur le serveur Nagios et permet de récupérer les informations remontées par Nagios pour les transmettre via TCP (ou un socket Unix) vers NDO2DB.

NDO2DB est un daemon qui écoute sur un port TCP (ou un socket Unix) et écrit les données recues dans une base de donnée (MySQL ou PgSQL).

Compilation de NDO

Le plugin est a récupérer à l’adresse suivante: http://www.nagios.org/download/addons/ ou en saisissant les commandes suivantes:

# sudo -s

# cd /usr/src

# wget http://dfn.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz

Remarque: la version disponible au moment de l’écriture de ce billet est la 1.4b9 (à modifier par vos soins).

On lance la compilation pour une utilisation d’une base de donnée MySQL:

# tar zxvf ndoutils-1.4b9.tar.gz

# cd ndoutils-1.4b9

# ./configure –disable-pgsql –with-mysql-lib=/usr/lib/mysql –with-ndo2db-user=nagios –with-ndo2db-group=nagios

# make

La compilation doit se faire sans erreur…

Installation de NDO

NDO ne dispose pas d’un « installateur » standard, il faut donc saisir les commandes suivantes (toujours en mode root):

# cd /usr/src/ndoutils-1.4b9

# cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o

# cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db

On écrase les droits par défaut de ces fichiers:

# chown nagios:nagios /usr/local/nagios/bin/ndo*

# chmod 774 /usr/local/nagios/bin/ndo*

Configuration de la base de donnée MySQL

Avant que NDO2DB ne puisse écrire des informations dans la base de donnée, il faut créer et configurer cette dernière.

Création de la base de données MySQL NDO:

# mysqladmin -u root -p create ndo

# mysql -u root -p mysql

mysql> GRANT ALL ON ndo.* TO ndouser@localhost IDENTIFIED BY ndopassword;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Puis on la configure:

# cd /usr/src/ndoutils-1.4b9/db

# ./installdb -u ndouser -p ndopassword -h localhost -d ndo

… Table ‘nagios.nagis_dbversion’ doesn’t exist at ./installdb line 51…

Remarque: vous pouvez ignorer l’erreur.

Configuration de NDO

La configuration de NDO se fait par deux fichiers:

  • ndomod.cfg : configuration de NDOMOD
  • ndo2db.cfg: configuration de NDO2DB

Leux fichiers doivent être initialisés:

# cp config/ndomod.cfg /usr/local/nagios/etc/

# cp config/ndo2db.cfg /usr/local/nagios/etc/

On leurs donne les droits:

# chown nagios:nagios /usr/local/nagios/etc/ndo*

Puis on les édite de la manière suivante:

# vi /usr/local/nagios/etc/ndomod.cfg

instance_name=Central

output_type=unixsocket

output=/usr/local/nagios/var/ndo.sock

tcp_port=5668

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp

et:

# vi /usr/local/nagios/etc/ndo2db.cfg

ndo2db_user=nagios

ndo2db_group=nagiosgrp

socket_type=unix

socket_name=/usr/local/nagios/var/ndo.sock

tcp_port=5668

db_servertype=mysql

db_host=localhost

db_name=ndo

db_port=3306

db_prefix=nagios_

db_user=ndouser

db_pass=ndopassword

Configuration de Nagios

Nous allons configurer Nagios pour qu’il passe les informations automatiquement à NDOMOD. Pour celà, il faut éditer le fichier /usr/local/nagios/etc/nagios.cfg et y ajouter les 2 lignes suivantes:

# vi /usr/local/nagios/etc/nagios.cfg

event_broker_options=-1

broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg

Attention, si vous faite un copier/coller pour ajouter les lignes de
configuration dans le nagios.cfg, il faut faire attention à la ligne:

broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg

qui est sur une seule ligne et pas en deux lignes…

Automatisation du lancement de NDO

NDO n’est pas fourni avec un script de démarrage automatique (au démarrage du serveur). Voici donc un procédure à suivre pour une installation sous GNU/Linux Ubuntu (script à adapter à votre distribution).

Pour automatiser le lancement de NDO au démarrage du serveur, il faut ajouter le script suivant dans le fichier /etc/init.d/ndo2db). Il faut le rendre exécutable:

# sudo chown root:root /etc/init.d/ndo2db

# sudo chmod 755 /etc/init.d/ndo2db

On automatise le lancement du processus ndo2db au démarrage du serveur:

# sudo update-rc.d ndo2db defaults

Test de NDO + Nagios

Pour que votre configuration soit prise en compte, il faut lancer NDO et relancer Nagios:

# /etc/init.d/ndo2db start

# /etc/init.d/nagios restart

Running configuration check…done.

Stopping nagios: No directory, logging in with HOME=/

done.

Starting nagios:No directory, logging in with HOME=/

No directory, logging in with HOME=/

done.

Remarque: vous pouvez ignorer les messages: « No directory, logging in with HOME=/ »

Si tout se passe bien, Nagios devrait commencer à écrire les informations dans la base de donnée MySQL. Pour vous en assurer, allez voir du coté du fichier de log si vous avez les messages suivants:

tail -f /usr/local/nagios/var/nagios.log

[1234886298] Auto-save of retention data completed successfully.

Configuration de NDO pour Centreon

Passons maintenant aux choses sérieuses avec la configuration de NDO pour Centreon. Il faut commencer par modifier la base de donnée MySQL pour prendre en compte Centreon (quand je vous disais bouzin…):

# cd /usr/src/centreon-2.0/www/install

# mysql -u root -p ndo < ./createNDODB.sql

# mysql -u root -p

mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON ndo . * TO ndouser@localhost IDENTIFIED BY ndopassword;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

mysql> exit

Nous allons maintenant générer les fichiers de configuration NDO par Centreon. Pour celà, il faut aller dans le menu Configuration/Centreon, puis cliquer sur
le lien ndo2db.cfg dans le menu de gauche et cliquer sur le lien
Principal.

Centreon - IT & Network Monitoring-1.jpg

Saisir la configuration suivante dans l’onglet General (Socket type: Unix et fichier socket /usr/local/nagios/var/ndo.sock):

  • Socket type: unux
  • Socket name: /usr/local/nagios/var/ndo.sock

Centreon - IT & Network Monitoring-11.jpg

Modifier le login/password pour l’accès à la base de donnée NDO (ndouser/ndopassword):

Centreon - IT & Network Monitoring-3.jpg

il faut ensuite aller dans le menu Configuration/Centreon, puis
cliquer sur le lien ndomod.cfg dans le menu de gauche et cliquer sur le
lien Principal.

Centreon - IT & Network Monitoring-12.jpg
Saisir la configuration suivante:
  • Socket type: unixsocket
  • Output: /usr/local/nagios/var/ndo.sock
  • Buffer File: /usr/local/nagios/var/ndomod.tmp
Centreon - IT & Network Monitoring-15.jpg

Enfin nous allons exporter la configuration de Centreon vers Nagios (et donc normalement écraser les anciens fichiers de configuration de NDO).

La première chose à faire est de vérifier que les droits du
répertoire /usr/local/nagios/etc (et de tout ce qui a dessous) sont
compatible avec un écriture qui va être faite par Centreon (donc avec
l’utilisateur www-data):

# chmod -R 664 /usr/local/nagios/etc

Nagios reste le coeur de notre système de supervision. Ainsi quand
un host/service est créé dans l’interface de Centreon (menu
configuration / Hosts / Add), il faut ensuite exporter cette nouvelle
configuration pour qu’elle soit prise en compte par Nagios et donc
affiché dans l’interface de supervision de Centreon.

Il faut pour cela se rendre dans le menu Configuration / Nagios et saisir le formulaire suivant:

Centreon - IT & Network Monitoring-9.jpg

Le résultat de la commande doit être le suivant:

Centreon - IT & Network Monitoring-10.jpg

Il faut également penser à vérifier que l’exportation vers le répertoire de Nagios se passe sans problème (il ne faut PAS de message de type KO dans l’écran précédant).

Cette action est a répéter a chaque fois que vous souhaitez ajouter une configuration depuis Centreon vers Nagios.

Après quelques minutes, les informations
sur l’état de vos machines/services devraient remonter dans Centreon à
travers le module NDO. Pour vérifier que tout ce passe bien à ce
niveau, il faut se rendre dans le menu Monitoring / Event logs et
vérifier qu’il n’y a pas d’erreur au niveau ndomod:

Centreon - IT & Network Monitoring-14.jpg

Et voilà, vous devriez avoir un système opérationnel. En cas de problème pour suivre cette procédure, vous pouvez toujours poser une question sur le forum.

Catégories
Open-source Planet-libre Systeme

Un serveur FTP en 5 minutes chrono

Nous allons dans ce billet détailler l’installation d’un serveur FTP sur une machine tournant sous Ubuntu 10.04 (la procédure marche aussi sur d’autres versions). Le serveur FTP choisi est Pure-ftpd (je l’utilisai déjà sous FreeBSD et il est d’une stabilité à toutes épreuves).

> top chrono

Installation de Pure-ftpd

Il y a plus dur:

sudo apt-get install pure-ftpd pure-ftpd-common

Suite à cette commande, le serveur FTP sera lancé automatiquement. L’ensemble des fichiers de configuration de Pure-ftpd se trouve dans le répertoire suivant: /etc/pure-ftpd/

Il faut ensuite créer l’utilisateur/groupe système avec lequel le serveur FTP sera lancé:

sudo groupadd ftpgroup

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Configuration de Pure-ftpd

De base, Pure-ftpd base son authentification sur le PAM système puis sur un fichier de donnée interne. Personnellement et pour des raisons de sécurité, je préfère désactiver l’authentification par PAM. Pour cela il faut éditer le fichier conf/PAMAuthentication et remplacer la ligne yes par no:

# sudo vi /etc/pure-ftpd/conf/PAMAuthentication

no

# sudo vi /etc/pure-ftpd/conf/DontResolve

yes

Pour finir, il faut créer un lien symbolique pour activer l’authentification des utilisateurs virtuels :

# cd /etc/pure-ftpd/auth/

# sudo ln -s ../conf/PureDB 50puredb

Création d’un utilisateur FTP

Par exemple si vous voulez créer l’utilisateur ftp nicolargo dont le répertoire sera /home/ftp/nicolargo, il faut saisir les commandes suivantes:

sudo mkdir /home/ftp/nicolargo

sudo chown -R ftpuser:ftpgroup /home/ftp/nicolargo

sudo pure-pw useradd nicolargo -u ftpuser -g ftpgroup -d /home/ftp/nicolargo

Ces commandes vont avoir comme buts de créer un répertoire local puis de renseigner le fichier de configuration de Pure-ftp: /etc/pure-ftpd/pureftpd.passwd:

# sudo cat /etc/pure-ftpd/pureftpd.passwd

nicolargo:$1$ucgVifA0$HFoang9VssnUnErD3X4bj1:1001:1001::/home/ftp/nicolargo/./::::::::::::

Enfin il faut transofrmer ce fichier dans un format sécurisé et lisible par le serveur FTP (/etc/pure-ftpd/pureftpd.pdb):

sudo pure-pw mkdb

On relance alors le serveur pour que la configuration soit prse en compte:

sudo /etc/init.d/pure-ftpd restart

< fin du chrono ! (5 minutes !!! :))

Quelques commandes utiles…

Voici quelques commandes utiles à l’administration de votre serveur FTP.

Pour configurer le message affiché lors de la connexion des utilisateurs, il faut commencer par editer un fichier texte contenant le message:

# sudo vi /etc/motd.pure-ftpd

Bienvenue sur mon beau serveur FTP !

Puis ajouter le chemin de ce fichier dans le fichier /etc/pure-ftpd/conf/FortunesFile:

# sudo vi /etc/pure-ftpd/conf/FortunesFile

/etc/motd.pure-ftpd

Pour connaitre la liste des utilisateurs ayant un compte FTP:

# sudo pure-pw list

nicolargo /home/ftp/nicolargo

Pour changer le mot de passe d’un utilisateur:

sudo pure-pw passwd nicolargo

Pour supprimer le compte d’un utilisateur:

sudo pure-pw userdel nicolargo

Catégories
Open-source Planet-libre Systeme

Configuration X pour moniteur HP LP2465

Update

Autre méthode si celle ci-dessous ne fonctionne pas:

1) Supprimer le fichier xorg.conf, puis le remplacer par:

Section « Monitor »

Identifier      « Configured Monitor »

EndSection

Section « Screen »

Identifier      « Default Screen »

Monitor         « Configured Monitor »

Device          « Configured Video Device »

SubSection « Display »

Virtual 1920 1200

EndSubSection

EndSection

Section « Device »

Identifier      « Configured Video Device »

EndSection

2) Editer le fichier ~/.xprofile avec le contenu suivant:

xrandr –newmode « 1920x1200_60.00 »  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync

xrandr –addmode VGA1 1920x1200_60.00

xrandr –output VGA1 –mode 1920x1200_60.00

/Update

Hier après midi, j’ai passé un bon petit moment à configurer le serveur X d’une de mes machines Ubuntu connectée à un moniteur HP LP2465. En effet, ce dernier est assez sensible à la configuration des fréquences qui se trouve dans le fichier /etc/X11/xorg.conf.

Voici donc le fichier en question avec une configuration fonctionnelle pour une résolution adapté à la dalle de ce moniteur (1920×1200 à 60Hz):

Section « Monitor »
Identifier    « Configured Monitor »
ModelName    « HP LP2465 »
Option        « DPMS »
HorizSync    30.0-92.0
VertRefresh    48.0-85.0
ModeLine    « 1920×1200@60 » 193.16 1920 2048 2256 2592 1200 1201 1204 1242 -hsync +vsync
EndSection

Section « Screen »
Identifier    « Default Screen »
Monitor        « Configured Monitor »
Device        « Configured Video Device »
DefaultDepth    24

SubSection « Display »
Depth    24
Virtual    1920 1200
Modes    « 1920×1200@60 »
EndSubSection
EndSection

Section « Module »

Load      « dri »

Load        « glx »

EndSection

Section « Device »
Identifier    « Configured Video Device »
Driver        « nvidia »
Option        « NoLogo »    « True »
EndSection

Si cela peut aider d’autres Linuxiens…

Catégories
Open-source Planet-libre Reseau

IPerf: des exemples…

Nous commençons l’année 2008 avec un billet regroupant des exemples d’utilisation d’IPerf, l’outil en ligne de commande indispensable pour tester un réseau informatique.

Pour rappel, IPerf est un logiciel client/serveur, il faut donc deux machines positionner aux deux extremités du réseau à tester pour fonctionner (pour l’installation et une rapide introduction, vous pouvez consulter ce billet).

Dans les exemples ci-dessous, nous allons considérer que nous allons utiliser deux machines nommées C (avec comme adresse IP: IPC) et S (avec comme adresse IP: IPS).

Exemple pour mesurer la bande passante disponible entre S et C

Attention, cette méthode mesure la bande passante au moment du test. Ce dernier dure par défaut 10 secondes et utilise le protocole TCP sur le port 5001.

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 5001TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 54334

[ 6] 0.0-10.0 sec 112 MBytes 93.7 Mbits/sec

Exemple pour générer un débit réseau entre C et S

On génère ici un flux en utilisant le protocole UDP et en fixant la bande passante à 1 Megabits par seconde. Le test dure par défaut 10 secondes.

Il est possible de choisir l’unité de mesure de débit avec l’option -b et en collant les lettres suivantes aux débits:

  • b: bits par seconde
  • k: kilobits par seconde
  • m: megabits par seconde
  • g: gigabits parseconde

pour un débit en octets par seconde, il faut utiliser ces lettres en majuscule)

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-10.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 3403 (0%)


Exemple pour générer un débit réseau entre C et S pendant 10 heures

Il peut être utile de générer un flux réseau plus long pour tester par exemple une liaison Internet pendant les heures d’utilisation. Nous allons donc utiliser l’option -t pour fixer la durée du test précédent à 10 heures (10*3600=36000 secondes).

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m -t 36000

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-36000.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 999403 (0%)

Il est également possible d’ajouter l’option -i 3600 pour avoir un rapport intermédiaire toutes les heures (1*3600=3600 secondes).

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m -t 3600

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-3600.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ – (0%)

[ 5] 3600.0-7200.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ – (0%)…

[ 5] 0.0-36000.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 999403 (0%)

Exemple pour générer 2 flux réseau entre S et C

Il est parfois utile de générer plusieurs flux UDP simultanément pour simuler une application. IPerf permet cela grâce à l’option -P et en donnant le nombre de flux à générer. L’exemple suivant génère 4 flux TCP entre S et C (simulation d’un serveur Web par exemple).

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS -P 4

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 5001

TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64978

[ 7] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64979

[ 8] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64980

[ 9] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64981

[ 7] 0.0-10.0 sec 28.0 MBytes 23.5 Mbits/sec
[ 8] 0.0-10.0 sec 28.0 MBytes 23.4 Mbits/sec
[ 9] 0.0-10.0 sec 28.1 MBytes 23.5 Mbits/sec
[ 6] 0.0-10.0 sec 28.1 MBytes 23.5 Mbits/sec
[SUM] 0.0-10.0 sec 112 MBytes 93.8 Mbits/sec

Exemple pour optimiser une connexion TCP entre S et C

Le protocole TCP, bien que capable pour s’adapter aux réseaux large bande, a été conçu lorsque les débits étaient beaucoup moins important. Les valeurs par défaut des fenêtres TCP (taille des paquets envoyé dans des trames TCP) ne sont pas forcement adapté aux réseaux actuels. IPerf permet de jouer avec la taille de ces fenêtres avec l’option -w. L’exemple suivant génère un flux TCP avec une taille de fenêtre de 130 kilo octets.

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS -w 128k

Résultat (à lire sur la machine S):

————————————————————

Client connecting to 192.168.29.1, TCP port 5001

TCP window size: 128 KByte (WARNING: requested 130 KByte)

————————————————————

[ 3] local 192.168.29.157 port 65066 connected with 192.168.29.1 port 5001

[ 3] 0.0-10.0 sec 112 MBytes 93.5 Mbits/sec

Exemple pour découvrir la taille du MTU entre S et C

Le MTU est la taille maximale du paquet pouvant être transmis sur la couche réseau sans être segmenté. La découverte de cette valeur peut être utile à l’optimisation de votre réseau et des applications qui tourne dessus. IPerf permet d’obtenir cette valeur grâce à l’option -m (à lancer sur le serveur).

Sur la machine S: # iperf -s -m

Sur la machine C: # iperf -c IPS

Résultat (à lire sur la machine S):

————————————————————

Client connecting to 192.168.29.1, TCP port 5001

TCP window size: 56.0 KByte (default)

————————————————————

[ 3] local 192.168.29.157 port 65066 connected with 192.168.29.1 port 5001

[ 3] 0.0-10.0 sec 112 MBytes 93.5 Mbits/sec[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)

Exemple pour tester un flux de type VoIP entre C et S

Les paquets de type voix sur IP on les caractéristiques suivantes: protocole UDp et taille des paquets petites (bien inférieure au MTU). Le meilleur moyen de tester un flux de type VoIP avec IPerf est d’utiliser les options -l (taille du datagram) et -w (taille maximale du buffer recevant les datagras) en fixant une valeur de datagram inférieure à celle du buffer.

Sur la machine S: # iperf -s -u -l 32 -w 128k -i 1

Sur la machine C: # iperf -c IPS -u -b 1m -l 32 -w 128k

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 32 byte datagrams

UDP buffer size: 128 KByte

————————————————————

[ 3] local 192.168.29.157 port 5001 connected with 192.168.29.125 port 32778

[ 3] 0.0- 1.0 sec 96.0 KBytes 786 Kbits/sec 0.003 ms 0/ 3 (0%)

[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.008 ms 0/ 4 (0%)

[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec 0.017 ms 0/ 4 (0%)

[ 3] 3.0- 4.0 sec 128 KBytes 1.05 Mbits/sec 0.021 ms 0/ 4 (0%)

[ 3] 4.0- 5.0 sec 128 KBytes 1.05 Mbits/sec 0.023 ms 0/ 4 (0%)

[ 3] 5.0- 6.0 sec 96.0 KBytes 786 Kbits/sec 0.022 ms 0/ 3 (0%)

[ 3] 6.0- 7.0 sec 128 KBytes 1.05 Mbits/sec 0.152 ms 0/ 4 (0%)

[ 3] 7.0- 8.0 sec 128 KBytes 1.05 Mbits/sec 0.142 ms 0/ 4 (0%)

[ 3] 8.0- 9.0 sec 128 KBytes 1.05 Mbits/sec 0.115 ms 0/ 4 (0%)

[ 3] 9.0-10.0 sec 128 KBytes 1.05 Mbits/sec 0.098 ms 0/ 4 (0%)

[ 3] 0.0-10.5 sec 1.25 MBytes 1.00 Mbits/sec 0.116 ms 0/ 40 (0%)

Remarque: bien que Iperf soit disponible sur de nombreuses plate-forme (Linux, BSD, Mac, Windows), l’option -l ne fonctionne pas toujours quand vous utiliser des OS différents entre le client et le serveur.

Exemple pour utiliser IPerf sur un port différent

Par défaut, Iperf utilise le numéro de port 5001 (TCP et/ou UDP). Selon votre configuration (notamment au niveau des ACL des routeurs/firewalls), il peut être utile d’utiliser un autre port, pour cela, il faut passer par l’option -p. L’exemple suivant permet de générer un flux réseau TCP entre S et C sur le port 80 (port Web standard).

Sur la machine S: # iperf -s -p 80
Sur la machine C: # iperf -c IPS -p 80

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 80

TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 54334

[ 6] 0.0-10.0 sec 112 MBytes 93.7 Mbits/sec


Voici donc quelques exemple d’utilisation d’Iperf, si vous en avez d’autres, les commentaires sont ouverts !

Catégories
Open-source Planet-libre Reseau

Surveiller son interface réseau avec Ntop

Ntop est une application disponible sous Unix (Linux, FreeBSD, Mac OS X) et Windows qui a pour but d’analyser en temps réel le trafic transitant par une interface réseau. Le résultat de cette analyse peut être consultée par une interface Web et un mode interactif. C’est un outil très utile pour les administrateurs réseaux ou les développeurs afin d’analyser tout problème concernant les flux IP.

Installation

Il est possible de compiler Ntop depuis les sources ou alors, plus simplement, d’installer un package pre-compilé.Par exemple sous Ubuntu:

# sudo apt-get install ntop


Lancement du daemon Ntop

Pour lancer Ntop, il faut saisir la commande suivante:

# sudo ntop -w 3000


On lance Ntop et on lui demande de créer un serveur Web sur le port 3000 (HTTP) pour afficher les résultats.Si vous avez plusieurs interfaces réseaux sur votre machine, vous pouvez utiliser l’option ‘-i interface‘ pour fixer l’interface à surveiller par Ntop.Pour changer le port utilisé par Ntop pour afficher son interface web: ‘-w port HTTP‘ ou ‘-W port HTTPS‘Pour la liste complète des options ‘man ntop‘…

Consultation des résultats

On lance un navigateur Web sur la machine ou l’on a lancé Ntop puis on entre l’URL suivante: http://localhost:3000. La page principale devrait s’afficher (qui correspond au menu Summary/Traffic).

  • On y trouve, des statistiques globales sur l’interface réseau

  • des statistiques détaillées sur l’interface réseau
  • une répartition protocolaire (par exemple entre UDP/TCP/ICMP/IGMP)

  • des graphes par type de trafic (par exemple un graphe sur le trafic HTTP)

  • un graphe résumant tout le trafic
  • et enfin la distribution par ports réseau (TCP et UDP)

En plus de cette page résumant les flux réseaux, il est possible d’avoir des informations beaucoup plus précises en se focalisant sur un protocole ou une machine. Par exemple, si vous observez un trafic broadcast ou multicast sur votre réseau, il suffit de se rendre dans le menu IP/Summary/Multicast de trier par le volume de donnée échangé (Data send) et de cliquer sur le nom de la machine. Une nouvelle page va s’afficher et vous pourrez analyser sur quel port (et donc quelle application) génère ce flux.

Note sur la sécurité

Ntop est un outil à utilisé de manière surveillé sur des réseaux à risque. En effet il est régulièrement attaqué car il proche des couches physiques (librairie de capture de flux) et qu’il fournie des informations sensibles. Je vous conseille donc de l’utiliser seulement en cas de besoin (et non pas en mode daemon avec l’option -d) et d’arrêter le processus Ntop après utilisation.