Vous êtes sur la page 1sur 26

Installation et configuration des serveurs sous Linux

FTP, DNS, SSH, DHCP, NFS Le 22 Mars 2011

INSTALLER UN SERVEUR FTP SOUS LINUX


1. Installer le serveur FTP Pour installer le serveur FTP, tapez: sudo aptitude install vsftpd 2. Configurer le serveur FTP La configuration du serveur FTP se fait en ditant le fichier /etc/vsftpd.conf Pour diter ce fichier, faites: gksu gedit /etc/vsftpd.conf 2.1 Interdire le FTP anonyme Changez la ligne: anonymous_enable=YES en: anonymous_enable=NO 2.2 Autoriser les utilisateurs locaux se connecter Ajoutez: local_enable=YES Cela permettra aux utilisateurs dclars dans Ubuntu d'utiliser le mme login/mot de passe pour accder au serveur FTP. 2.3 Autoriser les utilisateurs uploader des fichiers Ajoutez: write_enable=YES 2.4 Choisir l'interface Par dfaut le serveur FTP sera en coute sur toutes les interfaces. Si vous voulez restreindre - par exemple - uniquement votre rseau local en 10.0.0.x, ajoutez la ligne: listen_address=10.0.0.1 Si l'adresse de IP LAN votre serveur FTP est 10.0.0.1 3. (re)Dmarrer le serveur FTP (re)dmarrez le serveur FTP pour qu'il prenne en compte la configuration que nous venons de modifier. Tapez:

sudo /etc/init.d/vsftpd restart

INSTALLER UN SERVEUR DNS SOUS LINUX


Packages ncessaires l'installation Un DNS (serveur de noms) est un serveur permettant d'associer un nom aux adresses IP des ordinateurs du rseaux. Afin de mettre en place un tel serveur, il est ncessaire d'installer bind et named. Ceux-ci peuvent tre tlchargs sous forme de fichier RPM (dans le cas de la Mandrake il s'agit de bind-8.2.2P51mdk.i586.rpm et nameserver-6.0-3mdk.noarch.rpm, pour d'autres distributions il est possible de les tlcharger sur freshmeat.net ou rpmfind.net) Le serveur tuxserveur (d'adresse IP 192.168.1.1) va tre configur en tant que serveur de noms, afin de permettre aux clients (une machine fonctionnant sous Linux d'adresse IP 192.168.1.20 et une fonctionnant sous Windows d'adresse IP 192.168.1.30 - le masque de sous-rseau est 255.255.255.0) d'accder aux diffrents services portant les alias suivants :

serveur serveur serveur serveur

web : www.tuxdomaine SMTP : smtp.tuxdomaine POP : pop.tuxdomaine de News : news.tuxdomaine

Installation des packages L'installation des packages sous forme de RPM est trs simple. Il suffit de taper les commandes suivantes : rpm -ivh bind-8.2.2P5-1mdk.i586.rpm rpm -ivh caching-nameserver-6.0-3mdk.noarch.rpm Prliminaire Avant de procder la configuration du serveur de nom, il s'agit d'diter le fichier /etc/resolv.conf afin de dclarer le nom de domaine de votre choix (ici tuxdomaine) et dclarer la machine locale (grce l'adresse IP de boucle locale 127.0.0.1) en tant que serveur de nom. Il faut donc s'assurer de la prsence des lignes suivantes dans le fichier /etc/resolv.conf : domain tuxdomaine nameserver 127.0.0.1 Ajout du domaine Aprs avoir install bind et named, il est possible d'attribuer le nom de domaine tuxdomain en ditant le fichier /etc/named.conf : options { directory "/var/named"; }; // // Dclaration de la zone pour la rsolution inverse // zone "0.0.127.in-addr.arpa" { type master; file "named.local"; }; zone "1.168.192.in-addr.arpa" { notify no; type master; file "tuxdomaine.rev"; }; // // Dclaration pour la rsolution de nom du domaine // zone "tuxdomaine" { notify no; type master; file "tuxdomaine"; } La premire partie sert la rsolution inverse, c'est--dire permettre de trouver le nom d'un ordinateur partir de son adresse IP. Cration des fichiers de zone Modifiez ensuite le fichier named.local se trouvant dans le rpertoire /var/named :

@ IN SOA tuxserveur.tuxdomaine. root.tuxserveur.tuxdomaine. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS tuxserveur.tuxdomaine. 1 IN PTR localhost. Crez enfin dans le rpertoire /var/named un fichier tuxdomaine contenant : @ IN SOA tuxserveur.tuxdomaine. root.tuxserveur.tuxdomaine. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum TXT "Serveur DNS primaire" NS tuxserveur NS tuxserveur.tuxdomaine. MX 10 tuxserveur MX 20 tuxserveur.tuxdomaine. localhost A 127.0.0.1 tuxserveur A 192.168.1.1www CNAME tuxserveur smtp CNAME tuxserveur pop CNAME tuxserveurnews CNAME tuxserveur tux A 192.168.1.20 win A 192.168.1.30 ... MX permet de spcifier le nom du serveur SMTP. Ici, notre serveur tuxserveur hberge tous les services. Pour la rsolution inverse, il faut crer un fichier nomm tuxdomaine.rev dans /var/named contenant la table de rsolution inverse : @ IN SOA tuxserveur.tuxdomaine. root.tuxserveur.tuxdomaine. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS tuxserveur.tuxdomaine. 1 IN PTR tuxserveur.tuxdomaine.20 IN PTR tux.tuxdomaine. 30 IN PTR win.tuxdomaine. ... Dmarrage du DNS Le dmon named (un dmon est une application fonctionnant en permanence en arrire plan) peut tre lanc manuellement avec la commande : /etc/rc.d/init.d/named startAfin que le dmon named se lance automatiquement au dmarrage de votre machine, il est utile de crer des liens grce aux commandeschkconfig --level 345 named on chkconfig --level 0126 named off Pour effectuer les tests de bon fonctionnement, il est conseill de "pinger" les autres machines du rseau grce la commande : ping tux

INSTALLER UN SERVEUR SSH SOUS LINUX


Installation du serveur SSH
Si vous voulez accder votre PC depuis un autre endroit vous devez le transformer en serveur au pralable. installez le paquet openssh-server sur votre poste. Par dfaut, il se lance au dmarrage.
Ubuntu 9.10 et antrieur

Pour l'activer aprs une fausse manipulation :


sudo /etc/init.d/ssh start

Pour l'arrter :
sudo /etc/init.d/ssh stop Ubuntu 10.04 et ultrieur

Pour l'activer aprs une fausse manipulation :


sudo service ssh start

Pour l'arrter :
sudo service ssh stop

Installation du client SSH


Sur le poste client (qui va prendre l'accs distance) openssh-client install par dfaut sous Ubuntu doit tre prsent. Si vous devez prendre le contrle sur un poste quip de Windows vous pouvez installerPuTTY qui est disponible sous licence MIT (type BSD).

Copier des fichiers via SSH


Pour copier un fichier partir d'un ordinateur sur un autre avec SSH, vous devrez utiliser la commande scp. Cela ressemblera ceci :
scp <fichier> <username>@<ipaddress>:<DestinationDirectory> scp -6 <lment> <nom>@[addresse ipv6]:<destination>

Ou en termes profanes, si je dsirais copier un fichier d'un de mes ordinateurs l'autre, je procde de cette manire :
scp fichier.txt hornbeck@192.168.1.103:/home/hornbeck scp -6 fichier.txt albertine@[2a01:e35:2431::2a34]:/home/albertine

Ou copier un rpertoire vers un ordinateur :


scp -r rpertoire hornbeck@192.168.1.103:/home/hornbeck/ scp -6r rpertoire/ albertine@[2a01:e35:2431::2a34]:/home/albertine

Vous pouvez aussi bien copier des fichiers partir des ordinateurs distance sur votre disque local :
scp hornbeck@192.168.1.103:/home/hornbeck/urls.txt .

Le point la fin de commande indique de copier le fichier dans le rpertoire courant. Vous pouvez aussi le renommer en le copiant ( mon.txt ) sur le disque local :
scp hornbeck@192.168.1.103:/home/hornbeck/urls.txt ./mon.txt

Vous pouvez trs bien copier un fichier d'un ordinateur vers un autre tout en tant sur un troisime ordinateur :
scp nom@ordi1:chemin/fichier nom@ordi2:chemin/fichier

Se connecter un ordinateur distant via SSH


Pour ouvrir une session sur un ordinateur distant ayant un serveur SSH, vous devez crire quelque chose comme ceci :
ssh <username>@<ipaddress> -p <num_port>

Exemple ssh phyrex@192.168.23.42 -p 12345 L'option -p xxx est facultative. Si rien n'est prcis, c'est le port 22 par dfaut qui sera utilis. Pour se connecter avec ssh en ipv6 depuis un terminal, crire sans crochet
ssh -6 <nom>@<adresse ipv6>

soit par exemple pour un lien internet: ssh -6 alfred@2a01:e35:2431::2e57 Vous pouvez aussi appeler un ordinateur par son nom
ssh utilisateur@nom_machine

partir du moment o celui-ci est rsolu par votre machine.

Cela peut se faire sur le rseau local par le fichier /etc/hosts, ventuellement distribu d'un serveur vers les clients locaux au travers deNIS, ou bien par un service de DNS si vous accdez une machine distante (serveur lou) pour lequel vous avez enregistr un nom de domaine. Parfois les cls de vos correspondants peuvent changer (rinstallation de machine par exemple), vous aurez alors droit ce charmant message :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Please contact your system administrator. Add correct host key in /home/<vous>/.ssh/known_hosts to get rid of this message. Offending key in /home/<vous>/.ssh/known_hosts:4 RSA host key for <ip> has changed and you have requested strict checking. Host key verification failed.

Soit l'information est exacte et une machine a t corrompue, ou bien il s'agit juste d'un changement de cl(rinstallation par exemple) et dans ce cas il faut effacer les entres dans le fichier .ssh/known_hosts de votre compte. Avant la chose tait relativement simple,la cl tait directement associe au nom ou l'IP de la machine cible. Ce n'est plus le cas prsent o elle est associe par UUID rendant quasiment impossible l'identification visuel de la ligne concerne. Mais ssh tant sympathique, il vous indique quelle est la ligne du fichier concerne (dans l'exemple prcdent "Offending key. :4" la cl en erreur est situe ligne 4. Il existe une mthode plus subtile en employant la commande suivante.
ssh-keygen -R <ip>

Vous pourrez ainsi effacer seulement l'adresse IP concerne et relancer un ssh.

Se connecter en ssh travers un proxy http


Il peut arriver (en entreprise, dans un cyber) qu'il y ait un proxy HTTP. Pour initier une connexion vers un poste de l'extrieur il est ncessaire d'utiliser l'outil connect-proxy. Installer le paquet connect-proxy. diter le fichier /etc/ssh/ssh_config pour y ajouter les adresses IP extrieures :
host ip_du_pc_distant ProxyCommand connect-proxy -H adresse.du_proxy:port %h %p

Remplacer ip_du_pc_distant et adresse.du_proxy:port par ce qui convient. Vous pouvez maintenant vous connecter travers votre proxy en toute transparence, avec la commande ssh.

Authentification par mot de passe


L'authentification par mot de passe (transmis chiffr) est le mode d'identification par dfaut. Suite l'installation du paquet openssh-server il peut parfois tre ncessaire de modifier le fichier de configuration sshd_config notamment si vous rencontrez le problme suivant :
moi@maison:~$ ssh user@domain.com Permission denied (publickey).

Dans ce cas, il faut trs basiquement modifier le fichier /etc/ssh/sshd_config de la manire suivante :
# Change to yes to enable tunnelled clear text passwords PasswordAuthentication yes

Puis en cas de modifications, redmarrer le service avec la commande :


sudo /etc/init.d/ssh restart
Modifier

Authentification par un systme de cls publique/priv


Au mois de Mai 2008 a t dcouvert une faiblesse dans la gnration des cls par OpenSSL des packages Debian et drivs tels qu'Ubuntu. Voir la partie "Correction vulnrabilit SSH" pour plus de dtails mais en gros si vous avez gnr vos cls sur Ubuntu entre 2006 et Mai 2008, il faut rgnrer de nouvelles cls aprs avoir mis a jour le systme Autrefois tout le monde employait l'authentification typique via identifiant-mot de passe. Cependant si quelqu'un connat votre mot de passe, la scurit est compromise. Pour tre dbarrass du problme, SSH offre l'Authentification par cl publique/prive au lieu des mots de passe simples . De cette manire, il faut tre en possession de non plus une mais de deux informations pour se connecter (avoir la cl prive & connatre le mot de passe de cette cl). Ceci peut permettre par exemple :

un administrateur de se connecter des centaines de machines sans devoir connatre des centaines de mots de passe diffrents ; de ne pas avoir un mot de passe saisir toutes les 2 minutes (en utilisant ssh-agent).

moins que vous n'ayez dj un couple de cls, vous devez d'abord en crer : exemple pour une cl utilisant le protocole de cryptage DSA. Tapez chez le client :
ssh-keygen -t dsa

Il vous sera alors demand o sauver la cl prive (acceptez juste l'endroit par dfaut : ~/.ssh, et ne changez pas le nom) puis de choisir une passphrase. Bien que non obligatoire, l'utilisation d'unepassphrase est recommand pour protger votre cl prive. En effet toute personne qui obtiendrait l'accs votre cl prive (non protge) aurait alors vos permissions sur d'autres ordinateurs. Veuillez prendre un instant et choisissez une trs bonne passphrase.

Votre clef publique a t cre avec la nouvelle cl prive. Elles sont habituellement localises dans le dossier cach : ~/.ssh/id_dsa.pub pour la cl publique et ~/.ssh/id_dsa pour la cl priv. Il faut maintenant envoyer au serveur votre cl publique pour qu'il puisse vous chiffrer des messages. L'utilisateur distant doit avoir cette cl (c'est une ligne de caractres en code ASCII) dans son fichier de cl d'autorisation situ ~/.ssh/authorized_keys sur le systme distant. Employez la commande ssh-copy-id. ssh-copy-id est un script qui utilise ssh pour se connecter une machine distance en utilisant le mot de passe de l'utilisateur. L'authentification par mot de passe "PasswordAuthentication yes" doit donc tre autorise dans le fichier de configuration du serveur ssh (par dfaut sur ubuntu). Il change galement les permissions des rpertoires : ~/.ssh, et ~/.ssh/authorized_keys de l'hte distant pour enlever l'accs en criture du groupe (qui vous empcherait de vous connecter si le serveur distant ssh a "StrictModes yes" dans son fichier de configuration, ce qui est le cas par dfaut sur ubuntu).
ssh-copy-id -i ~/.ssh/id_dsa.pub <username>@<ipaddress>

ou si le port est diffrent du port standard 22


ssh-copy-id -i ~/.ssh/id_dsa.pub "<username>@<ipaddress> -p <num_port>"

Vous devrez alors donner le mot de passe utilisateur de cet ordinateur. Aprs que votre cl publique a t ajoute, vous devenez un hte de confiance. Si l'authentification par mot de passe est dsactive, alors vous aurez besoin de copier-coller votre cl suivant un autre moyen. Voici une ligne copier pour ajouter sa cl publique sur le serveur distant :
ssh login@serveur "echo $(cat ~/.ssh/id_dsa.pub) >> .ssh/authorized_keys"

Lancez :
ssh <username>@<ipaddress> -p <num_port>

Dornavant n'utilisez plus votre mot de passe mais votre passphrase pour vous connecter. Il y a une diffrence entre votre mot de passe et la passphrase. Le mot de passe est situ dans /etc/passwd du systme distant alors que la passphrase sert dchiffrer votre cl prive de votre systme local. Si a ne marche pas, c'est dire que le mot de passe vous est quand mme demand, essayez sur votre serveur la commande :
tail -f /var/log/auth.log

tandis que vous essayez de vous connecter. Si on vous parle de "vulnkey", c'est que par malchance ssh-keygen a gnr une cl vulnrable. Recommencez alors la manipulation partir de ssh-keygen

Pour reprendre, deux choses sont ncessaires pour obtenir un accs rellement scurisant (et scuris ) par authentification cl publique par rapport l'authentification par mot de passe classique : 1. Votre cl prive, chiffre ; 2. Votre passphrase, utilise pour dchiffrer votre cl prive. Si vous choisissez de ne pas avoir de mot de passe (ce qui est possible, voyez la prochaine section), vous aurez une scurit moindre, ainsi que si vous utilisez une authentification uniquement par mot de passe, compar celle que vous pouvez avoir en combinant les deux. Vous pouvez vouloir neutraliser l'authentification par mot de passe pour des raisons de scurit en plaant dans le fichier de configuration /etc/ssh/sshd_config la ligne PasswordAuthentication no (et nepas avoir UsePAM yes !, ou autrement dit en mettant galement UsePAM no ). N'oubliez pas de relancer votre serveur sshd aprs avoir chang la configuration :
sudo /etc/init.d/ssh restart

Si aprs avoir suivi ce tutoriel un mot de passe est toujours demand, il se peut que ce soit d un problme de droits sur votre 'home directory'. Sur la machine distante regardez le fichier :
tail /var/log/auth.log

Plus d'indications vous seront donn dedans, et si la ligne suivante apparait :


Authentication refused: /home/votre_login bad ownership or modes for directory

Alors faites :
chmod 755 $HOME

Et tout devrait rentrer dans l'ordre. Si ce n'est toujours pas le cas, c'est que le serveur doit tre configur en mode de scurit strict (c'est le cas par dfaut sur Ubuntu), on peut avoir des problmes se connecter sans mot de passe. Sur le serveur dans /etc/ssh/sshd_config , la ligne "StrictModes yes" indique que le serveur va tre trs pointilleux sur les droits du compte sur lequel on se connecte en ssh. Sur le client, dans /etc/ssh/ssh_config, rajoutez la ligne "PreferredAuthentications publickey"
server$ chmod go-w ~/ server$ chmod 700 ~/.ssh server$ chmod 600 ~/.ssh/authorized_keys

Authentification ssh avec plusieurs cls prives


Lorsque que l'on se connecte plusieurs serveur, certains avec cl crypte, d'autre avec cl en clair, il faut pouvoir indiquer ssh quelle cl on veut utiliser pour la connexion. Pour indiquer au client ssh la cl qu'il doit utiliser pour chacun des serveurs il faut crer le fichier ~/.ssh/config (ou /etc/ssh/ssh_config pour tous les utilisateurs de la machine) dans lequel il faut spcifier pour chacun des serveurs la cl qui doit tre utilise :
Host adresse-server-sans-passphrase.com IdentityFile ~/.ssh/key-sans-passphrase Host adresse-server-avec-passphrase.com IdentityFile ~/.ssh/key-avec-passphrase

Pour plus d'options, comme l'utilisateur ou le port utiliser par dfaut, voir la commande man ssh_config

Restriction d'accs SSH


Quand on utilise SSH avec l'authentification par cl, il y a d'autres dispositions. Le serveur distant peut limiter l'utilisation de certaines commandes permises. Si vous maintenez un dpt CVS, vous pourriez utiliser des lignes comme ceci dans le fichier authorized_keys2 :
command="/usr/bin/cvs server" ssh-dss AAAAB3N....

Ceci permettrait que seule cette commande puisse tre utilise. Rien d'autre.

Accs automatique pour des scripts


L'authentification par cl publique (voir ci-dessus) peut galement tre employe pour automatiser les tches qui exigeraient habituellement l'introduction au clavier d'un mot de passe. Imaginez vouloir copier un dossier partir d'un ordinateur distant tous les jours minuit. Tout ce que vous avez faire c'est d'tablir la confiance entre ces deux ordinateurs. Crez un compte de service sur un ordinateur, crez une paire de cl (ssh-keygen -t dsa) et quand on vous demande de rentrer la passphrase taper juste sur la touche Entre . Ceci fera que votre cl priv ne sera pas protge. Ajoutez la cl publique de l'autre ordinateur dans le fichier authorized_keys ( ssh-copy-id ). Maintenant vous pouvez utiliser SSH sur cette machine sans une passphrase taper. Ajoutez une rfrence SSH dans votre crontab et vous tes prt. Avoir une clef prive non protge peut tre un trou de scurit. Les intrus devront seulement obtenir l'accs la cl prive et pourront accder aux ordinateurs distants.

Utiliser le ssh-agent
Si vous devez frquemment copier des fichiers avec SSH ou accder d'autres ordinateurs de votre rseau (ce qui est une tche commune pour des administrateurs), vous vous demandez probablement s'il y a une manire de simplifier l'utilisation de la passphrase. En fait il y

a SSH agent. Vous devez seulement entrer votre passphrase une fois en employant ssh-add et tout ce que vous commencez comme sous-processus de SSH agent se rappellera cette passphrase. Trop thorique ? Bien, vous n'aurez pas besoin de vous inquiter de l'agent. Votre session X est prte pour avoir le ssh-agent en session automatiquement. Tout ce que vous devez faire c'est lancer ssh-add et saisir votre passphrase. La prochaine fois que vous utiliserez SSH pour accder un autre ordinateur, vous n'aurez pas entrer nouveau votre passphrase. Cool, non ?

Vous devrez bloquer votre session pendant vos absences car d'autres pourraient accder aux ordinateurs distants partir de votre machine sans savoir votre passphrase. Si vous voulez rentrer votre passphrase une fois juste aprs l'ouverture de session, vous pouvez ajouter un appel ssh-addcomme ceci : o Cliquez sur Systme Prferences Sessions Programme au dmarrage. o Cliquez sur Ajouter . o Entrez la commande ssh-add .

la prochaine ouverture de session, vous devrez taper votre passphrase.

Le fichier de configuration du serveur SSH


Par dfaut, la configuration du serveur SSH (fichier /etc/ssh/sshd_config , dition via sudo comme il se doit) d'Ubuntu est suffisante :
PermitRootLogin yes

Si ce n'tait pas sous Ubuntu ce serait une trs grosse faille de scurit, mais qui pourrait vouloir affecter un mot de passe root ?
#Banner /etc/issue.net

Vous pouvez dcommenter (c'est--dire enlever le # ) cette ligne. Effet : lorsque vous essayez de vous connecter votre serveur par SSH, le fichier /etc/issue.net est affich ( vous de le personnaliser).
#MaxStartups 10:30:60

Vous pouvez aussi dcommenter cette ligne, effet : le 10 reprsente le nombre de connexions acceptes sans qu'un utilisateur ait russi s'identifier, si cela passe au dessus de 10, il y a 30 % de chances que les suivantes soient bloques, et ce pourcentage augmente linairement jusqu' 100 % lorsque le full est atteint, 60 connexions. Trs utile pour viter ce genre de dsagrment.
AllowUsers alice bob

Ligne ajouter, spcifie les logins des seuls utilisateurs (ici seuls Alice et Bob, pas Carole) autoriss se connecter. Idal pour ouvrir un compte FTP un ami tout en restreignant l'accs au Shell via SSH.
PasswordAuthentication no

Passez de "yes" "no" pour interdire l'utilisation du mot de passe et forcer l'usage de jeux de clefs public/priv (plus sr).

Utiliser SSH pour faire du SFTP (Transfert de fichier scuris)


Vous pouvez :

utiliser MySecureShell (s'installe en plus de openssh-server), simplement le mode natif de openssh, Suivre ce tutorial qui limite l'utilisation du ssh au sftp pour des utilisateurs donns sftp avec openssh et AppArmor (en).

Tunnliser sa connexion internet par SSH avec l'aide de Squid


Tunnliser sa connexion web est trs utile dans quelques situations :

l'admin du rseau o vous tes vous empche d'accder certains sites ; votre connexion web est peu ou pas scurise (wifi sans encryption ou par encryption wep).

On va donc installer le serveur de mdiation Squid (serveur proxy, mandataire) sur une machine Ubuntu (qui sera le serveur) laquelle on accdera par une machine distante possdant un client SSH et un navigateur Web. Dans l'exemple prsent, ce sera un client sous Windows. On obtiendra alors un accs scuris un proxy distant (le serveur sous Ubuntu) qui se connectera aux sites web et renverra le rsultat votre navigateur.

Partie serveur
Premirement, il faut installer le programme Squid. Le paquet installer est squid. Normalement si tout se droule bien, Squid devrait tre fonctionnel. Il est probable qu'une erreur arrive car le programme de configuration n'arrivera pas trouver le nom d'hte de la machine. Il faut donc ouvrir le fichier de configuration de Squid et lui indiquer que la machine n'a pas de nom d'hte. On ouvre le fichier de configuration /etc/squid/squid.conf et on ajoute cette ligne :
visible_hostname none

Aprs l'enregistrement du fichier de configuration, vous pouvez normalement gnrer les rpertoires qui contiendront le cache de Squid par la commande :
sudo squid -z

Grce SSH, les connexions reues par Squid seront des connexions provenant du serveur luimme. Mais par dfaut, Squid n'accepte que les connexions loopback. On devrait alors quand mme ajouter une autorisation pour l'adresse IP non loopback (127.0.0.1) du serveur. Vous ouvrez donc le fichier de configuration et vous ajoutez ces deux lignes :

acl ordi src 192.168.1.1 http_access allow ordi

Dans l'exemple, ordi est le nom que j'ai donn la rgle et 192.168.1.1 est l'adresse IP locale de mon ordinateur. Vous pouvez donc maintenant dmarrer Squid par :
sudo squid start

ou le redmarrer par
sudo squid reload

Squid est normalement prt recevoir les connexions venant de la machine hte.

Tunnliser sa connexion internet par SSH (sans Squid)


La partie prcdente consiste installer un proxy HTTP sur le serveur et de s'y connecter via SSH. Cependant, SSH lui-mme peut jouer le rle de proxy, ce qui vite l'installation d'un logiciel supplmentaire.

Partie serveur
Il n'y a en principe rien faire. Cette fonctionnalit est active par dfaut sous Ubuntu.

Partie client
Cette fois, le proxy est de type SOCKS ( prendre en compte lors de la configuration du navigateur) Sous Windows, avec Putty La configuration est la mme que dans la partie prcdente, sauf qu'il faut cocher la case "dynamic". La case "destination" n'est pas prise en compte et peut rester vide. Sous Linux (dont Ubuntu) Utiliser la commande ssh avec l'option -D :
# Ouverture d'un tunnel ssh (sur le port 1234 local) vers un serveur qui autorise la connexion # le port (1234 dans cet exemple) est choisi arbitrairement, tant qu'il n'est pas utilis pour autre chose ssh -D 1234 monuser@monserver.net

Configurer ensuite le navigateur, gestionnaire de courrier, ., pour utiliser un proxy type SOCKS 5, adresse: localhost, port: 1234 (selon ce que vous avez utilis ci dessus) La connexion fonctionnera tant que le tunnel restera ouvert (si vous fermez le terminal ayant servi ouvrir le tunnel, vous fermerez le tunnel) Pour vous assurer que le tunnel remplit son office, affichez une page telle que http://www.monip.org et constatez que l'IP affiche n'est pas la mme que lorsque vous naviguez sans proxy.

Vous pouvez ouvrir plusieurs tunnels utilisant des ports diffrents ou des utilisateurs diffrents. Ainsi, la navigation peut utiliser un tunnel vers un serveur, la messagerie un tunnel vers un autre serveur, etc. Il est possible aussi d'utiliser un navigateur passant par le tunnel et un autre navigateur sortant directement.

Dlai lors de la connexion


Si vous avez un dlai de plusieurs secondes avant que la connexion SSH ne se fasse, essayez d'ajouter ceci votre fichier ~/.ssh/config
GSSAPIAuthentication no

Ceci dsactive l'identification par GSSAPI qui engendre parfois des dlais lorsqu'elle n'est pas utilise. (Source : http://www.refreshinglyblue.com/2007/5/18/long-delay-before-sshauthentication)
Modifier

Correction vulnrabilit SSH


Le 14 mai 2008, une mise jour de scurit de ssh dans les dpts signale qu'une vulnrabilit a lieu dans le gnrateur de nombres alatoires utilis pour gnrer les cls. Il faut donc regnrer ses cls aprs avoir fait la mise jour et redmarrer. Vu que la mise jour regnre automatiquement les cls pour la machine, il ne reste plus qu' modifier les cls persos (pour les users) aprs un reboot. Sur les pc clients :
rm ~/.ssh/known_hosts

Sur les pc serveurs :


rm ~/.ssh/authorized_keys

Puis, pour une authentification par cls, partir du poste client :


ssh-keygen -t dsa scp ~/.ssh/id_dsa.pub leserveur:.ssh/authorized_keys

Pour vrifier: Installer openssh-blacklist et openssh-blacklist-extra.


ssh-vulnkey

Si aucune cl n'est COMPROMISE, c'est ok :)

INSTALLER UN SERVEUR NFS SOUS LINUX


Pr-requis
Deux ordinateurs fonctionnant avec GNU/Linux
Serveur sur lequel se trouvent les fichiers partager, et Clientqui doit pouvoir accder aux fichiers de Serveur. N'importe quel ordinateur peut tre serveur ou client, ou les deux.

Avoir les droits d'administration sur les deux machines


Voir ici de quoi il est question et en particulier la commande sudo .

Ne pas avoir peur de la ligne de commande


Voir ici les bases du terminal.

Connatre les adresses IP locales de Serveur et de Client


Dans le terminal lancer ifconfig , l'adresse est la ligne inet adr: , paragraphe eth si vous tes connect en ethernet, wlan pour une connexion Wi-Fi. Pour la suite de cet exemple, on considrera que Serveur et Client ont une adresse locale fixe :

Serveur : 192.168.1.1 Client : 192.168.1.2

On peut fixer l'IP locale

Soit partir de l'interface du routeur / de la *box. Ouvrez Firefox, et tapez dans la barre d'adresse celle donne dans le mode d'emploi du routeur / de la *box (le login et le mot de passe y sont aussi). Plus d'infos. Soit directement d'Ubuntu .

Se faire un aide-mmoire
Pour la suite du tutoriel, les commandes seront donnes avec des informations fictives (en gras dans le tableau ci-dessous), vous les remplacerez par les donnes relles de vos machines.

Les machines IP locales

Points de montage des fichiers

Serveur

192.168.1.1

/Fichiers__partager_sur_Serveur

Votre serveur IP de votre serveur Exemple : /home/Votre_Nom_d'Utilisateur_sur_Votre_Serveur

Client

192.168.1.2

/Point_de_montage_sur_Client

Votre client

IP de votre client

Exemple : /home/Nom_d'Utilisateur_sur_le_Client/Partage

Installer NFS
Installer les paquets :

Pour Serveur, nfs-kernel-server et nfs-common. Pour Client, seulement nfs-common.

tape 1 - Serveur donne Client le droit de lire et crire sur ses fichiers
Sur Serveur donc, il faut ouvrir ou crer le fichier /etc/exports et y saisir cette ligne :
# Dossier partag : /Fichiers__partager_sur_Serveur/ 192.168.1.2(rw,all_squash,anonuid=1000,anongid=1000,sync)

Explications sur les options de cette commande. Ceci donne l'accs complet aux fichiers de Serveur, ce qui veut dire que Client (ou l'humain qui l'utilise) peut supprimer dfinitivement ce qu'il veut. Pour ne donner l'accs qu'en lecture seule, il suffit de supprimer l'option rwde /etc/exports. Il est galement possible de slectionner les dossiers partager :

En crant un rpertoire /home/agora et en y enregistrant les fichiers partager. Ou en crant autant de lignes dans le fichier /etc/exports de Serveur que de dossiers partager et en adaptant en consquence la configuration de Client.

Il faut ensuite dmarrer le serveur NFS (toujours sur Serveur) :


sudo /etc/init.d/nfs-kernel-server start

Si vous modifiez le fichier /etc/exports n'oubliez pas de relancer le serveur NFS par la commande suivante :
sudo /etc/init.d/nfs-kernel-server restart

tape 2 - Client se prpare recevoir les fichiers de Serveurs


1. D'abord crer un rpertoire sur Client o vont s'installer les fichiers de Serveur : sudo mkdir /Point_de_montage_sur_Client

Plus d'infos sur la commande mkdir.

Par exemple :
sudo mkdir /home/Nom_d'Utilisateur_sur_le_Client/Partage 2. Ensuite dterminer ce rpertoire comme point de montage sur Client :

Prsentation de la notion de point de montage et du fichier fstab et ses options. Ajoutez cette ligne au fichier /etc/fstab de Client : Attention : Le fichier fstab est un fichier trs important pour le bon fonctionnement de votre ordinateur. Prenez bien soin d'ajouter simplement la ligne suivante (en l'adaptant) en bas du fichier sans modifier ce qu'il contient dj.
192.168.1.1:/Fichiers__partager_sur_Serveur nfs user,noauto 0 0 /Point_de_montage_sur_Client

L'option noauto interdit le montage automatique. L'option user autorise tous les utilisateurs procder au montage. Les options sont choisir en fonction du mode d'accs souhait pour le partage : liste et usage des options de montage. Dans le cadre de ce tutoriel, les options noauto et user sont obligatoires pour l'automatisation du montage l'ouverture de la session, telle que dtaille dans un prochain chapitre.

tape 3 - Serveur rgle la scurit du partage


1. D'abord interdire tout :

Sur Serveur donc, ouvrez ou crez le fichier /etc/hosts.deny, et copiez-y ces lignes :
# Tout interdire sur portmap:ALL nfsd:ALL mountd:ALL portmap, nfsd et mountd

2. Ensuite autoriser les changes voulus :

Toujours sur Serveur, ouvrez ou crez le fichier /etc/hosts.allow, et enregistrez-y ces lignes (en adaptant bien sr les IP) :
#Autoriser ce client se connecter aux services (essentiellement : portmap, nfsd et mountd) : portmap: 192.168.1.2 lockd: 192.168.1.2 nfsd: 192.168.1.2 mountd: 192.168.1.2 rquotad: 192.168.1.2 statd: 192.168.1.2

Il est possible d'autoriser plusieurs clients,

En dfinissant une plage, par exemple : 192.168.0.0/192.168.0.20 En listant les IP locales autorises (spares par des espaces), comme par exemple : 192.168.0.1 192.168.0.3 192.168.0.8 Ou encore en utilisant la syntaxe 192.168. qui autorise toutes les machines dont l'IP locale commence par 192.168. se connecter.

Remarque : certaines installations (debian squeeze par exemple) limitent les accs portmap en local. Pour modifier cette configuration : dpkg-reconfigure portmap

tape 4 - Client automatise l'accs aux fichiers de Serveurs


Pour que le montage de /Point_de_montage_sur_Client fonctionne, il faut bien sr que Serveur soit allum et que Client et Serveur soient connects. Sur Client donc, crez le fichier /usr/bin/Monter_le_partage_NFS (o Monter_le_partage_NFS peut tre remplac par ce que vous voulez), et enregistrez-y ces lignes :
#!/bin/bash sleep 15 mount /Point_de_montage_sur_Client

N'oubliez pas de rendre ce fichier excutable, via l'interface graphique ou en ligne de commande dans un terminal:
$ sudo chmod 755 /usr/bin/Monter_le_partage_NFS

La commande sleep sert retarder l'action, de manire ce que la connexion de Client ait le temps de s'activer, ce qui peut tre pertinent, en particulier dans le cas d'une connexion sans fil. Vous pouvez adapter la valeur. Pour que le montage soit vraiment automatique il suffit d'ajouter la commande/usr/bin/Monter_le_partage_NFS aux programmes qui sont lancs automatiquement l'ouverture de session. Ce qui se fait en mode graphique de manires diffrentes selon les versions d'Ubuntu. chercher donc dans les prfrences du systme ou de la session de Client. Il existe aussi la possibilit d'utiliser autofs.

Rsolution de problmes
1. La premire chose faire est de vrifier si vous avez bien suivi ce tuto sans faire d'erreur.

En particulier dans les fichiers de configuration qui sont sensibles la casse. C'est le moment de ressortir le pense-bte pour pointer toutes les actions, en reprenant pas pas le tuto. Quelques questions se poser pour guider sa recherche d'erreur :

N'ai-je pas oubli une majuscule ? N'y a-t-il pas eu change de rle entre Client et Serveur (cause frquente d'erreurs) ? Ai-je bien mis tous les points des adresses IP ?

N'ai-je pas chang un 0 pour un 1 dans cette IP-l ? Ne manque-t-il pas une espace ici ?

2. Relancer le serveur NFS de Serveur.

faire sur Serveur


sudo /etc/init.d/nfs-kernel-server restart

Si vous obtenez une erreur faites une recherche avec le message sur le forum Ubuntu.
3. Vrifier si Client a bien accs aux fichiers de Serveur.

faire sur Client


showmount -e 192.168.1.1

Cette commande doit retourner quelque chose comme :


Export list for 192.168.1.1: /home/Fichiers__partager_sur_Serveur 192.168.1.2

Sinon vrifier tout particulirement les fichiers /etc/exports et /etc/hosts.allow de Serveur.


4. Tester manuellement le montage sur Client.

faire sur Client Lancez cette commande :


sudo mount -t nfs -o rw 192.168.1.1:/Fichiers__partager_sur_Serveur /Point_de_montage_sur_Client

Si vous n'obtenez pas de message d'erreur, c'est que le montage se fait bien manuellement. Vrifier tout particulirement les fichiers /etc/fstab et /usr/bin/Monter_le_partage_NFS de Client. Si vous obtenez une erreur, faites une recherche avec le message sur le forum Ubuntu.
5. Configurer le pare-feu.

Il arrive que sur certaines configurations, le pare-feu bloque les changes ncessaires au bon fonctionnement de NFS. Cela ne devrait pas tre le cas sur Ubuntu, sauf si vous avez personnalis les rgles du pare-feu. Cela peut galement provenir du routeur (*box). Dans ces deux cas, voici ce qu'il vous faut paramtrer. Et ici de l'aide pour configurer sa *box.
6. Demander de l'aide.

Si, malgr tout, votre partage NFS ne fonctionne toujours pas, vous pouvez demander de l'aide sur le forum, en suivant ces rgles pour avoir de meilleures chances d'tre secouru. Dans le cas prcis d'un problme avec NFS, donnez :

Les IP du client et du serveur (prcisez si elles sont fixes), le dossier partager du serveur et le point de montage du client.

Donnez en priorit le rsultat des commandes qui aboutissent des erreurs. Donnez galement le contenu des fichiers /etc/exports, /etc/hosts.denyet /etc/hosts.allow de votre serveur, et le fichier /etc/fstab de votre client.

INSTALLER UN SERVEUR DHCP SOUS LINUX

Comment configurer un serveur lger dns et dhcp alias Dnsmasq ?


DnsMasq est un petit serveur DNS (cache DNS) qui intgre un serveur DHCP. Peu gourmand en ressources et trs simple configurer, il est bien adapt une installation sur une solution embarque telle quun routeur ou point daccs wifi (sous OpenWRT par exemple ; - ) Pour la rsolution des noms, il se base sur les DNS dclars dans la configuration rseau (/etc/resolv.conf) ou sur le fichier /etc/hosts. Ce qui est bien pratique pour configurer une petite zone lan : il suffit dditer le fichiers hosts comme nous le ferions pour une seule machine. Ct serveur DHCP, il nous faut faire un minimum de conf Cela se passe dans le fichier /etc/dnsmasq.conf A minima, nous devrions configurer la plage dhcp, ladresse dun serveur DNS et une route par dfaut (gateway).

Installation
On crit dans un terminal :
sudo apt-get install dnsmasq

Ou on clique ici : apt://dnsmasq

Configuration
Pour le configurer on dite le fichier : /etc/dnsmasq.conf Un exemple de dnsmasq pour un simple rseau :
domain-needed bogus-priv filterwin2k localise-queries local=/lan/ domain=linet.jopa.fr expand-hosts

no-negcache resolv-file=/tmp/resolv.conf.auto dhcp-authoritative dhcp-leasefile=/tmp/dhcp.leases # use /etc/ethers for static hosts; same format as --dhcp-host read-ethers # Plage DHCP dhcp-range=192.168.1.100,192.168.1.150,12h # Netmask dhcp-option=1,255.255.255.0 # Route dhcp-option=3,192.168.1.1

On dite le fichier /etc/resolv.conf


# Le nom de domain local (n'existe pas sur internet) domain local.lan # O les clients doivent chercher les pc sur le rseau local search local.lan # Serveur dns primaire fourni par mon provideur nameserver 195.238.2.21 # Serveur dns secondaire fourni par mon provideur nameserver 195.238.2.22

On dite le fichier /etc/hosts


127.0.0.1 127.0.1.1 192.168.1.1 192.168.1.1 localhost client-desktop mail mail.local.lan

Dans l'exemple ci-dessus,l'ordinateur sur le rseau local 192.168.1.1 aura comme nom dns mail et mail.local.lan. Pas besoin d'ajouter tous les ordinateurs, ceux ayant fait une demande dhcp auront leur nom dns directement configur.

Application de la nouvelle configuration


On tape dans un terminal :
sudo /etc/init.d/dnsmasq restart

Plus d'info sur le fichier : /etc/dnsmasq.conf


Quelques explications sur les options utilises. Il en existe bien dautres, je vous invite consulter le man pour approfondir le sujet Ce qui suit en est largement inspir domain-needed : Ne transmet pas les requtes ne contenant pas un nom de domaine complet. Par exemple,une requte pour machine ne sera pas transmise aux serveurs DNS de votre FAI, alors quune requte pour machine.domain.com le sera.

bogus-priv : Fausse rsolution inverse pour les rseaux privs. Toutes les requtes DNS inverses pour des adresses IP prives (ie 192.168.x.x, etc) qui ne sont pas trouves dans /etc/hosts ou dans le fichier de baux DHCP se voient retournes une rponse pas de tel domaine (no such domain) au lieu dtre transmises aux serveurs de nom amont (upstream server). filter-win2k : Les dernires versions de windows font des requtes DNS priodiques auxquelles non seulement les serveurs DNS publics ne peuvent donner de rponse, mais qui, de surcrot, peuvent poser des problmes en dclenchant des connexions intempestives pour des liens rseaux avec des connexions la demande. Fournir cette option active le filtrage des requtes de ce type. Les requtes bloques sont les requtes pour les entres de type SOA ou SRV, ainsi que les requtes de type ANY avec des noms possdant des caractres sous-ligns (requtes pour des serveurs LDAP). localise-query : Retourne des rponses aux requtes DNS dpendantes de linterface sur laquelle la requte a t reue, partir du fichier /etc/hosts. Si un nom dans /etc/hosts a plus dune adresse associe avec lui, et quune des adresses au moins est dans le mme sousrseau que linterface sur laquelle la requte a t reue, alors ne retourne que la(les) adresse(s) du sous-rseau considr. Cela permet davoir dans /etc/hosts un serveur avec de multiples adresses, une pour chacune de ses interfaces, et de fournir aux htes ladresse correcte (base sur le rseau auquel ils sont attachs). Cette possibilit est actuellement limite IPv4. domain : Spcifie le domaine utilis pour tendre la recherche de noms sans domaine. Utilis galement pour attribuer un domaine de recherche au clients DHCP. expand-hosts : Ajoute le nom de domaine aux noms simples (ne contenant pas de point dans le nom) contenus dans le fichier /etc/hosts, de la mme faon que pour le service DHCP. no-negcache : Dsactive le cache ngatif. Le cache ngatif permet Dnsmasq de se souvenir des rponses de type no such domain fournies par les serveurs DNS en amont et de fournir les rponses sans avoir re-transmettre les requtes aux serveurs amont. interface=eth0 : Indique quel carte rseaux est a l'coute des requetes DHCP. resolv-file : Lis les adresses des serveurs de nom amont dans le fichier de nom <fichier>, au lieu du fichier /etc/resolv.conf. Pour le format de ce fichier, voir dans le manuel pour resolv.conf(5) les entres correspondant aux serveurs de noms (nameserver). Dnsmasq peut lire plusieurs fichiers de type resolv.conf, le premier fichier spcifi remplace le fichier par dfaut, le contenu des suivants est rajout dans la liste des fichiers consulter. Seul le fichier ayant la dernire date de modification sera charg en mmoire. dhcp-autoritative : Cette option doit tre donne lorsque Dnsmasq est le seul serveur DHCP sur le rseau. Cela change le comportement par dfaut qui est celui dun strict respect des RFC, afin que les requtes DHCP pour des baux inconnus par des htes inconnus ne soient pas ignores. Cela permet de nouveaux htes dobtenir des baux sans tenir compte de fastidieuses temporisations (timeout). Cela permet galement Dnsmasq de reconstruire sa base de donne contenant les baux sans que les clients naient besoin de redemander un bail, si celle-ci est perdue. dhcp-leasefile : Utilise le fichier dont le chemin est fourni pour stocker les informations de baux DHCP. Si cette option est fournie mais quaucune option de type dhcp-range nest donne, alors un comportement de type Dnsmasq version 1 est activ. Le fichier fourni est suppos tre

un fichier de baux DHCP de type ISC DHCPD et est parcouru la recherche de baux contenant des noms dhtes. Les noms trouvs sont rajouts au DNS. Cette fonctionalit peut tre exclue de Dnsmasq la compilation, auquel cas une erreur sera produite. Il est noter que lintgration avec un fichier de baux au format ISC est une fonctionalit obsolte. Elle ne devrait pas tre utilise dans les nouvelles installations et sera retire dans une future version. read-ethers : Lis les informations dhtes DHCP dans le fichier /etc/ethers. Le format de /etc/ethers est une adresse matrielle suivie, soit par un nom dhte, soit par une adresse IP sous la forme de 4 chiffres spars par des points. Lorsque lu par Dnsmasq, ces lignes ont exactement le mme effet que loption dhcp-host contenant les mmes informations. /etc/ethers est relu la rception dun signal SIGHUP par Dnsmasq. dhcp-range=adresse de dbut,adresse de fin,dure de bail par dfaut : Active le serveur DHCP. Les adresses seront donnes dans la plage comprise entre adresse de dbut et adresse de fin et partir des adresses dfinies statiquement dans loption dhcphost.DHCP sur plus dun rseau. Pour des rseaux directement connects (cest--dire des rseaux dans lesquels la machine sur laquelle tourne Dnsmasq possde une interface), le masque de rseau est optionnel. Il est par contre requis pour les rseaux pour lesquels le service DHCP se fait via un relais DHCP (relay agent).Si une dure de bail est donne, alors les baux seront donns pour cette dure. La dure de bail est donne en secondes, en minutes (exemple : 45m), en heures (exemple : 1h) ou tre la chaine de caractre infinite pour une dure indtermine. Cette option peut tre rpte, avec diffrentes adresses, pour activer le service. dhcpoption=[<identifiant_de_rseau>,[<identifiant_de_rseau>,]][vendor:[<classe_vendeur>],][ <opt>|option:<nom d'option>],[<valeur>[,<valeur>]] : Spcifie des options diffrentes ou supplmentaires pour des clients DHCP. Par dfaut, Dnsmasq envoie un ensemble standard doptions aux clients DHCP : le masque de rseau et ladresse de broadcast sont les mmes que pour lhte sur lequel tourne Dnsmasq, et le serveur DNS ainsi que la route par dfaut prennent comme valeur ladresse de la machine sur laquelle tourne Dnsmasq. Si une option de nom de domaine a t dfinie, son contenu est transmis. Cette option de configuration permet de changer toutes ces valeurs par dfaut, ou de spcifier dautres options. Loption DHCP transmettre peut tre fournie sous forme dun nombre dcimal ou sous la forme option:<nom doption>. Les nombres correspondants aux options sont dfinis dans la RFC2132 et suivants. Les noms doptions connus par Dnsmasq peuvent tre obtenus via Dnsmasq help dhcp. Par exemple, pour dfinir la route par dfaut 192.168.4.4, il est possible de faire dhcpoption=3,192.168.4.4dhcp-option = option:router, 192.168.4.4 ou encore, pour positionner ladresse du serveurdhcp-option = 42,192.168.0.4 ou dhcp-option = option:ntp-server, 192.168.0.4 Ladresse 0.0.0.0 prends ici le sens dadresse de la machine sur laquelle tourne Dnsmasq. Les types de donnes autorises sont des adresses IP sous la forme de 4 chiffres spars par des points, un nombre dcimal, une liste de caractres hexadcimaux spars par des 2 points, ou une chane de caractres. Si des identifiants de rseaux sont fournis, alors cette option nest envoye quaux rseaux dont tous les identifiants concident. Un traitement spcial est effectu sur les chanes de caractres fournies pour loption 119, conformment la RFC 3397. Les chanes de caractres ou les adresses IP sous forme de 4 chiffres spars par des points donns en arguments de loption 120 sont traits conformments la RFC 3361. Les adresses IP sous forme de 4 chiffres spars par des points suivies par une barre montante /, puis une taille de masque sont encods conformments la RFC 3442.

Attention : aucun test ntant fait pour vrifier que des donnes dun type adquat sont envoyes pour un numro doption donn, il est tout fait possible de persuader Dnsmasq de gnrer des paquets DHCPillgaux par une utilisation incorrecte de cette option. Lorsque la valeur est un nombre dcimal, Dnsmasq doit dterminer la taille des donnes. Cela est fait en examinant le numro de loption et/ou la valeur, mais peut-tre vit en rajoutant un suffixe dune lettre comme suit : b = un octet, s = 2 octets, i = 4 octets. Cela sert essentiellement pour des options encapsules de classes de vendeurs (voir plus bas), pour lesquelles Dnsmasq ne peut dterminer la taille de la valeur. Les donnes doptions consistant uniquement de points et de dcimaux sont interprtes par Dnsmasq comme des adresses IP, et envoyes comme telles. Pour forcer lenvoi sous forme de chane de caractre, il est ncessaire dutiliser des guillemets doubles. Par exemple, lutilisation de loption 66 pour fournir une adresse IP sous la forme dune chane de caractres comme nom de serveur TFTP, il est ncessaire de faire comme suit : dhcp-option=66,1.2.3.4 Les options encapsules de classes de vendeurs peuvent-tre aussi spcifies en utilisant dhcp-option : par exemple dhcp-option=vendor:PXEClient,1,0.0.0.0 envoie loption encapsule de classe de vendeur mftp-address=0.0.0.0 nimporte quel client dont la classe de vendeur correspond PXEClient. La correspondance pour les classes de vendeur seffectue sur des sous-chanes de caractres (voir dhcp-vendorclass pour plus de dtails). Si une option de classe de vendeur (numro 60) est envoye par Dnsmasq, alors cela est utilis pour slectionner les options encapsules, de prfrence toute option envoye par le client. Il est possible domettre compltement une classe de vendeur : dhcp-option=vendor:,1,0.0.0.0 Dans ce cas loption encapsule est toujours envoye. Ladresse 0.0.0.0 nest pas traite de manire particulire lorsque fournie dans une option encapsule de classe de vendeur. dhcp-option=3,192.168.1.1 : Indique la passerelle, ici 192.168.1.1, obligatoire quand la passerelle n'est pas le serveur dnsmasq car par dfaut c'est l'adresse ip du serveur dnsmasq qui est fournie. dhcp-option=6,192.168.7.2,192.168.70.1 Indique un serveur dns primaire et secondaire autre que l'ordinateur serveur dnsmasq, je dconseille de l'employer car notre but est justement d'utiliser notre serveur comme serveur dns. dhcp-option=19,0 : Dsactive l'IP forwarding 19,0 ou active l'IP Forwarding 19,1.Util sous les routers. dhcp-option=44,192.168.1.200 : Indique qui est le server wins (netbios) sur le rseau. dhcp-option=45,192.168.1.200 :Indique qui possde en mmoire le datagram du rseau netbios (le contenu du voisinage rseau sous windows) dhcp-option=46,8 : Le type de node utliser pour le TCP/IP sur NetBIOS. Si vous utilisez samba comme serveur wins, laissez-le 8. dhcp-option=47 : Active le Scope TCP/IP sur NetBios. Si vous utilisez samba comme serveur wins.

Exemple de fichier de configuration


Voici le fichier de configuration que j'utilise :
Configuration file for dnsmasq.

# # pour viter de fournir du trafic DHCP/DNS inutile du cot internet ##domain-needed bogus-priv filter-win2k # pour permettre dnsmasq de suivre vos changements d'IP: # commentez cette ligne si vous avez une IP qui change no-poll # pour limiter l'coute de requtes DHCP du cot rseau local interface=eth0 # nom de votre domaine pour dnsmasq domain=zonelibre.lan dhcp-authoritative dhcp-leasefile=/tmp/dhcp.leases # activez le serveur DHCP: dhcp-option=3,192.168.1.1 dhcp-option=19,0 dhcp-range=192.168.10.100,192.168.10.150,255.255.255.0,48h dhcp-option=44,192.168.1.200 dhcp-option=45,192.168.1.200 dhcp-option=46,8 dhcp-option=47

Comment fixer une adresse ip un client


C'est simple, on ajoute dans /etc/dnsmasq.conf
dhcp-host=00:16:d4:f5:5d:64,192.168.1.2

Dans le cas prsent, je fixe l'adresse ip 192.168.1.2 pour l'ordinateur ayant la mac adresse 00:16:d4:f5:5d:64. Par souci de simplicit, j'attribue toujours les adresses ip fixes en dehors de mon dhcp-range.