{{tag>variante serveur réseau}} ---- ====== Ubuntu version Serveur ====== Cette page est un petit tour d'horizon de la version serveur d'Ubuntu. ===== Préparation avant installation ===== Avant d'installer Ubuntu serveur, quelques informations sont à prendre en compte : ==== Besoins matériels ==== Le minimum requis pour l'installation est de 128Mo RAM et un espace disque de 500 Mo (installation de base) ou 1 Go (installation de toutes les options de [[tasksel|Tasksel]]). L'édition serveur offre un socle pour le support de serveurs applicatifs de toutes sortes. C'est une version minimale de la plate-forme, qui permet d'offrir les services désirés comme le partage de fichiers, le service d'impression, l'hébergement de sites web, le service de messagerie, etc. Les besoins pour UEC sont totalement différents (pour cela voir la page [[https://help.ubuntu.com/community/UEC|UEC]]). ==== Différences entre version serveur et desktop ==== Il y a quelques différences entre ces deux versions. Il est à noter que les deux utilisent les mêmes dépôts APT, ce qui rend aussi facile l'installation d'applications serveurs sur un poste de travail que sur un serveur. Les différences entre les deux éditions sont l'absence d'environnement graphique X sur la version serveur, le processus d'installation et les options différentes du noyau. Vous pouvez utiliser l'image ISO serveur pour effectuer une installation d'[[:ubuntu_minimale#installation_des_paquets|Ubuntu minimale]]. Mais vous pourriez alors préférer l'image ISO [[:installation_alternate|alternate]] ou la [[:tutoriel/installer_ubuntu_par_internet|mini]]. === Différences des options du noyau === * Au niveau des entrées/sorties ([[wpfr>Deadline scheduler|Deadline I/O scheduler]] à la place de CFQ scheduler) * Le mode [[wpfr>Multitâche préemptif|préemptif]] n'est pas utilisé sur la version serveur * La fréquence [[wpfr>Interruption (informatique)|d'interruption]] est à 100 Hz sur la version serveur, 250 Hz sur la version desktop. La version 64 bits d'Ubuntu fonctionnant sur un processeur 64 bits n'est pas limitée dans l'adressage d'espace mémoire. Pour voir toutes les options de configuration du noyau, vous pouvez jeter un oeil au fichier /boot/config-2.6.35-server. Le livre //[[http://www.kroah.com/lkn/|Linux Kernel in a Nutshell]]// présente également les options disponibles. === Sauvegardes === Avant d'installer Ubuntu Serveur, vous devriez être sur d'avoir sauvegardé la totalité des données présentes sur le disque dur. Si ce n'est pas le premier système d'exploitation que vous installez sur cet ordinateur, il y a de fortes chances pour que vous ayez à re-partitionner votre disque dur, pour faire de la place à Ubuntu. A chaque re-partitionnement d'un disque, il faut être prêt à perdre la totalité des informations qu'il contenait, que vous ayez fait une erreur, ou que quelque chose se déroule mal pendant le partitionnement. Même si les programmes utilisés pendant le processus d'installation sont relativement stables, certains étant utilisés depuis des années, il ne faut pas perdre de vue qu'ils effectuent des actions destructrices. ===== Installation depuis le CD ===== Les premières étapes pour installer Ubuntu Serveur depuis le CD d'installation sont les mêmes que pour installer n'importe quel système d'exploitation depuis un CD. A la différence de la version Desktop, la version serveur ne dispose pas d'un programme d'installation graphique. A la place, la version serveur utilise un processus basé sur des choix de menus type console. * Télécharger et graver l'image ISO d'Ubuntu Serveur depuis le site web, * Démarrer le système depuis le lecteur de CD-Rom, * Au démarrage, on vous demandera de sélectionner votre langue. Après quoi, le processus d'installation vous demande la disposition de votre clavier, * Depuis le menu principal, des options supplémentaires sont accessibles : vous pouvez installer un Ubuntu Serveur basique, ou installer un Ubuntu Serveur qui prenne place dans le cloud de l'entreprise (UEC : Ubuntu Enterprise Cloud). La suite de la description ne concerne que la version de base. Pour plus d'informations sur UEC, merci de consulter la page dédiée. * Le programme d'installation détecte votre configuration matérielle, et configure les cartes réseaux en utilisant DHCP. Si vous ne souhaitez pas utiliser DHCP, à l'écran suivant, sélectionnez "Retour", et sélectionnez l'option "Configuration manuelle". * Le programme d'installation vous demande ensuite le nom de la machine et votre fuseau horaire. * Vous pouvez choisir entre de nombreuses options de partitionnement du disque. Ces options seront expliquées un peu plus bas dans la page. * Le système Ubuntu est installé. * Un nouvel utilisateur est créé. Il aura un accès **root** grâce à l'utilitaire **sudo**. Vous pourrez ou non encrypter son répertoire utilisateur (home). * L'étape suivante du processus est de choisir comment le système sera mis à jour. Il y a trois options : pas de mises à jour automatique, automatique ou via Landscape. Landscape est un service payant de Canonical pour aider la gestion des machines Ubuntu. * Vous avez la possibilité d'installer (ou pas) de nombreuses solutions logicielles (sous forme de tâches). Vous pouvez également choisir manuellement quels paquets installer. * Finalement, la dernière étape avant le redémarrage est de configurer l'horloge au format UTC. A certaines étapes de l'installation, vous aurez besoin de lire l'écran d'aide du système d'installation. Pour cela, taper F1. ==== Tasksel ==== Pendant l'installation, vous avez la possibilité d'installer des paquets additionnels depuis le CD. Ces paquets sont groupés par type de service : * Serveur [[bind9|DNS]] : sélectionne le serveur DNS BIND et sa documentation, * Serveur [[lamp|LAMP]] : sélectionne un serveur Linux/Apache/MySQL/PHP serveur prêt à l'emploi, * Serveur [[serveurs_messagerie|Mail]] : cette tâche sélectionne une variété de paquet nécessaire pour un serveur de mail générique, * Serveur [[openssh|OpenSSH]] : sélectionne les paquets nécessaires pour un serveur OpenSSH, * Base de données [[postgresql|PostgreSQL]] : cette tâche sélectionne les paquets client et serveur pour la base de données PostgreSQL, * [[cups|Serveur d'impression]] : cette tâche configure le système pour devenir serveur d'impression, * Serveur de fichiers [[samba|Samba]] : cette tâche configure le système pour devenir un serveur de fichiers Samba, qui convient parfaitement pour un réseau hétérogène Linux-Windows. * Serveur d'applications [[tomcat|Tomcat]] : installe Apache Tomcat et les dépendances requises, * Hôte pour [[kvm|machine virtuelle]] : inclut les paquets nécessaires pour faire fonctionner des machines virtuelles KVM, * Sélection manuelle des paquets : exécute Aptitude, lequel permet une sélection individuelle des paquets. L'installation de ces groupes de paquets est possible grâce à l'utilitaire Tasksel. Une des différences les plus importantes entre Ubuntu (debian) et les autres distributions GNU/Linux est qu'une fois installée, un paquet est déjà configuré avec des options par défauts fonctionnelles, et éventuellement, vous demande des informations complémentaires. En outre, quand vous installez une tâche, les paquets ne sont pas seulement installés, mais aussi configurés de façon à fournir un service totalement fonctionnel. Une fois le processus d'installation fini, vous pouvez voir une liste des tâches disponibles en tapant cette commande : tasksel --list-tasks La sortie de la commande va lister les tâches des autres versions d'Ubuntu, comme Kubuntu et Edubuntu. Notez que vous pouvez appeler la commande //[[tasksel|tasksel]]// elle même, ce qui va vous apporter un menu avec les différentes tâches disponibles. Vous pouvez voir une liste des paquetages installés avec chaque tâches en utilisant l'option --task-packages. Par exemple, pour lister les paquets installés avec la tâche Serveur DNS, entrez : tasksel --task-packages dns-server La sortie devrait rendre : bind9-doc bind9utils bind9 Si vous n'avez pas installé une des tâches pendant le processus d'installation, mais que par exemple vous avez décidé de faire de votre serveur LAMP un nouveau serveur DNS, vous pouvez simplement insérer le CD d'installation et depuis un terminal, saisir : sudo tasksel install dns-server ===== Mise à jour ===== Il existe deux commandes pour mettre à jour Ubuntu via la ligne de commande : sudo apt-get update && sudo apt-get upgrade La commande //upgrade// permet d'installer les versions les plus récentes de tous les paquets de la version d'Ubuntu en cours. sudo apt-get update && sudo apt-get dist-upgrade La commande //dist-upgrade// effectue la fonction //upgrade// en y ajoutant une gestion intelligente des changements de dépendances dans les nouvelles versions de paquets. Cette commande est recommandée pour les serveurs en production. ===== Mise à niveau (Migration) ===== Pour réaliser une mise à niveau en ligne de commande, consultez [[migration#migration_en_ligne_commande|ce paragraphe]]. ===== Configuration réseau ===== Ubuntu desktop est livré avec un certain nombre d'utilitaires graphiques pour configurer une interface réseau. Étant en environnement serveur, nous allons nous focaliser sur la configuration du réseau uniquement en ligne de commande. ==== Interface Ethernet ==== Les interfaces Ethernet sont identifiées par le système en utilisant par convention le nommage //ethX//, ou X représente une valeur numérique. La première interface est typiquement identifiée comme //eth0//, la seconde comme //eth1//, et les suivantes dans l'ordre numérique. Les interfaces Ethernet peuvent aussi être identifiée sous la forme //p1p5//. Si le serveur tourne sur VirtualBox, les interfaces peuvent également être sous la forme //enp0sX//. === Identifier une interface === Pour rapidement identifier toutes les interfaces Ethernet, vous pouvez utiliser la commande //ifconfig// : ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a Une autre application qui peut vous aider à identifier toutes les interfaces disponibles sur le système est la commande //lshw//. Dans l'exemple ci-dessous, lshw montre une interface Ethernet unique, avec comme nom logique //eth0//, avec le bus d'information, les détails du driver et toutes les fonctionnalités supportées. sudo lshw -class network *-network description: Ethernet interface product: BCM4401-B0 100Base-TX vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: eth0 version: 02 serial: 00:15:c5:4a:16:5a size: 10MB/s capacity: 100MB/s width: 32 bits clock: 33MHz capabilities: (snipped for brevity) configuration: (snipped for brevity) resources: irq:17 memory:ef9fe000-ef9ffffff ==== Noms logiques des interfaces Ethernet ==== Les noms logiques sont configurés dans le fichier ///etc/udev/rules.d/70-persistent-net.rules// . Si vous voulez contrôler quelle interface reçoit tel nom logique, trouvez la ligne contenant l'adresse physique MAC et modifiez la valeur //NAME=ethX//. Rebootez le système pour valider le changement. ==== Configuration des interfaces Ethernet ==== //ethtool// est un programme qui affiche ou change les paramètres des cartes Ethernet, comme l'auto-négociation, la vitesse du port, le mode duplex, et le Wake-on-Lan. Il n'est pas installé par défaut, mais est disponible dans les dépots. sudo apt-get install ethtool Cet exemple montre comment voir les fonctionnalités supportées et comment configurer une interface Ethernet : sudo ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) Link detected: yes Les changements faits avec //ethtool// sont temporaires, et seront perdus au démarrage suivant. Si vous voulez que ces paramètres soit définitifs, ajoutez les commandes //ethtool// après une instruction pre-up dans le fichier de configuration : ///etc/network/interfaces//. L'exemple suivant montre comment une interface identifiée comme eth0 peut être configurée d'une manière permanente avec une vitesse de 1000Mb/s en full duplex : auto eth0 iface eth0 inet static pre-up /usr/sbin/ethtool -s eth0 speed 1000 duplex full L'exemple ci-dessus montre une interface configurée en mode //static//. Cette solution fonctionne également avec une configuration //DHCP//. ==== Adressage IP ==== === Adressage temporaire ==== Pour une configuration temporaire, vous pouvez utiliser les commandes standards comme //ip//, //ifconfig//, et //route//, qui fonctionnent également sur les autres systèmes d'exploitations GNU/Linux. Ces commandes vous permettent d'appliquer une configuration, qui prend effet immédiatement, bien qu'elle ne soit pas persistente, et qu'elle soit perdue au redémarrage. Pour configurer temporairement une adresse IP, vous pouvez utiliser la commande //ifconfig// de cette manière : sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0 Pour vérifier la configuration de l'adresse de la carte eth0, réutilisez ifconfig : ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0 TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2574778386 (2.5 GB) TX bytes:1618367329 (1.6 GB) Interrupt:16 Pour configurer une passerelle par défaut, vous pouvez utiliser la commande //route// : sudo route add default gw 192.168.1.240 eth0 et pour vérifier la configuration de la passerelle : route -r Si vous avez besoin d'un serveur DNS temporairement, vous pouvez ajouter l'adresse d'un serveur DNS dans le fichier ///etc/resolv.conf// : (*** Cette information est obsolete dans les dernières version : faire man resolvconf et lire le README de resolvconf ***) nameserver 192.168.1.1 nameserver 192.168.1.2 Si vous n'avez plus besoin de cette configuration et voulez purger toute la configuration d'une interface, vous pouvez utiliser la commande //ip// qui vide les options : ip addr flush eth0 Purger la configuration IP ne nettoie pas le contenu de ///etc/resolv.conf//. Il faut supprimer les entrées manuellement. === Adressage IP Dynamique === Pour configurer votre serveur afin d'utiliser un adressage IP dynamique, ajoutez la méthode //dhcp// à l'interface appropriée dans ///etc/network/interfaces// : auto eth0 iface eth0 inet dhcp Après avoir modifié la configuration de la carte réseau comme ci-dessus, vous pouvez manuellement appliquer le changement avec la commande //ifup//, qui initialise le processus DHCP via dhclient. sudo ifup eth0 Pour désactiver manuellement une carte réseau, utilisez la commande //ifdown//, qui va initier le processus d'arrêt de DHCP et arrêter l'interface. sudo ifdown eth0 === Adressage IP statique === Pour configurer le système en adressage IP statique, ajoutez la méthode //static// à l'interface appropriée dans ///etc/network/interfaces// : auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.240 Vous pouvez activer/désactiver l'interface en utilisant les commandes //ifup// et //ifdown// comme vu précédemment. === L'interface de Loopback === L'interface de loopback est identifiée par le système comme lo et son adresse IP par défaut est 127.0.0.1. Cela peut être vérifié avec la commande //ifconfig// : ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2718 errors:0 dropped:0 overruns:0 frame:0 TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB) Par défaut, il doit y avoir deux lignes dans le fichier ///etc/network/interfaces// qui configure automatiquement l'interface de loopback. Il est recommandé de conserver ces paramètres par défaut à moins d'avoir un but précis de le faire : auto lo iface lo inet loopback ==== Résolution de noms ==== Pour configurer le système pour utiliser la résolution de nom DNS, ajoutez l'adresse IP des serveurs DNS appropriés à votre réseau dans le fichier ///etc/resolv.conf//. Vous pouvez également ajouter un suffix DNS correspondant à votre nom de domaine réseau. search ubuntu-fr.lan nameserver 192.168.1.1 nameserver 192.168.1.2 L'option //search// peut également être utilisée avec plusieurs domaines, de telle sorte que les requêtes DNS seront complétées avec le suffix dans l'ordre indiqué par le fichier ///etc/resolv.conf//. Par exemple, si votre réseau dispose de plusieurs sous-domaine DNS : un parent ubuntu-fr.lan, et deux sous-domaines dev.ubuntu-fr.lan et asso.ubuntu-fr.lan, le fichier de configuration ressemblera à ceci : search ubuntu-fr.lan dev.ubuntu-fr.lan asso.ubuntu-fr.lan nameserver 192.168.1.1 nameserver 192.168.1.2 et si vous essayer de faire un ping sur le nom //serveur1//, votre système va automatiquement interroger le DNS en utilisant le FQDN (Fully Qualified Domain Name) dans cet ordre : - serveur1.ubuntu-fr.lan - serveur1.dev.ubuntu-fr.lan - serveur1.asso.ubuntu-fr.lan Si aucune réponse ne correspond, le serveur DNS renverra un résultat //notfound// et la requête DNS échouera. === Noms d'hôtes statiques === Les noms d'hôtes statiques peuvent être définis localement dans le fichier ///etc/hosts//. Les entrées dans le fichier //hosts// seront prioritaire par rapport au DNS par défaut. Cela implique que si votre système essaie de résoudre un nom d'hôte et qu'une entrée correspond dans le fichier //hosts//, il ne va pas essayer d'interroger le DNS. Dans certaines configurations, spécialement quand l'accès à Internet n'est pas requis, les serveurs qui communiquent avec un nombre limité de ressources peuvent être paramétrés pour utiliser avec avantage les noms d'hôtes statiques en lieu et place du DNS. L'exemple suivant est un exemple de fichier //hosts//, dans lequel un certain nombre de serveurs ont été identifiés simplement par leur nom d'hôte, leur alias et leur FQDN équivalent : 127.0.0.1 localhost 127.0.1.1 ubuntu-serveur 192.168.1.1 serveur1 www serveur1.ubuntu-fr.lan 192.168.1.2 serveur2 mail serveur2.ubuntu-fr.lan 192.168.1.3 serveur3 file serveur3.ubuntu-fr.lan 192.168.1.4 serveur4 backup serveur4.ubuntu-fr.lan === Configuration NSS (Name Service Switch) === L'ordre dans lequel votre système sélectionne une méthode de résolution de noms en adresses IP est contrôlé par le fichier de configuration de NSS (Name Service Switch) ///etc/nsswitch.conf//. Comme mentionné dans la section précédente, typiquement, les noms d'hôtes statiques définis dans ///etc/hosts// sont prioritaires par rapport à la résolution de noms DNS. L'exemple suivant montre la ligne responsable de cet ordre dans le fichier ///etc/nsswitch.conf// : hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 * **files** tente en premier la résolution dans le fichier ///etc/hosts//. * **mdns4_minimal** tente la résolution du nom en utilisant un Multicast DNS. * **[NOTFOUND=return]** veut dire que toute réponse //notfound// renvoyée par le processus mdns4_minimal précédent doit être traitée comme autoritaire, et le système ne doit pas continuer d'attendre une réponse. * **dns** représente une requête légale unicast DNS. * **mdns4** représente une requête multicast DNS. ==== Pont ==== Faire un pont entre de nombreuses interfaces est une configuration un peu plus avancée, mais est vraiment utile dans de nombreux scénarios. Un premier scénario est de configurer un pont avec plusieurs interfaces réseau, et d'utiliser un firewall pour filtrer le trafic entre deux segments du réseau. Un autre scénario est d'utiliser un pont sur un système avec une interface pour permettre à des machines virtuelles d'accéder directement au réseau externe. L'exemple ci-dessous reprend ce dernier scénario : Avant de configurer un pont, vous devrez installer le paquet //bridge-utils// : sudo apt-get install bridge-utils Ensuite, configurer le pont en éditant le fichier ///etc/network/interfaces// : auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.1.10 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off Redémarrer le réseau pour initialiser le pont : sudo /etc/init.d/networking restart Le nouveau pont devrait maintenant fonctionner. //brctl// donne des informations utiles à propos de l'état du pont, quelles interfaces sont configurées pour le pont, etc. Voir le **man brctl** pour plus d'informations. ---- //Basé sur [[https://help.ubuntu.com/10.04/serverguide/C/index.html|« Ubuntu Server Guide - Community Ubuntu Documentation »]].//