Archives pour la catégorie ‘Debian’

Debian : serveur NFS avec ports statiques

# apt-get install nfs-common nfs-kernel-server portmap
# vim /etc/default/nfs-common
STATDOPTS="--port 32765 --outgoing-port 32766"
# vim /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="-p 32767"
# vim /etc/default/quota
RPCRQUOTADOPTS="-p 32769"
# vim /etc/modprobe.d/nfs.conf 
options lockd nlm_udpport=32768 nlm_tcpport=32768
options nfs callback_tcpport=32764
# shutdown -r now

Règles Iptables :

-A INPUT -i eth0 -p tcp -m state --state NEW -m multiport --dports 111,2049,32764:32769 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m multiport --dports 111,2049,32764:32769 -j ACCEPT

Munin-async : nettoyage des fichiers temporaires

root@vm-mon:~# cat /etc/cron.daily/munin-asyncd
#!/bin/sh

find /var/lib/munin-async/ -type f -name 'munin-daemon.*.86400' -daystart -mtime +7 -delete

Remarque : le fichier de configuration logrotate fourni dans le package Debian est à supprimer.

Munin : configuration en mode asynchrone

La version 2 de Munin apporte un nouveau mode de récupération des données entre le master et ses nodes : le mode asynchrone. Celui-ci vise à corriger deux situations critiques à savoir :

  • lorsque le nombre de nodes à monitorer est important, le temps de récupération des données depuis les nodes est supérieur à celui de mise à jour.
  • lorsque les nodes sont distants, les connexions peuvent finir en timeout du fait d’une ligne lente ou d’un trop grand nombre d’éléments monitorés.

Dans les deux cas, le monitoring est impossible. Toutefois, ces contraintes sont levées en activant le mode asynchrone. Un démon supplémentaire munin-asyncd est alors lancé sur chaque node, dont le rôle est de se connecter à munin-node pour récupérer et stocker temporairement les résultats au format texte. Le serveur munin se contente ensuite de récupérer ces fichiers par connexion SSH pour en générer les fichiers RRD.

Je présente ici la configuration d’un node en asynchrone.

Configuration du node

root@node:~# apt-get install munin-node munin-async munin-plugins-extra

Seule l’écoute réseau en local est nécessaire :

root@node:~# nano /etc/munin/munin-node.conf
listen 120.0.0.1
allow ^127\.0\.0\.1$

Le node est prêt pour être démarré ; munin-asyncd doit être lancé à la suite  :

root@node:~# /etc/init.d/munin-node restart && /etc/init.d/munin-async restart

Configuration du serveur

root@server:~# apt-get install munin

Les clés SSH de l’utilisateur munin doivent être générées afin que celui-ci puisse se connecter en tant que munin-async sur le node :

root@server:~# su -s /bin/bash munin
munin@server:~$ ssh-keygen -t rsa
munin@server:~$ ssh-copy-id munin-async@node

L’utilisateur munin peut alors se connecter sur le node. La première connexion SSH doit être faite manuellement afin de valider la confirmation (ne pas le faire bloque la récupéreration des données) :

munin@server:~$ ssh munin-async@node

Par sécurité, je vous invite à restreindre la connexion SSH sur le node :

  • en insérant une ligne de ce type dans le fichier /etc/security/access.conf :
    +munin-async : [IP_SRV_MUNIN]
    
  • limiter la connexion SSH de l’utilisateur munin à ne pouvoir exécuter que la commande munin-async :
    munin-async@node$ nano .ssh/authorized_keys
    
    no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,command="/usr/share/munin/munin-async --spoolfetch" ssh-rsa [PUBLIC KEY]
    

Vous pouvez relancer la connexion SSH, munin-async prend la main comme shell. Ceci validera au final la configuration réseau. Reste à déclarer ce node au niveau du master :

root@server:~# nano /etc/munin/munin-node.conf
[node]
   address ssh://munin-async@node

Patientez quelques minutes (dix minutes) pour que les graphes soient visibles.

Debian : afficher l’origine des packages installés

La commande apt-show-versions fait le job :

root@vks10205:~# apt-get install apt-show-versions

Par exemple, pour afficher les packages installés depuis testing :

root@vks10205:~# apt-show-versions|grep testing
libc-dev-bin/testing uptodate 2.17-7
libc6/testing uptodate 2.17-7
libc6-dev/testing uptodate 2.17-7
libfontconfig1/testing uptodate 2.10.2-2
libgd3/testing uptodate 2.1.0-2
libhtml-parser-perl/testing uptodate 3.71-1
libopendbx1/testing uptodate 1.4.6-3
libopendbx1-mysql/testing uptodate 1.4.6-3
libopendbx1-sqlite3/testing uptodate 1.4.6-3
libopendkim9/testing uptodate 2.8.3-1
libopendmarc1/testing uptodate 1.1.3-1
librbl1/testing uptodate 2.8.3-1
libtiff4/testing uptodate 3.9.7-1
libvbr2/testing uptodate 2.8.3-1
libvpx1/testing uptodate 1.2.0-2
libx11-6/testing uptodate 2:1.6.0-1
libx11-data/testing uptodate 2:1.6.0-1
libxau6/testing uptodate 1:1.0.8-1
libxcb1/testing uptodate 1.9.1-3
locales/testing uptodate 2.17-7
nginx/testing uptodate 1.4.1-3
nginx-common/testing uptodate 1.4.1-3
nginx-full/testing uptodate 1.4.1-3
opendkim/testing uptodate 2.8.3-1
opendmarc/testing uptodate 1.1.3-1

XFCE : support des partages SMB/CIFS dans Thunar

A chaque fois j’oublie le nom de ce package …

root@info63:~# aptitude install gvfs-backends

Postfix : ajout du support DMARC

Pour prendre en charge DMARC sur un MTA Postfix, il convient d’installer OpenDMARC. Çà tombe bien c’est rapide.

Installation

root@mailsrv:~# cat /etc/apt/apt.conf
APT::Default-Release "stable";
root@mailsrv:~# nano /etc/apt/apt.conf
# stable
deb http://ftp.debian.org/debian wheezy main contrib non-free
deb http://security.debian.org wheezy/updates main contrib non-free

# testing
deb http://ftp.debian.org/debian testing main contrib non-free
deb http://security.debian.org testing/updates main contrib non-free
root@mailsrv:~# apt-get update
root@mailsrv:~# apt-get dist-upgrade
root@mailsrv:~# apt-get -t testing install opendmarc

Configuration de Postfix

root@mailsrv:~# nano /etc/postfix/main.conf
smtpd_milters = inet:127.0.0.1:8893
non_smtpd_milters = inet:127.0.0.1:8893

MySQL : installation multi-instances

Dans le cas ou vous gérez plusieurs serveurs MySQL (distants ou sur différents VLAN), il peut être utile de déporter tout traitement long sur un seul serveur SQL dédié pour peu de regrouper l’ensemble des bases de données.

En attendant MariaDB 10 qui permettra la réplication multi-master, il est nécessaire de mettre en place plusieurs instances MySQL sur la même machine. Une réplication pourra ensuite être lancée sur chaque instance vers chaque serveur SQL source, configuré évidemment en master.

Voici donc un guide rapide de mise en place d’instances multiples MySQL (l’ancienne méthode tout à la main n’est plus nécessaire et c’est tant mieux).

Installation

root@sqlbackend:~# apt-get install mysql-server-5.5

Configuration

Je vais créer ici trois nouvelles instances mysql1, mysql2 et mysql3 ; chacune aura donc sa directive serveur. A noter que je ne supprime pas l’instance principale pour ne pas me ramasser à la prochaine mise à jour OS. Il faut cependant commenter l’option user sinon les instances supplémentaires ne se lanceront pas.

root@sqlbackend:~# nano /etc/mysql/my.cnf
[mysqld]
#user = mysql

[mysqld1]
user            = mysql1
pid-file        = /var/run/mysqld1/mysqld.pid
socket          = /var/run/mysqld1/mysqld.sock
port            = 33061
basedir         = /usr
datadir         = /var/lib/mysql1
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

bind-address            = 127.0.0.1
general_log_file        = /var/log/mysql1/mysql.log
general_log             = 1
[mysqld2]
user            = mysql2
pid-file        = /var/run/mysqld2/mysqld.pid
socket          = /var/run/mysqld2/mysqld.sock
port            = 33062
basedir         = /usr
datadir         = /var/lib/mysql2
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

bind-address            = 127.0.0.1
general_log_file        = /var/log/mysql2/mysql.log
general_log             = 1

[mysqld3]
user            = mysql3
pid-file        = /var/run/mysqld3/mysqld.pid
socket          = /var/run/mysqld3/mysqld.sock
port            = 33063
basedir         = /usr
datadir         = /var/lib/mysql3
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

bind-address            = 127.0.0.1
general_log_file        = /var/log/mysql3/mysql.log
general_log             = 1

Chaque instance s’exécute sous un utilisateur dédié :

root@sqlbackend:~# useradd -r mysql1
root@sqlbackend:~# useradd -r mysql2
root@sqlbackend:~# useradd -r mysql3

Les répertoires de chaque instance sont à créer de cette manière :

root@sqlbackend:~# mkdir /var/lib/mysql{1,2,3}
root@sqlbackend:~# mkdir /var/log/mysql{1,2,3}
root@sqlbackend:~# chown mysql1:adm /var/log/mysql1
root@sqlbackend:~# chown mysql2:adm /var/log/mysql2
root@sqlbackend:~# chown mysql3:adm /var/log/mysql3
root@sqlbackend:~# mkdir /var/run/mysqld{1,2,3}
root@sqlbackend:~# chown mysql1 /var/run/mysqld1
root@sqlbackend:~# chown mysql2 /var/run/mysqld2
root@sqlbackend:~# chown mysql3 /var/run/mysqld3

Il reste à initialiser les datastores :

root@sqlbackend:~# mysql_install_db --datadir=/var/lib/mysql1 --user=mysql1
root@sqlbackend:~# mysql_install_db --datadir=/var/lib/mysql2 --user=mysql2
root@sqlbackend:~# mysql_install_db --datadir=/var/lib/mysql3 --user=mysql3

L’exécution de chaque instance est désormais possible :

root@sqlbackend:~# mysqld_multi --verbose --no-log start 1
root@sqlbackend:~# mysqld_multi --verbose --no-log start 2
root@sqlbackend:~# mysqld_multi --verbose --no-log start 3

Debian : mise en place d’IPMI

Voici les étapes nécessaires à une mise en place rapide d’IPMI sur un système Debian.

root@srv01:~# apt-get install ipmitool
root@srv01:~# lsmod | grep ipmi

Si les modules IPMI ne sont pas chargés, il faut le faire manuellement :

root@srv01:~# modprobe ipmi_si ipmi_devintf

Si le message d’erreur Error inserting ipmi_si: no such device survient, la carte réseau est tout simplement incompatible avec IPMI. Sinon, on peut remonter des infos pertinentes :

root@srv01:~# ipmitool chassis status
System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : previous
Last Power Event     :
Chassis Intrusion    : inactive
Front-Panel Lockout  : inactive
Drive Fault          : false
Cooling/Fan Fault    : false
Sleep Button Disable : not allowed
Diag Button Disable  : allowed
Reset Button Disable : allowed
Power Button Disable : allowed
Sleep Button Disabled: false
Diag Button Disabled : false
Reset Button Disabled: false
Power Button Disabled: false
root@srv01:~# ipmitool power status
Chassis Power is on
root@srv01:~# ipmitool sdr
Pwr Unit Status  | 0x00              | ok
Pwr Unit Redund  | 0x12              | ok
IPMI Watchdog    | 0x00              | ok
Physical Scrty   | 0x00              | ok
SMI Timeout      | 0x00              | ok
System Event Log | 0x00              | ok
System Event     | 0x00              | ok
BB +1.1V IOH     | 1.08 Volts        | ok
BB +1.1V P1 Vccp | 1.12 Volts        | ok
BB +1.1V P2 Vccp | 0.93 Volts        | ok
BB +1.5V P1 DDR3 | 1.51 Volts        | ok
BB +1.5V P2 DDR3 | 1.51 Volts        | ok
BB +1.8V AUX     | 1.77 Volts        | ok
BB +3.3V         | 3.28 Volts        | ok
BB +3.3V STBY    | 3.24 Volts        | ok
BB +3.3V Vbat    | 2.96 Volts        | ok
BB +5.0V         | 5.02 Volts        | ok
BB +5.0V STBY    | 4.89 Volts        | ok
BB +12.0V        | 11.94 Volts       | ok
BB +1.35v P1 MEM | disabled          | ns
BB +1.35v P2 MEM | disabled          | ns
Baseboard Temp   | 26 degrees C      | ok
Front Panel Temp | 22 degrees C      | ok
IOH Therm Margin | -45 degrees C     | ok
Mem P1 Thrm Mrgn | -46 degrees C     | ok
Mem P2 Thrm Mrgn | -47 degrees C     | ok
Processor 1 Fan  | 8000 RPM          | ok
Processor 1A Fan | 5568 RPM          | ok
Memory Fan 1     | 5632 RPM          | ok
Memory Fan 1R    | 7616 RPM          | ok
Processor 2 Fan  | 8000 RPM          | ok
Processor 2A Fan | 5504 RPM          | ok
Memory Fan 2     | 7808 RPM          | ok
Memory Fan 2R    | 5184 RPM          | ok
PS1 Status       | 0x01              | ok
PS2 Status       | 0x0b              | ok
PS1 Power In     | 84 Watts          | ok
PS2 Power In     | 0 Watts           | ok
PS1 Curr Out %   | 21 unspecified    | ok
PS2 Curr Out %   | 0 unspecified     | ok
PS1 Temperature  | 36 degrees C      | ok
PS2 Temperature  | 31 degrees C      | ok
P1 Status        | 0x80              | ok
P2 Status        | 0x80              | ok
P1 Therm Margin  | -68 degrees C     | ok
P2 Therm Margin  | -67 degrees C     | ok
P1 Therm Ctrl %  | 0 unspecified     | ok
P2 Therm Ctrl %  | 0 unspecified     | ok
P1 VRD Hot       | 0x00              | ok
P2 VRD Hot       | 0x00              | ok
CATERR           | 0x00              | ok
CPU Missing      | 0x00              | ok
IOH Therm Trip   | 0x00              | ok
NM Capabilities  | Not Readable      | ns

Une adresse IP peut en plus être attribue à la carte réseau pour permettre un management distant :

root@srv01:~# ipmitool lan set 1 ipaddr 172.16.0.1
root@srv01:~# ipmitool lan set 1 netmask 255.255.0.0
root@srv01:~# ipmitool lan set 1 defgw ipaddr 172.16.0.254
root@srv01:~# ipmitool lan set 1 access on
root@srv01:~# ipmitool user list
root@srv01:~# ipmitool user set password 2 secretpasswd

Depuis un autre poste , un reboot hard est possible par ces commandes :

manager@client:~$ ipmitool -H 172.16.0.1 -U root -P secretpasswd power off
manager@client:~$ ipmitool -H 172.16.0.1 -U root -P secretpasswd power on

Debian : installer un firewall léger

Un package sympa pour installer rapidement un firewall sur un système Debian :

bhuisgen@muse:~$ sudo apt-get install iptables-persistent

N’oubliez pas de régénérer les fichiers de configuration  si vous modifiez manuellement vos règles !

Debian : archive des dépôts

Dans le cas d’une distribution obsolète, l’utilisation des dépôts archive.debian.org permet à nouveau l’installation de packages, tout comme installer les dernières mises à jour …

root@oldsys:~# nano /etc/apt/sources.list
#deb ftp://mir1.ovh.net/debian/ lenny main contrib non-free
#deb-src ftp://mir1.ovh.net/debian/ lenny main contrib non-free

# archive
deb http://archive.debian.org/debian/ lenny main non-free contrib
deb-src http://archive.debian.org/debian/ lenny main non-free contrib

#deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free
Haut de page