CentOS Serveur - Configuration réseau sans Network Manager
Par manuardo le samedi 26 janvier 2013, 15:32 - CentOS
Par quel article commencer une partie dédiée aux serveurs CentOS et/ou Redhat sur Mgroup.fr ?
La question se posait jusqu'à ce qu'un problème sur une carte Broadcom se présente et donne une réponse qui en vaut une autre. Outre l'installation du système, difficile de faire fonctionner correctement un serveur sans réseau proprement configuré.
Voici donc un petit tuto sur la configuration réseau de votre CentOS, sans Network Manager, via l'outil dédié ou en ligne de commande.
Ce modeste tutoriel peut également se rapporter à un poste de travail, fixe ou mobile. Toutefois, l'outil Network-Manager et son applet Gnome permettent une configuration rapide et pratique, surtout si vous utilisez un réseau Wifi.
Un petit clic droit sur l'applet présent près de l'horloge de votre bureau gnome, puis "modifications des connexions", vous donne accès aux différents types d'interfaces disponibles sur votre machine, ainsi qu'à leurs options.
Oui pardon, ce n'est pas le sujet ici..
En général, la configuration réseau se fait à l'installation de CentOS (ou RHEL), via Anaconda.
Sous CentOS 5.x, difficile de rater le menu de configuration réseau, à la même page que le nom de machine (Hostname):
A l'install de CentOS 6 par contre, la configuration réseau s'effectue toujours à l'étape "Hostname" (nom de machine), mais via le bouton dédié (en bas à gauche):
Le titre du tuto, c'est sans Network Manager, donc on commence par le désactiver s'il est présent (en root):
# service NetworkManager stop
Puis on désactive son démarrage automatique
# chkconfig NetworkManager off
CentOS / RHEL toutes versions (sauf minimale) via l'utilitaire de configuration
Si vous n'avez pas configuré le réseau à l'installation, vous pouvez retrouver l'utilitaire de configuration en root avec la commande "setup":
# setup
Choisissez la "configuration réseau" dans le menu:
Configurez le ou les serveurs dns (local et/ou distants, dans cet ordre, deux c'est mieux):
Indiquez les paramètres souhaités pour la carte réseau (Pensez à décocher "dhcp" pour une ip fixe):
Redémarrez le service réseau via la commande:
# service network restart
Et effectuez un test ping, sur google.fr par exemple:
# ping google.fr
CentOS / RHEL toutes versions (via édition des fichiers dans un terminal)
Commencez par vérifier les interfaces réseau montées (en root):
# ifconfig
Si la commande ne renvoie que la boucle locale, comme ci dessous, c'est que la carte réseau n'est pas détectée ou configurée:
lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Contrôlez la détection d'une carte réseau physique par votre CentOS:
# lspci | grep Ethernet
Cette commande vous renvoie la (ou les) ligne(s) relatives à une carte Network détectée. Exemple ci dessous avec une carte Broadcom:
09:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express (rev 02)
A chaque carte réseau, correspond un network-script (fichier ifcfg-"interface") qui contient ses paramètres. En général, ils portent l'appellation ethx (ou x est un chiffre). Mais ce n'est pas systématique. Donc on balaye large:
# grep Ethernet /etc/sysconfig/network-scripts/ifcfg-*
Cette commande doit vous retourner une ou plusieurs lignes ressemblant à celle ci dessous (toujours pour notre exemple):
/etc/sysconfig/network-scripts/ifcfg-eth0:TYPE="Ethernet"
On sait donc, grace à cette ligne, que notre (première) carte est vue comme "eth0".
Si on est sur une configuration réseau CentOS jamais modifiée, elle est par défaut en dhcp, donc on pourrait la monter (si serveur ou routeur local DHCP) avec:
# ifup eth0
Notre commande du départ (ifconfig), nous renverrait cette fois-ci:
# ifconfig
eth0 Link encap:Ethernet HWaddr CA:0B:9D:0C:00:CC inet adr:192.168.0.43 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::c80b:9dff:fe0c:dfbd/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:896 errors:0 dropped:0 overruns:0 frame:0 TX packets:75 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:86545 (84.5 KiB) TX bytes:8838 (8.6 KiB) lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Mais un serveur se configure rarement en mode "client DHCP", donc courageusement, il faut éditer à la main les 3 fichiers qui vont bien.
Voici un exemple du fichier ifcfg-eth0 (dans notre cas) en mode "client dhcp", c'est à dire tel qu'il est d'origine:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" BOOTPROTO="dhcp" HWADDR="CA:0B:9D:0C:00:CC" NM_CONTROLLED="yes" ONBOOT="no" TYPE="Ethernet" UUID="00b10eac-a6df-49ad-bead-xxxxxxxxxxa"
Remarquez la ligne "NM_CONTROLLED" qui se traduit par "contrôlé par NetWork-Manager", on la passe à "no"
De même, la ligne "BOOTPROTO" doit être passée à "none"
La ligne "ONBOOT" est passée à "yes" pour activation au démarrage de CentOS / RHEL
On rajoute une ligne pour indiquer l'ip fixe de notre serveur avec l'option "IPADDR=ip_du_serveur"
Puis une ligne pour renseigner le masque avec l'option "NETMASK=255.255.255.0" (ici la valeur par défaut)
Ce qui nous donne un fichier comme celui-ci (corrigez l'adresse ip avec celle que vous souhaitez):
DEVICE="eth0" BOOTPROTO="none" HWADDR="CA:0B:9D:0C:00:CC" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" UUID="00b10eac-a6df-49ad-bead-xxxxxxxxxxa" IPADDR=192.168.0.5 NETMASK=255.255.255.0
Il faut maintenant indiquer la passerelle par défaut (GATEWAY) pour notre CentOS. Pour ce faire, éditez le fichier "network", rajoutez ou corrigez la ligne "GATEWAY=" à la fin de ce fichier. Ici, nous supposons que la passerelle est le routeur local (192.168.0.1), indiquez la votre :
# vi /etc/sysconfig/network
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=test GATEWAY=192.168.0.1
On termina avec les informations DNS. Elles doivent être indiquées dans le fichier "resolv.conf". Vous pouvez ajouter plusieurs "serveurs dns" dans ce fichier, il seront traités dans l'ordre par le système (Si le premier ne répond pas, il passe au second, etc..).
Dans cet exemple, le routeur local qui fait aussi passerelle, est indiqué en premier. En second, nous avons rajouté l'un des serveurs dns de Google, pour le cas où..
Adaptez en fonction de votre réseau et de vos besoins
# vi /etc/resolv.conf
nameserver 192.168.0.1 nameserver 8.8.8.8
Redémarrage du réseau pour prise en compte des paramètres que nous venons d'indiquer:
# service network restart
Et test "ping" pour vérifier son bon fonctionnement, avec google.fr par exemple:
# ping google.fr
Enfin, pour ceux qui le souhaitent, on désinstalle NetworkManager
# yum remove NetworkManager
Vous pouvez commenter ou participer à l'amélioration de cet article via le topic dédié du forum.