Installer un serveur de réseau local CentOS 7

Logo CentOSCette page décrit de manière succincte l’installation et la configuration de CentOS 7 sur un serveur de réseau local (Local Area Network). Pour plus de détails, lire la documentation officielle. CentOS 7 est officiellement supporté jusqu’au 30 juin 2024. On choisira cette branche sur du matériel raisonnablement récent qui supporte un OS 64-bits. L’installateur de CentOS 7 requiert au moins 1 Go de RAM. Sur une machine disposant de moins de mémoire vive ou dotée d’un processeur 32-bits, on pourra opter pour CentOS 6.

Note importante : l’article initialement publié en juillet 2017 a été entièrement revu et corrigé. La procédure de post-installation est maintenant bien plus simple, étant donné qu’elle est à peu près entièrement scriptée.

Support d’installation

On choisira le CD minimal, mais rien n’empêche d’utiliser le DVD.

  • CentOS-7-x86_64-Minimal-1708.iso
  • CentOS-7-x86_64-DVD-1708.iso

Graver le CD ou le DVD à partir de l’ISO téléchargé.

Sur les machines dépourvues de lecteur optique comme par exemple les serveurs HP de la gamme Proliant Microserver, il faudra confectionner une clé USB d’installation. L’image ISO est hybride et peut s’écrire directement sur une clé USB.

# dd if=CentOS-7-x86_64-Minimal-1708.iso of=/dev/sdX

Démarrage

Débrancher clés USB, disques externes et autres périphériques amovibles. Autrement l’installateur les proposera au formatage.

Langue et clavier

Dans l’écran de bienvenue, sélectionner la langue (Français) et la localisation (Français – France). La disposition du clavier sera définie par le biais de l’écran principal de l’installateur.

Interfaces réseau

Le réseau n’est pas activé par défaut, il faut donc songer à l’activer explicitement.

Les noms des interfaces réseau ont changé avec cette nouvelle version. Désormais, on n’a plus affaire à eth0, eth1, eth2, wlan0, etc. Le nouveau schéma de nommage est moins arbitraire et offre davantage de consistance en se basant sur l’emplacement physique de la carte dans la machine.

  • enp2s0
  • enp3s0
  • enp3s1
  • etc.

Date et heure

Vérifier si le fuseau horaire (Europe/Paris) est correctement configuré. Éventuellement, activer Heure du réseau et vérifier les serveurs NTP.

Désactivation de Kdump

Kdump est un mécanisme de capture lors du plantage d’un noyau. Il peut être désactivé.

Partitionnement manuel

L’outil de partitionnement graphique de CentOS n’est pas très intuitif. Voici un exemple de schéma de partitionnement courant.

  • un disque RAID pour /boot de 500 MiB, formaté en ext2
  • un disque RAID pour la partition swap, équivalent à la RAM disponible
  • un disque RAID pour la partition principale, formaté en ext4

Avec deux disques, on optera pour le RAID 1. Si l’on dispose d’au moins trois disques, on pourra choisir le RAID 5 pour la partition principale et le RAID 1 pour /boot et swap.

  1. Cliquer sur Destination de l’installation.
  2. Vérifier si le ou les disques durs sont bien sélectionnés.
  3. Cocher Je vais configurer le partitionnement et cliquer sur Terminé.
  4. Dans le menu déroulant, sélectionner Partition standard au lieu de LVM.

Partition /boot

La taille de la partition /boot sera relativement réduite. Il faudra veiller à ne pas laisser s’entasser les vieux kernels sous peine de la remplir assez rapidement.

  1. Cliquer sur le bouton « + » pour créer un nouveau point de montage.
  2. Créer le point de montage /boot avec une capacité de 500 MiB ou plus.
  3. Définir le type de périphérique RAID avec un niveau 1.
  4. Choisir le système de fichiers ext2 et l’étiquette boot.
  5. Confirmer Mise à jour des paramètres.

Partition swap

Dans certains cas, la partition swap pourra être reléguée à la fin du disque par l’installateur pour une utilisation optimale.

  1. Cliquer sur le bouton « + » pour créer un autre point de montage.
  2. Créer le point de montage swap en spécifiant sa capacité en GiB.
  3. Définir le type de périphérique RAID avec un niveau 1.
  4. Choisir l’étiquette swap.
  5. Confirmer Mise à jour des paramètres.

Partition principale

La partition principale occupera tout l’espace disque restant.

  1. Cliquer sur le bouton « + » pour créer un dernier point de montage.
  2. Créer le point de montage / sans spécifier la capacité souhaitée.
  3. Définir le type de périphérique RAID et le niveau de RAID 1 ou 5.
  4. Si l’on utilise le RAID 5, il faudra revoir la capacité souhaitée à la hausse.
    Pour ce faire, on peut se servir de la valeur Espace total en bas à gauche
    de l’écran et spécifier cette valeur – voire un peu plus – dans le champ
    Capacité souhaitée. L’installateur se chargera de recalculer l’espace
    disponible en fonction de la capacité des disques et du niveau de RAID.
  5. Choisir le système de fichiers ext4 et l’étiquette root.
  6. Confirmer Mise à jour des paramètres, puis Terminé.

Choix des paquets

Dans l’écran de sélection des logiciels du DVD, on optera pour le groupe de paquets Installation minimale proposé par défaut. Le CD minimal ne laisse pas le choix de toute façon.

Synchronisation de la grappe RAID

La synchronisation initiale d’une grappe RAID peut être assez longue. L’astuce suivante permet d’accélérer le processus de façon significative.

# echo 50000 > /proc/sys/dev/raid/speed_limit_min

Configuration provisoire du réseau

L’installation par défaut ne fournit pas la commande ifconfig, qui fait partie du paquet net-tools. Dans un premier temps, il faudra afficher la configuration réseau en utilisant la commande ip fournie par le paquet iproute2.

# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
 ...
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
   qdisc mq state UP qlen 1000
 link/ether 2c:27:d7:15:54:a1 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic enp2s0
 ...
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
 ...
# ip route
default via 192.168.1.1 dev enp2s0

Récupérer le script de post-installation

L’utilitaire git ne fait pas partie d’une installation par défaut. Il va donc falloir l’installer.

# yum install git

Ensuite, récupérer le contenu de mon dépôt Github.

# cd
# git clone https://github.com/kikinovak/centos-7-server-lan

Lancer le script de post-installation

Le répertoire centos-7-server-lan contient un script postinstall.sh. Lancer ce script.

# cd centos-7-server-lan
# ./postinstall.sh

L’affichage du script est assez laconique. Pour en savoir un peu plus sur le détail et la progression des opérations, on peut ouvrir un deuxième terminal et afficher le fichier journal “à chaud”, comme ceci.

# tail -f /tmp/postinstall.log

Le script se charge automatiquement des opérations suivantes.

  • Activer la gestion des Delta RPM.
  • Effectuer la mise à jour initiale du système.
  • Désactiver l’IPv6.
  • Personnaliser le shell Bash pour root et les utilisateurs.
  • Personnaliser la configuration de Vim.
  • Définir l’anglais comme langue système.
  • Configurer l’affichage de la console.
  • Configurer les dépôts de paquets officiels de manière prioritaire.
  • Configurer les dépôts de paquets tiers EPEL et ELRepo.
  • Installer une panoplie d’outils système.
  • Supprimer les paquets inutiles.

Chargeur de démarrage

En fonction du nombre de disques durs, il faudra installer le chargeur de démarrage manuellement sur le MBR de chaque disque. En cas de défaillance d’un des disques, on pourra toujours démarrer sur le ou les disques restants.

# grub2-install /dev/sda
# grub2-install /dev/sdb
# grub2-install /dev/sdc
# grub2-install /dev/sdd

Configurer le réseau

Le répertoire centos-7-server-lan/config/network-scripts contient quelques fichiers modèles pour la configuration réseau.

Dans l’exemple, l’interface enp2s0 se situe côté Internet.

# /etc/sysconfig/network-scripts/ifcfg-enp2s0
DEVICE=enp2s0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.2.5
NETMASK=255.255.255.0

Côté réseau local, c’est l’interface enp3s1.

# /etc/sysconfig/network-scripts/ifcfg-enp3s1
DEVICE=enp3s1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.3.1
NETMASK=255.255.255.0

L’adresse IP de la passerelle sera notée dans /etc/sysconfig/network.

# /etc/sysconfig/network 
GATEWAY=192.168.2.1

Renseigner le ou les serveurs DNS.

# /etc/resolv.conf
nameserver 192.168.2.1

Corriger la configuration du nom d’hôte.

# /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.3.1 amandine.sandbox.lan amandine

Le fichier /etc/hostname devra juste contenir le nom d’hôte simple sans le domaine.

amandine

 Créer un utilisateur

Pour éviter les connexions en root depuis l’extérieur, on peut éventuellement créer un utilisateur non privilégié si cela n’a pas été fait durant l’installation.

# useradd -c "Microlinux" microlinux
# passwd microlinux

Ajouter l’utilisateur au groupe wheel.

# usermod -a -G wheel microlinux

Éditer /etc/pam.d/su et décommenter la ligne qui requiert l’appartenance au groupe wheel pour acquérir les droits de root.

# /etc/pam.d/su
...
# Uncomment the following line to require a user to be in 
# the "wheel" group.
auth required pam_wheel.so use_uid

Si l’utilisateur a déjà été créé, on peut récupérer le profil manuellement comme ceci.

# su - microlinux
$ cp -v /etc/skel/.bash* .
« /etc/skel/.bash_logout » -> « ./.bash_logout »
« /etc/skel/.bash_profile » -> « ./.bash_profile »
« /etc/skel/.bashrc » -> « ./.bashrc »
$ source ~/.bashrc
$ exit

Configurer le pare-feu

Depuis la version 7.0, CentOS gère le pare-feu avec firewalld, qui est au pare-feu ce que NetworkManager est au réseau. Une couche d’abstraction à la sauce Red Hat, et qui ne nous servira pas à grand-chose. On préférera une configuration traditionnelle avec iptables.

Vérifier si les paquets iptables-* sont installés.

# rpm -qa | grep iptables
iptables-1.4.21-13.el7.x86_64
iptables-services-1.4.21-13.el7.x86_64

Activer le service correspondant.

# systemctl enable iptables
# systemctl start iptables

Sous CentOS, la meilleure solution consiste à éditer un simple script Bash pour iptables, en enregistrant la configuration à la fin du script.

# /usr/sbin/service iptables save

Le répertoire centos-7-server-lan/config/firewall contient deux fichiers modèles pour la configuration du pare-feu.

  • firewall-gateway.sh pour un serveur faisant office de passerelle
  • firewall-standalone.sh pour une machine standalone

Copier le script qui convient dans un endroit approprié en le renommant, par exemple /usr/local/sbin/firewall.sh. Adapter le script à la configuration réseau de la machine et aux services que l’on compte héberger, puis…

# firewall.sh

Afficher la configuration du pare-feu.

# iptables -L -v -n

Au redémarrage du serveur, les règles iptables sont bien restaurées, mais le relais des paquets est désactivé. Pour l’activer par défaut, on peut créer un fichier /etc/sysctl.d/enable-ip-forwarding.conf comme ceci.

# /etc/sysctl.d/enable-ip-forwarding.conf 
# Enable IP forwarding
net.ipv4.ip_forward = 1

Vérifier les alertes SELinux

Pour finir, on pourra vérifier le bon fonctionnement du système de base avec SELinux.

# sealert -a /var/log/audit/audit.log
100% done
found 0 alerts in /var/log/audit/audit.log
Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , . Vous pouvez le mettre en favoris avec ce permalien.

6 réponses à Installer un serveur de réseau local CentOS 7

  1. vincent mathae dit :

    je me suis toujours demandé pourquoi utiliser grub(2) quand on a qu’un seul Os (syslinux étant amha beaucoup plus légé), voir pourquoi utiliser un boot-manager sur une machine récente (UEFI) quand on peut lancer directement le system à partir de l’uefi (EFISTUB). Vieilles habitudes?

  2. Clement dit :

    “un serveur de réseau local”, mais qu’est-ce que ça veut dire?
    Un “serveur”, ok
    Un “réseau local”, ok
    Un “serveur sur un réseau local”, ok
    Mais un “serveur de réseau local”, c’est un truc qui “sert du réseau” ?
    C’est un nouveau concept ?
    C’est une mauvaise tournure de phrase ?
    C’est une mauvaise traduction brutale ?
    Dommage que dès le titre de l’article les tournures de phrases ne soient pas claires…

    • kikinovak dit :

      Par opposition au serveur dédié rangé dans un datacenter, comme ici par exemple. Si vous avez une meilleure proposition pour différencier les deux cas de figure, je suis preneur. Je précise que le français n’est pas ma langue maternelle, et que c’est là la traduction de “Lokaler Netzwerkserver” en allemand ou “LAN server” en anglais.

  3. Thierry Boibary dit :

    Bonjour,
    j’ai 1 freebox, 1 switch et 6 machines,
    je voudrais faire de l’une de mes machines un serveur. J’entends par serveur, 1 serveur DHCP, 1 Firewall, 1 routeur pour accéder à internet etc…. et mes 5 autres machines connectées à ce serveur.
    que me conseillez vous comme doc? et par ou commencer?
    Merci

    ps: toutes mes machines sont sous CentOs7

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.