Principes et choix

Enjeux, utilités

Avec la généralisation des accés haut débit de type xDSL et la baisse des prix des micro ordinateurs il devient souvent utile de partager sa connection internet entre les différents micro ordinateur d'un foyer, d'un étage d'immeuble, ... Certains FAI proposent des solutions dites "clés en mains" mais celles ci sont souvent incomplètes, peu performantes voir peu sécurisées. L'arrivée des accés haut débit sous entendent plusieurs choses : un accés permanent, un débit utilisé de façon limitée, l'accés à des nouveaux services.

L'accés permanent est le point principal des accés xDSL. Avec de tels accés vous avez la possibilité d'avoir un ordinateur connecté 24/24h et 7/7j sur Internet. De là découle des points intéressants et des points moins intéressants.

Etre connécté en permanence représente généralement un accroissement des risques d'attaques sur l'ordinateur connecté et, parfois, les ordinateurs connectés sur internet via ce même ordinateur. C'est la que le premier besoin se fait donc sentir : protéger la connection internet et les ordinateurs qui l'utilise. Le serveur devra donc faire office de pare-feu (firewall).

D'un autre coté, être connecté en permanence permet d'assurer un certain nombre de services qui peuvent vous être utiles : serveur web pour partager des documents, des albums photos, ... Si vous êtes étudiant vous pouvez tirer parti d'un serveur subversion ou cvs.

Le débit proposé est de plus en plus important, du moins dans le sens Internet -> utilisateur (déscendant), dans l'autre sens (montant) les FAI commencent à faire des progrés. La plupart du temps la bande passante disponible n'est pas utilisée pleinement, et bien des choses sont faisables. Si vous disposez d'un accés xDSL correct (1024/256) et d'une adresse IP fixe alors vous pouvez peut être trouver une utilité à avoir certains services chez vous : mini serveur web, serveur subversion/cvs si vous êtes développeur, ou étudiant, et enfin serveur mail. Utilité d'avoir son propre serveur mail ? Ne pas dépendre d'un fournisseur de services X ou Y. Le problème c'est que là vous dépendrez de la stabilité de votre connection. Mais si vous avez un bon camarade, disposant lui aussi d'un tel serveur il peut surement faire relais et ainsi palier des problèmes de connection.

Si vous avez plusieurs ordinateurs utilisés pour surfer sur le web il peut être utile d'utiliser un serveur mandataire aka proxy, ainsi qu'un serveur de noms (DNS).

Enfin, pour faciliter les échanges de fichiers il peut être utile de faire un serveur de fichiers accessible via SMB (windows) ou NFS (unices). De même on peut envisager un serveur d'impression.

Pour résumer le serveur fera donc office de : firewall, passerelle, serveur mail, serveur subversion, serveur web et bdd, proxy, dns, file-server, et serveur d'impression.

Choix matériels

Ce sont là les choix matériels de l'auteur

Deux objectifs ont guidé mon choix : faible encombrement, prix et consommation éléctrique. Il est important pour moi d'avoir une machine relativement puissante mais ni trop encombrante, ni trop cher, ni trop gourmande. Plusieurs machines collent à peu prés dans ces besoins : les soekris (www.soekris.com) et les epia (via). Les soekris sont de sympathiques petites betes dotés en général de deux cartes réseaux minimum, voir plus et même parfois de ports pour des cartes au format pcmcia, minipci. Mais les soekris ont 2 problèmes : le prix et la puissance. Un soekris est trés bien pour faire firewall, pas plus. Si vous avez les moyens je vous conseille d'ailleurs d'investir dans un soekris pour s'occuper du firewall et déléguer les autres tâches précédement listées à une autre machine. Les Epia sont donc la solution : un format pas trés grand : 17x17cm, un faible consommation éléctrique, un prix raisonnable et une puissance plus que correcte (800MHz voir 1GHz pour les premiers modèles).

Mon choix s'est donc porté sur une Epia achetée sur ldlc.fr, l'alimentation que j'utiliserai sera l'alimentation d'une SparcStation 4 (format ATX) le temps de trouver un boitier pas trop cher pour la remplacer. Vous pouvez trouver des boitiers sur internet : mini-itx.com en vend, mais les frais de ports sont élevés. Cependant les instructions qui suivent sont valables pour toutes les machines sauf peut être pour les médiums d'install.

Il est important d'avoir un minimum de puissance car le nombre de services hébergés sur la machine vont être important et risquent de bouffer pas mal de ressources. Pour mon cas j'ai pris une Epia M10000, le processeur Nehemiah à 1GHz devrait pouvoir tenir la charge. Pour la RAM, je commence avec 256Mo de DDR 2100.

Choix logiciels

Maintenant que vous avez votre matériel prêt vous pouvez passer à la phase suivante : la prépration de l'install logicielle. Pour l'OS le choix est NetBSD 2. NetBSD présente plusieurs points importants selon moi : stabilité, propreté du code, de la documentation, licence libre. Bien sur OpenBSD peut aussi être une bonne solution. Néanmoins dans cet article je décris l'installation d'un serveur personnel avec NetBSD, les principes sont applicables à tout autre unice libre (GNU/Linux ou les autres BSD) mais vous trouverez certaines différences à plusieurs endroits. Dans ce cas allez voir les docs du système que vous utilisez, généralement vous trouverez ce qu'il faut.

Firewall, passerelle

Nous utiliserons Packet Filter (pf) et non le classique ipf de NetBSD (qui n'est pas libre). Porté récement sur NetBSD je le trouve bien plus puissant qu'iptables et nous pourrons normalement utiliser les fonctions de queuing et de limitation de débit (QoS).

Serveur web

Pour le serveur web nous utiliserons apache 2 et les modules mod_php, mod_perl. Nous verrons l'installation de Postgresql, pour ceux qui préfèrent MySQL il n'y a pas beaucoup de choses à faire pour le remplacer.

Serveur mail

Le serveur mail : nous verrons l'installation du critiqué sendmail mais aussi de postfix. Le but pour le serveur mail est d'avoir aussi courier-imaps et un serveur LDAP pour gérer les comptes mails.

Autres services

Pour le proxy j'utiliserai l'habituel squid, et Bind pour le DNS. Nous verrons aussi l'installation d'OpenSSH et d'un serveur subversion.