================ LAN Server HOWTO (c) Nicolas Kovacs ================ Dernière révision : 5 août 2015 Ce HOWTO décrit l'installation d'un serveur de réseau local Slackware 14.1. * HP Proliant Microserver * Démarrer sur le support d'installation * Faire le ménage sur les disques * Partitionnement et définition des assemblages RAID * Lancer l'installation * Construire l'initrd et configurer LILO * Premier redémarrage * Télécharger les scripts Microlinux * Configurer slackpkg * Élaguer et installer les paquets MLES * Peaufiner la configuration du réseau * Pare-feu * Migration HP Proliant Microserver ----------------------- Le HP Proliant Microserver ne contient pas de lecteur optique. Il faut donc confectionner une clé USB bootable. Pour plus de détails, voir le 'USB-Install-HOWTO'. Démarrer sur le support d'installation -------------------------------------- Options de démarrage : * 'huge.s' -> 64-bit * 'hugesmp.s' -> 32-bit * 'vga=788' -> affichage 800x600 * 'vga=791' -> affichage 1024x768 Choix du clavier : 'azerty/fr-latin1.map' pour un clavier AZERTY français. Faire le ménage sur les disques ------------------------------- Avant de faire quoi que ce soit, désactiver d'éventuels vestiges d'assemblages RAID provenant d'une installation antérieure : # mdadm -Ss Effacer les métadonnées RAID persistantes sur les partitions, comme ceci par exemple : # mdadm --zero-superblock /dev/sda1 # mdadm --zero-superblock /dev/sda2 # mdadm --zero-superblock /dev/sda3 # mdadm --zero-superblock /dev/sdb1 # mdadm --zero-superblock /dev/sdb2 # mdadm --zero-superblock /dev/sdb3 ... Remettre les tables de partitions à zéro : # dd if=/dev/zero of=/dev/sda bs=512 count=64 # dd if=/dev/zero of=/dev/sdb bs=512 count=64 Redémarrer. Partitionnement et définition des assemblages RAID -------------------------------------------------- Partitionner les disques : # cfdisk /dev/sdX Schéma de partitionnement : * un disque RAID pour '/boot', de 100 Mo, formaté en ext2 * un disque RAID pour la partition swap, équivalent à la RAM disponible * un disque RAID pour '/', formaté en ext4 > Les partitions RAID sont de type FD ('Linux raid autodetect'). Deux disques en RAID 1 : # mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda1 /dev/sdb1 # mdadm --create /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda2 /dev/sdb2 # mdadm --create /dev/md3 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda3 /dev/sdb3 Quatre disques en RAID 5 : # mdadm --create /dev/md1 --level=1 --raid-devices=4 --metadata=0.90 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 # mdadm --create /dev/md2 --level=1 --raid-devices=4 --metadata=0.90 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2 # mdadm --create /dev/md3 --level=5 --raid-devices=4 --metadata=0.90 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3 > Les grappes '/dev/md1' et '/dev/md2' sont assemblées en RAID 1. > La grappe '/dev/md3' est assemblée en RAID 5. Formater la partition swap pour que l'installateur la reconnaisse : # mkswap /dev/md2 Lancer l'installation --------------------- Lancer l'installation : # setup L'installateur proposera les disques RAID '/dev/mdX' au formatage. Sélectionner les séries de paquets : [*] A [*] AP [*] D [ ] E -> désélectionner [*] F [*] K [ ] KDE -> désélectionner [ ] KDEI [*] L [*] N [*] T [*] TCL [*] X [ ] XAP -> désélectionner [ ] XFCE -> désélectionner [*] Y /!\ Le groupe T est bizarrement nécessaire pour compiler le paquet 'ffmpeg', dont on pourra éventuellement avoir besoin sur un serveur de flux audio. SELECT PROMPTING MODE : 'full'. Alternativement, le mode 'terse' offre un résultat identique mais avec une présentation plus compacte. MAKE USB FLASH BOOT : 'Skip making a USB boot stick' INSTALL LILO : 'Try to install LILO automatically' CONFIGURE LILO TO USE FRAME BUFFER CONSOLE : 'standard - Use the standard Linux console (the safe choice). > Pour la résolution de la console et les paramètres à passer au kernel (prochain écran), on peut très bien ne rien mettre et peaufiner le tout en éditant '/etc/lilo.conf' plus tard. OPTIONAL LILO append="" LINE : 'quiet ipv6.disable=1' USE UTF-8 TEXT CONSOLE : 'Yes' - UTF8 a beau avoir quelques petits problèmes avec certains utilitaires en mode console, notamment avec des pages man en langue étrangère qui s'affichent mal, il n'empêche qu'il est dorénavant établi comme standard un peu partout. Le choix par défaut 'No' s'explique uniquement par un excès de prudence de la part du distributeur. SELECT LILO DESTINATION : 'MBR - Install to Master Boot Record' MOUSE CONFIGURATION : 'imps2- Microsoft PS/2 Intellimouse' > La configuration de la souris ne concerne que son utilisation en mode console, avec GPM. On peut simplement accepter le choix par défaut, qui correspond à toutes les souris modernes. GPM CONFIGURATION : 'No'. Le service GPM permet de copier/coller du texte avec la souris en mode console. Étant donné que nous nous servons de Vim pour cela, nous décidons de ne pas le démarrer. CONFIGURE NETWORK: 'Yes' ENTER HOSTNAME : il s'agit de choisir un nom d'hôte pour le serveur. Choisissez-en un à votre convenance et écrivez-le en minuscules, comme ceci : * 'slackbox' * 'grossebertha' * 'serveur' ENTER DOMAINNAME FOR '' : choisissez un nom de domaine "en bois", comme par exemple : * 'local' * 'microlinux.montpezat' * 'crpconsulting.montpellier' * etc. CONFIGURATION TYPE FOR '' : 'static IP'. Renseigner les paramètres réseau "côté Internet". SET DHCP HOSTNAME : Laisser vide tout simplement. CONFIRM STARTUP SERVICES TO RUN : [ ] rc.fuse -> désélectionner [ ] rc.inetd -> désélectionner [ ] rc.messagebus -> désélectionner [*] rc.syslog [*] rc.sshd CONSOLE FONT CONFIGURATION : 'No' HARDWARE CLOCK SET TO UTC ? 'YES - Hardware clock is set to UTC' TIMEZONE CONFIGURATION : 'Europe/Paris' SELECT DEFAULT WINDOW MANAGER FOR X : 'xinitrc.twm' > Le gestionnaire de fenêtres rudimentaire est installé avec le groupe de paquets 'X'. Même si nous le définissons comme environnement par défaut, nous ne l'utiliserons pas. Définir un mot de passe pour root. On ne le verra pas apparaître à l'écran. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! NE PAS REDÉMARRER AVANT D'AVOIR CONFIGURÉ LILO POUR GÉRER LE RAID !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Sortir de l'installateur ('EXIT') et effectuer quelques retouches finales : # chroot /mnt Construire l'initrd et configurer LILO -------------------------------------- Attendre la synchronisation complète de la grappe : # watch cat /proc/mdstat L'astuce suivante permet d'accélérer la synchronisation des disques de façon significative : # echo 50000 > /proc/sys/dev/raid/speed_limit_min Aller boire un ou plusieurs cafés, jouer avec le chat, faire un tour dans la garrigue, etc. Créer le fichier de configuration pour la grappe RAID : # mdadm -E -s > /etc/mdadm.conf Préparer l'initrd : # cd /etc # cp mkinitrd.conf.sample mkinitrd.conf Détecter les modules nécessaires au démarrage : # /usr/share/mkinitrd/mkinitrd_command_generator.sh Éditer '/etc/mkinitrd.conf' en utilisant l'option ':set nobackup' de Vim : --8<---------- /etc/mkinitrd.conf -------------------------------------------- SOURCE_TREE="/boot/initrd-tree" CLEAR_TREE="1" OUTPUT_IMAGE="/boot/initrd.gz" KERNEL_VERSION="$(uname -r)" KEYMAP="fr_CH-latin1" MODULE_LIST="ext4" ROOTDEV="/dev/md3" ROOTFS="ext4" RESUMEDEV="/dev/md2" RAID="1" LVM="0" UDEV="1" MODCONF="0" WAIT="1" --8<-------------------------------------------------------------------------- > Ici, 'RAID="1"' ne désigne pas un quelconque niveau de RAID, mais signifie simplement que l'on utilise le RAID. Il faudra éventuellement ajouter explicitement les modules pour le contrôleur de disques. Exemple sur un serveur IBM XServer 225 : --8<---------- /etc/mkinitrd.conf -------------------------------------------- ... MODULE_LIST="ext4:mptbase:mptscsih:mptspi" ... --8<-------------------------------------------------------------------------- Générer l'initrd : # mkinitrd -F Éditer '/etc/lilo.conf' : --8<---------- /etc/lilo.conf ------------------------------------------------ ... append="nomodeset quiet vt.default_utf8=1 ipv6.disable=1" boot=/dev/md1 compact lba32 raid-extra-boot = mbr-only ... timeout = 30 ... image = /boot/vmlinuz-generic-3.10.17 initrd = /boot/initrd.gz root = /dev/md3 label = MLES-14.1-64bit read-only --8<-------------------------------------------------------------------------- > Là aussi, activer l'option ':set nobackup' dans Vim pour ne pas se retrouver avec une copie de sauvegarde 'lilo.conf~'. > Dans le cas d'une installation USB, supprimer la stance 'Windows' inutile. # lilo On peut tranquillement ignorer le message d'erreur qui dit que "/dev/sdb n'est pas sur le premier disque" :o) Quitter l'environnement chrooté et redémarrer : # exit # reboot Premier redémarrage ------------------- Tester la connexion à Internet : # ping -c 3 www.google.fr Éventuellement, utiliser Links pour télécharger et installer le paquet 'user-settings-console' sur le dépôt de Microlinux : # links http://www.microlinux.fr/microlinux/ > systèmes 32-bits : server-14.1-32bit/slackware/ > systèmes 64-bits : server-14.1-64bit/slackware64/ Téléchargez le paquet 'user-settings-console' depuis le dépôt (en utilisant la touche [D] comme "Download" dans le navigateur Links) et installez-le : # installpkg user-settings-console-14.1-noarch-1_microlinux.txz Si l'on n'a pas accès au réseau au premier redémarrage, on peut éventuellement permuter l'affectation des interfaces réseau 'eth0' et 'eth1', en éditant '/etc/udev/rules.d/70-persistent-net.rules'. Procéder à un réglage initial de l'horloge système : # ntpdate pool.ntp.org Télécharger les scripts Microlinux ---------------------------------- Je fournis une collection de scripts et de fichiers de configuration prêts à l'emploi pour accélérer le processus d'installation. Récupérez toute cette arborescence en utilisant la commande suivante : # cd # git clone https://github.com/kikinovak/microlinux Configurer slackpkg ------------------- Dans la configuration par défaut, le gestionnaire de paquets 'slackpkg' ne fonctionne qu'avec les dépôts officiels de Slackware. Nous devons installer le plugin 'slackpkg+' de Matteo Rossini pour activer l'utilisation de dépôts de paquets tiers. Microlinux vous évite la corvée en fournissant des paquets 'slackpkg+' préconfigurés pour l'utilisation des dépôts MLES. Là encore, utilisez le navigateur Links pour accéder aux dépôts distants : # links http://www.microlinux.fr/microlinux/ > systèmes 32-bits : server-14.1-32bit/slackware/ > systèmes 64-bits : server-14.1-64bit/slackware64/ Téléchargez le paquet 'slackpkg+' depuis le dépôt (en utilisant la touche [D] comme "Download" dans le navigateur Links) et installez-le : # installpkg slackpkg+-1.3.2-noarch-1_microlinux.txz Éditez '/etc/slackpkg/mirrors' et sélectionnez un miroir Slackware en fonction de votre pays, par exemple : --8<---------- /etc/slackpkg/mirrors ----------------------------------------- ... # GERMANY (DE) ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware64-14.1/ ... --8<-------------------------------------------------------------------------- Assurez-vous de ne choisir qu'un seul miroir pour Slackware stable. Si vous êtes en France, optez pour le miroir ftp.fu-berlin.de ou mirror.switch.ch. Le miroir OVH est inutilisable comme à peu près tout ce qui vient de chez OVH. Récupérez les clés GPG : # slackpkg update gpg Mettez à jour les informations sur les paquets disponibles : # slackpkg update Élaguer et installer les paquets MLES ------------------------------------- Chaque sous-répertoire 'server-$VERSION-$ARCH/tools/' fournit un script 'trim.sh' qui se charge de deux choses : 1. supprimer quelques paquets superflus 2. installer quelques paquets supplémentaires Élaguez votre système Slackware de base : # cd microlinux/server-$VERSION-$ARCH/tools/ # ./trim.sh Le script dans l'arborescence 64-bit n'est qu'un lien symbolique vers la version 32-bit. Lancer la mise à jour du système de base Slackware : # slackpkg upgrade-all À partir de là, les paquets MLES peuvent être installés comme ceci : # slackpkg install microlinux-server Peaufiner la configuration du réseau ------------------------------------ Éditer '/etc/rc.d/rc.inet1.conf' et ajouter la configuration de la carte côté réseau local : --8<---------- /etc/rc.d/rc.inet1.conf --------------------------------------- # Config information for eth0: IPADDR[0]="192.168.1.2" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="192.168.2.1" NETMASK[1]="255.255.255.0" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" ... # Default gateway IP address: GATEWAY="192.168.1.1" --8<-------------------------------------------------------------------------- Corriger la configuration de l'installateur dans '/etc/hosts'. Par exemple : --8<---------- /etc/hosts ---------------------------------------------------- 127.0.0.1 localhost.localdomain localhost 192.168.2.1 nestor.microlinux.montpezat nestor --8<-------------------------------------------------------------------------- Prendre en compte les modifications : # /etc/rc.d/rc.inet1 restart Pare-feu -------- Le répertoire 'template/firewall/' contient un pare-feu prêt à l'emploi : # cd template/firewall/ # cp rc.firewall.router /etc/rc.d/rc.firewall Adapter la configuration du script, puis : # chmod +x /etc/rc.d/rc.firewall # /etc/rc.d/rc.firewall start Deux remarques : 1. Si le serveur n'est équipé que d'une seule carte réseau et qu'il ne fait donc pas office de routeur, on choisira le modèle de pare-feu 'rc.firewall.lan' au lieu de 'rc.firewall.router'. 2. Le script 'rc.firewall.router' gère également le relais des paquets. On n'utilisera donc pas le script '/etc/rc.d/rc.ip_forward' proposé par Slackware. Migration --------- Cette section décrit la procédure pour migrer un serveur faisant office de passerelle/pare-feu d'un réseau vers un autre. Désactiver les services suivants dans '/etc/rc.d/' : * rc.dnsmasq * rc.firewall * rc.httpd * rc.ntpd * rc.squid Supprimer la configuration de la carte réseau 'eth1' et configurer la carte 'eth0' en DHCP. --8<---------- /etc/rc.d/rc.inet1.conf --------------------------------------- # Config information for eth0: IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="yes" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" ... # Default gateway IP address: GATEWAY="" --8<-------------------------------------------------------------------------- Redémarrer et vérifier la connexion Internet : # ping -c 4 www.google.fr ------------------------------------------------------------------------------ # vim: syntax=txt