SrvSTG » Historique » Version 5
Version 4 (Ludovic Pouzenc, 07/12/2014 14:25) → Version 5/9 (Ludovic Pouzenc, 07/12/2014 14:25)
h1. Serveur stg.tetaneutral.net
h2. Caractéristiques
* Gigabyte Brix (CPU Celeron)
* Samsung SSD 840 EVO 120GB
* Debian 7 amd64
h2. Traces Install
A partir d'une clé USB bootable Debian 7 amd64
h3. Options d'installation
* hostname initial : stg2 (changé en stg par la suite)
* partman : partition par defaut sur tout le disque sda
* grub : par défaut, sur sda
* tasksel : decocher interface graphique et cocher serveur ssh
* popcon : non
h3. Premières configs
<pre>
# Dépendances requises
apt-get install sudo vlan conntrack ntp fail2ban
# Utilitaires
apt-get install rsync vim emacs23-nox iftop htop screen ntpdate powertop molly-guard sysstat strace tcpdump
update-alternatives --config editor
#-> choisir vim.basic
# Création de tous les users
adduser nicolas sudo
adduser ludovic
adduser ludovic sudo
# [...]
</pre>
* Modification du /root/.bashrc pour dé-commenter les alias et les couleurs
h3. Modification du partitionnement
* Une meilleure option était de faire directement le bon paramétrage avec l'assistant partman de l'installeur Debian
<pre>
root@stg2:~# smartctl -a /dev/sda
Device Model: Samsung SSD 840 EVO 120GB
[...]
root@stg2:~# fdisk -l /dev/sda
Disque /dev/sda : 120.0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres, total 234441648 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000b8647
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 2048 19531775 9764864 83 Linux
/dev/sda2 19533822 234440703 107453441 5 Étendue
/dev/sda5 19533824 28186623 4326400 82 partition d'échange Linux / Solaris
/dev/sda6 28188672 234440703 103126016 83 Linux
</pre>
* Sauver le contenu de /home
* Démonter /home (ne pas avoir son shell dedans...)
* Restaurer le contenu de la sauvegarde /hoem dans /home (donc dans la partition racine)
* Détruire la partition correspondante. Idem pour le swap.
* Créer une partition primaire de la taille de l'espace restant pour /var
<pre>
root@stg2:~# fdisk -l /dev/sda
Disque /dev/sda : 120.0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres, total 234441648 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000b8647
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 2048 19531775 9764864 83 Linux
/dev/sda2 19531776 234441647 107454936 83 Linux
</pre>
* Virer /home et swap dans le fstab
* Rebooter (pour prise en compte des partitions)
* Formatter /dev/sda2 en ext4
* Copier /var dedans
* Mettre à jour le fstab (sda2 -> var)
* Reboot
h3. Tuning SSD
* Options de montage ext4 dans fstab : errors=remount-ro,noatime,discard,commit=300
* Scheduler deadline de manière persistante
(confère le fichier /etc/udev/rules.d/60-ssd-scheduler.rules)
* Swapiness minimal (le OOM killer sera + sensible mais pas d'IO dans tous les sens)
(confère le fichier /etc/sysctl.d/ssd.conf)
h3. Autres paramètres kernel
* Éviter de logguer les messages "UDP bad checksum..." pendant les flood UDP
* Désactiver les ICMP source route
* Activer l'IP forward au boot (si des choses partent en vrac après le démarrage... on a au moins déjà ça d'actif)
(confère le fichier /etc/sysctl.d/router.conf)
(Laurent Guerby recommande plutôt de rassembler tout ce qui est réseau dans /root/tetaneutral.sh)
h3. Config réseau
* Le NUC n'a qu'une interface réseau, donc tout part sur la base de VLANs
(confère /etc/network/interfaces)
* Changer le /etc/hostname : stg
* Utiliser /etc/debian_chroot pour éviter les confusions des machines
<pre>
echo NUC > /etc/debian_chroot
source ~/.bashrc
</pre>
* Mettre l'IP publique dans /etc/hosts (car sinon résolution de stg pourrie chez les adhérents)
<pre>
91.224.148.7 stg.tetaneutral.net stg
</pre>
* Le fichier /etc/hosts est généré par /root/tetneutral.sh, conserver les entrées système dans une copie
<pre>
(NUC)root@stg2:~# cp /etc/hosts /etc/hosts_system
</pre>
* Vérifier que le FQDN fonctionne
<pre>
(NUC)root@stg2:~# hostname
stg
(NUC)root@stg:~# hostname --fqdn
stg.tetaneutral.net
</pre>
h3. Service DHCP
<pre>
apt-get install isc-dhcp-server
</pre>
* Génération d'un fichier de conf DHCP dhcp-list.conf via /root/tetaneutral.sh
* Ajout dans /etc/dhcp/dhcpd.conf de
<pre>
include "/etc/dhcp/dhcp-list.conf";
</pre>
h3. DNS
<pre>
apt-get install pdns-recursor
</pre>
* Toute la config est dans /etc/powerdns/recursor.conf
h3. Munin-node
<pre>
apt-get install munin-node
</pre>
* Fichiers de configs dans /etc/munin/ : munin-node.conf, plugin-conf.d/custom, plugins_custom/traffic_all
* Liste des plugins activés : cpu, diskstats, entropy, fail2ban, forks, fw_conntrack, fw_forwarded_local, fw_packets, if_err_eth0, interrupts, irqstats, load, memory, open_files, open_inodes, processes, proc_pri, swap, threads, traffic_all, uptime, users, vmstat
* Test de l'ensemble des plug-ins :
<pre>
(NUC)root@stg:~# cd /etc/munin/plugins
(NUC)root@stg:/etc/munin/plugins# for p in $(ls); do munin-run $p; done
</pre>
h2. Caractéristiques
* Gigabyte Brix (CPU Celeron)
* Samsung SSD 840 EVO 120GB
* Debian 7 amd64
h2. Traces Install
A partir d'une clé USB bootable Debian 7 amd64
h3. Options d'installation
* hostname initial : stg2 (changé en stg par la suite)
* partman : partition par defaut sur tout le disque sda
* grub : par défaut, sur sda
* tasksel : decocher interface graphique et cocher serveur ssh
* popcon : non
h3. Premières configs
<pre>
# Dépendances requises
apt-get install sudo vlan conntrack ntp fail2ban
# Utilitaires
apt-get install rsync vim emacs23-nox iftop htop screen ntpdate powertop molly-guard sysstat strace tcpdump
update-alternatives --config editor
#-> choisir vim.basic
# Création de tous les users
adduser nicolas sudo
adduser ludovic
adduser ludovic sudo
# [...]
</pre>
* Modification du /root/.bashrc pour dé-commenter les alias et les couleurs
h3. Modification du partitionnement
* Une meilleure option était de faire directement le bon paramétrage avec l'assistant partman de l'installeur Debian
<pre>
root@stg2:~# smartctl -a /dev/sda
Device Model: Samsung SSD 840 EVO 120GB
[...]
root@stg2:~# fdisk -l /dev/sda
Disque /dev/sda : 120.0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres, total 234441648 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000b8647
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 2048 19531775 9764864 83 Linux
/dev/sda2 19533822 234440703 107453441 5 Étendue
/dev/sda5 19533824 28186623 4326400 82 partition d'échange Linux / Solaris
/dev/sda6 28188672 234440703 103126016 83 Linux
</pre>
* Sauver le contenu de /home
* Démonter /home (ne pas avoir son shell dedans...)
* Restaurer le contenu de la sauvegarde /hoem dans /home (donc dans la partition racine)
* Détruire la partition correspondante. Idem pour le swap.
* Créer une partition primaire de la taille de l'espace restant pour /var
<pre>
root@stg2:~# fdisk -l /dev/sda
Disque /dev/sda : 120.0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres, total 234441648 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000b8647
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 2048 19531775 9764864 83 Linux
/dev/sda2 19531776 234441647 107454936 83 Linux
</pre>
* Virer /home et swap dans le fstab
* Rebooter (pour prise en compte des partitions)
* Formatter /dev/sda2 en ext4
* Copier /var dedans
* Mettre à jour le fstab (sda2 -> var)
* Reboot
h3. Tuning SSD
* Options de montage ext4 dans fstab : errors=remount-ro,noatime,discard,commit=300
* Scheduler deadline de manière persistante
(confère le fichier /etc/udev/rules.d/60-ssd-scheduler.rules)
* Swapiness minimal (le OOM killer sera + sensible mais pas d'IO dans tous les sens)
(confère le fichier /etc/sysctl.d/ssd.conf)
h3. Autres paramètres kernel
* Éviter de logguer les messages "UDP bad checksum..." pendant les flood UDP
* Désactiver les ICMP source route
* Activer l'IP forward au boot (si des choses partent en vrac après le démarrage... on a au moins déjà ça d'actif)
(confère le fichier /etc/sysctl.d/router.conf)
(Laurent Guerby recommande plutôt de rassembler tout ce qui est réseau dans /root/tetaneutral.sh)
h3. Config réseau
* Le NUC n'a qu'une interface réseau, donc tout part sur la base de VLANs
(confère /etc/network/interfaces)
* Changer le /etc/hostname : stg
* Utiliser /etc/debian_chroot pour éviter les confusions des machines
<pre>
echo NUC > /etc/debian_chroot
source ~/.bashrc
</pre>
* Mettre l'IP publique dans /etc/hosts (car sinon résolution de stg pourrie chez les adhérents)
<pre>
91.224.148.7 stg.tetaneutral.net stg
</pre>
* Le fichier /etc/hosts est généré par /root/tetneutral.sh, conserver les entrées système dans une copie
<pre>
(NUC)root@stg2:~# cp /etc/hosts /etc/hosts_system
</pre>
* Vérifier que le FQDN fonctionne
<pre>
(NUC)root@stg2:~# hostname
stg
(NUC)root@stg:~# hostname --fqdn
stg.tetaneutral.net
</pre>
h3. Service DHCP
<pre>
apt-get install isc-dhcp-server
</pre>
* Génération d'un fichier de conf DHCP dhcp-list.conf via /root/tetaneutral.sh
* Ajout dans /etc/dhcp/dhcpd.conf de
<pre>
include "/etc/dhcp/dhcp-list.conf";
</pre>
h3. DNS
<pre>
apt-get install pdns-recursor
</pre>
* Toute la config est dans /etc/powerdns/recursor.conf
h3. Munin-node
<pre>
apt-get install munin-node
</pre>
* Fichiers de configs dans /etc/munin/ : munin-node.conf, plugin-conf.d/custom, plugins_custom/traffic_all
* Liste des plugins activés : cpu, diskstats, entropy, fail2ban, forks, fw_conntrack, fw_forwarded_local, fw_packets, if_err_eth0, interrupts, irqstats, load, memory, open_files, open_inodes, processes, proc_pri, swap, threads, traffic_all, uptime, users, vmstat
* Test de l'ensemble des plug-ins :
<pre>
(NUC)root@stg:~# cd /etc/munin/plugins
(NUC)root@stg:/etc/munin/plugins# for p in $(ls); do munin-run $p; done
</pre>