Étiquette : redhat

17 septembre 2020 /
Lorsque vous essayez d'annuler une transaction yum via yum history undo <id> ou yum history rollback qui inclut systemd dans la liste des paquet, yum va échouer avec cette erreur:
Error: Trying to remove "systemd", which is protected
Pour pouvoir faire la transaction yum , on peut renommer ou supprimer(le fichier sera normalement recréer) /etc/yum/protected.d/systemd.conf et puis de relancer la commande. 

Remarque: ces rétrogradations ne sont pas officiellement prises en charge par Redhat. Pensez aux sauvegardes.
 
12 avril 2018 /

L’outil yum permet d’installer des packages. Par defaut, yum est configuré pour aller chercher les packages sur Internet grâce au fichier de configuration rhel-source.repo situé dans le dossier /etc/yum.repos.d, or les serveurs, notamment en entreprise, n’ont pas forcement d’accès à Internet.

Pour cela, il peut être utile de créer un dépôt local ces serveurs.
Pour se faire, il est nécessaire de monter l’ISO de RHEL 7 sur le lecteur de CD-ROM du serveur.

Monter l’image de Red Hat Enterprise Linux dans un dossier rhel_repo
mkdir /mnt/rhel
mount /dev/cdrom /mnt/rhel
Créer un dossier /depot/rhel_repo afin de copier la totalité du CD-ROM
mkdir -p /depot/rhel_repo
cp -Rp /mnt/rhel/* /depot/rhel_repo
Editer le fichier rhel7.repo situé dans /etc/yum.repos.d
vi /etc/yum.repos.d/redhat.repo

On y ajoute les lignes suivantes :

[InstallMedia]
name=Red Hat Enterprise Linux 7
metadata_expire=-1
gpgcheck=0
cost=500
baseurl=file:///depot/rhel_repo

Editer le fichier subscription-manager.conf situé dans /etc/yum/pluginconf.d
vi /etc/yum/pluginconf.d/subscription-manager.conf

On désactive « Subscription manager » en remplaçant la valeur du paramètre « enabled » :

enabled=1

Par :

enabled=0

Faire de même avec le fichier product-id.conf situé dans le même dossier
vi /etc/yum/pluginconf.d/produc-id.conf

On le désactive également en remplaçant la valeur du paramètre « enabled » :

enabled=1

Par :

enabled=0

Nettoyer le cache grâce aux commandes suivantes
rm -rfv /var/cache/yum/*
yum clean all
Mettre à jour l’ensemble des dépôts
yum update
Démonter le CD-ROM et supprimer le répertoire de montage
umount /mnt/rhel
rm -rf /mnt/rhel

 

10 février 2017 /

Voici comment configurer une agrégation de liens sur les ports Ethernet dans CentOS7 et RH7.
Dans mon cas, j’ai deux cartes (ens192 & ens224) qui formeront une interface d’agrégat (bond0).

L’agrégation peut fonctionner suivant plusieurs modes qui détermineront son fonctionnement:

Mode 0 : Round Robin , équilibrage de charge

La transmission des paquets se fait de façon séquentielle sur chacune des cartes actives dans l’agrégat. Ce mode augmente la bande passante et gère la tolérance de panne.

Mode 1 : Active – passive

Ce mode ne gère que la tolérance de panne. Si une des interfaces est désactivée, une autre du bond prend le relais.

Mode 2 : Balance xor

Une interface est affectée à l’envoi vers une même adresse MAC. Ainsi les transferts sont parallélisés et le choix de l’interface suit la règle : (Adresse MAC de la source XOR Adresse MAC de la destination) modulo nombre d’interfaces.

Mode 3 : Broadcast

Tout le trafic est envoyé par toutes les interfaces

mode 4 : 802.3ad ou LCAP

Ce mode s’appuie sur la norme IEEE 802.3ad Dynamic link aggregation. Toutes les interfaces du groupe sont agrégées de façon dynamique, ce qui augmente la bande passante et gère la tolérance de panne. Cela implique que le switch gère le 802.ad et les interfaces soient compatibles mii-tool et/ou ethtool.

mode 5 : balance-tlb

Adaptive transmit load balancing : seule la bande passante en sortie est load balancée selon la charge calculée en fonction de la vitesse, ceci pour chaque interface. Le flux entrant est affecté à l’interface courante. Si celle-ci devient inactive, une autre prend alors l’adresse MAC et devient l’interface courante.

mode 6 : balance-alb

Adaptive load balancing : ce mode inclut en plus du tlb un load balancing sur le flux entrant et seulement pour un trafic IPV4. L’équilibrage est réalisé au niveau ARP. Le module intercepte les réponses pour y réécrire l’adresse MAC de l’une des interfaces du bond tout en tenant compte des spécificités du protocole ARP. La répartition entre les différentes interfaces, se fait de façon séquentielle ( round robin ).

 

Si le module d’agrégation n’est pas chargé, utilisez la commande ci-dessous pour le charger:

 

modprobe --first-time bonding

 

Pour afficher les informations du module d’agrégation:

 

modinfo bonding

 

Création de l’interface bond0 :

 

vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.148.14.244
NETMASK=255.255.255.0
GATEWAY=10.148.14.1
BONDING_OPTS="mode=0 miimon=100"

Le paramètre « BONDING_OPTS » décrit le mode qui sera utilisé.
Dans notre cas, nous avons configuré l’interface pour fonctionner en mode 0 (Round Robin) et nous avons défini la fréquence des MII link monitoring à 100 (en millisecondes).

 

Modification des deux interfaces qui vont être agrégées:

 

vi /etc/sysconfig/network-scripts/ifcfg-ens192

TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
UUID=ae1b730e-2c44-4662-83d8-815ae54bb7ed
DEVICE=ens192
ONBOOT=no

devient :

TYPE=Ethernet
BOOTPROTO=none
NAME=ens192
UUID=ae1b730e-2c44-4662-83d8-815ae54bb7ed
DEVICE=ens192
ONBOOT=yes
MASTER=bond0
SLAVE=yes

vi /etc/sysconfig/network-scripts/ifcfg-ens224

TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens224
UUID=796aeb4a-97d4-4763-a350-4f09cb77dbb9
DEVICE=ens224
ONBOOT=no

devient

TYPE=Ethernet
BOOTPROTO=none
NAME=ens224
UUID=796aeb4a-97d4-4763-a350-4f09cb77dbb9
DEVICE=ens224
ONBOOT=yes
MASTER=bond0
SLAVE=yes

Redémarrage du service réseau:

systemctl restart network.service

 

Vérification de l’agrégation:

 

ifconfig

bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.148.14.244 netmask 255.255.255.0 broadcast 10.148.14.255
inet6 fe80::20c:29ff:feae:79ef prefixlen 64 scopeid 0x20 ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)
RX packets 17755 bytes 1701509 (1.6 MiB)
RX errors 0 dropped 36 overruns 0 frame 0
TX packets 1555 bytes 138441 (135.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens192: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)
RX packets 7901 bytes 757796 (740.0 KiB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 588 bytes 46424 (45.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens224: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)
RX packets 8927 bytes 855269 (835.2 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 795 bytes 73253 (71.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Boucle locale)
RX packets 610 bytes 55904 (54.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 610 bytes 55904 (54.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

On peut également voir son bon fonctionnement avec la commande ip:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
3: ens224: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
inet 10.148.14.244/24 brd 10.148.14.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feae:79ef/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever

On peut également afficher les paramètres de l’agrégation, comme le mode utilisé et l’interface esclave:

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:ae:79:f9
Slave queue ID: 0

Slave Interface: ens192
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:ae:79:ef
Slave queue ID: 0

 

Configuration d’un alias ip sur l’agrégation:

 

cp -p /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/sysconfig/network-scripts/ifcfg-bond0:1

vi /etc/sysconfig/network-scripts/ifcfg-bond0:1

Et nous allons adapter les parametres « DEVICE » et « IPADDR » comme ci dessous:

DEVICE=bond0:1
TYPE=Bond
NAME=bond0:1
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.148.14.216
NETMASK=255.255.255.0
GATEWAY=10.148.14.1
BONDING_OPTS="mode=0 miimon=100"

Redémarrez le service réseau:

systemctl restart network.service

Vérification:

ifconfig

bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.148.14.244 netmask 255.255.255.0 broadcast 10.148.14.255
inet6 fe80::20c:29ff:feae:79ef prefixlen 64 scopeid 0x20 ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)
RX packets 23580 bytes 2260763 (2.1 MiB)
RX errors 0 dropped 50 overruns 0 frame 0
TX packets 1828 bytes 182463 (178.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

bond0:1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.148.14.216 netmask 255.255.255.0 broadcast 10.148.14.255
ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)

ens192: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)
RX packets 67 bytes 5428 (5.3 KiB)
RX errors 0 dropped 3 overruns 0 frame 0
TX packets 20 bytes 1544 (1.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens224: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:ae:79:ef txqueuelen 1000 (Ethernet)
RX packets 62 bytes 5128 (5.0 KiB)
RX errors 0 dropped 3 overruns 0 frame 0
TX packets 13 bytes 1354 (1.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Boucle locale)
RX packets 661 bytes 60416 (59.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 661 bytes 60416 (59.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

On peut également voir son bon fonctionnement avec la commande ip:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
3: ens224: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
inet 10.148.14.244/24 brd 10.148.14.255 scope global bond0
valid_lft forever preferred_lft forever
inet 10.148.14.216/24 brd 10.148.14.255 scope global secondary bond0:1
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feae:79ef/64 scope link
valid_lft forever preferred_lft forever

4 avril 2016 /

Pensez à déclarer le serveur dés le début dans l’AD pour éviter de patienter durant la réplication!

Avec pour domaine starmate.fr, en contrôleur primaire DC001 (192.168.2.10) et en contrôleur secondaire DC002 (192.168.2.11).

1 – Prérequis

Synchroniser l’heure avec l’adresse ip du contrôleur de domaine (ici DC001):

ntpdate 192.168.2.10

Installation de Samba, Winbind et Kerberos:

yum install samba samba-winbind samba-winbind-clients krb5-workstation krb5-libs oddjob-mkhomedir oddjob

2 – Configuration

Configuration de Kerberos:

vi /etc/krb5.conf

Et on y mets uniquement ça:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = FR.STARMATE.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
FR.STARMATE.LOCAL = {
kdc = DC001
kdc = DC002
admin_server = DC001.fr.starmate.local
admin_server = DC002.fr.starmate.local
default_domain = FR.STARMATE.LOCAL
}

[domain_realm]
.fr.starmate.local = FR.STARMATE.LOCAL
fr.starmate.local = FR.STARMATE.LOCAL
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

On peut tester nos paramètres avec un compte administrateur du domaine (ici admindevops):

kinit admindevops

Configuration de Samba:

vi /etc/samba/smb.conf

Et on y mets uniquement ça (à adapter suivant votre configuration):

[global]
workgroup = STARMATE-FR
interfaces = 127.0.0.1 eth0
bind interfaces only = true
security = ads
passdb backend = tdbsam
template shell = /bin/bash
template homedir = /home/%D/%U
realm = FR.STARMATE.LOCAL
password server = DC001.fr.starmate.local, DC002.fr.starmate.local
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = yes
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
printing = cups
printcap name = cups
load printers = no

3 – Jonction au domaine

Toujours avec notre compte administrateur (ici admindevops) sur le domaine, on va maintenant rejoindre le domaine avec notre serveur:

net join -U admindevops

Pour vérifier que l’on a bien rejoint le domaine:

net ads testjoin

N.B : la jonction au domaine n’est pas instantanée et peut durer quelques minutes.

4 – Authentification avec l’AD

Configuration de Winbind:

authconfig --enablewinbind --enablemd5 --enableshadow --enablewinbindauth --enablelocauthorize --enablemkhomedir --update

On modifie la configuration de PAM:

vi /etc/pam.d/system-auth

Et on y mets uniquement ça (à adapter suivant votre configuration):

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_winbind.so krb5_auth krb5_ccache_type=FILE use_first_pass
auth        required      pam_deny.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_winbind.so
account     required      pam_permit.so
password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_winbind.so use_authtok
password    required      pam_deny.so
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     required      pam_mkhomedir.so skel=/etc/skel umask=0077
#session     required      pam_oddjob_mkhomedir.so skel=/etc/skel umask=0077     => Decommentez si votre serveur est un RHEL7 ou Centos 6-7

Activation des services:

service smb start
service winbind start
service oddjobd start

Afficher la liste des groupes d’Active Directory :

sudo wbinfo -g

Afficher la liste des utilisateurs d’Active Directory :

sudo wbinfo -u

Création du répertoire d’accueil des ~/home et activation du démarrage de winbind, samba et oddjob:

mkdir /home/STARMATE-FR
chcon --reference=/home /home/STARMATE-FR
chkconfig smb on
chkconfig winbind on
chkconfig oddjobd on

Vous devriez maintenant pouvoir vous connecter avec un compte du domaine AD 2012.

5 – Limitation d’accès

Pour filtrer les utilisateurs qui se connecte sur le serveur par groupe,  il faut modifier le fichier /etc/security/pam_winbind.conf et ajouter les groupes désirés (ici le groupe « groupe_des_admins »):

vi /etc/security/pam_winbind.conf

Puis on ajoute/modifie le paramètre suivant:

require_membership_of = groupe_des_admins

Pour déclarer plusieurs groupes, il faut faire une séparation avec une virgule.

Puis, si on veut donner le droit à la commande sudo à ce groupe:

visudo

et on y ajoute cette ligne:

%groupe_des_admins ALL=(ALL) ALL

 

17 décembre 2015 /

EPEL (Extra Package for Entreprise Linux) est un dépôt qui fournit des paquets additionnels pour les distributions basées sur RedHat.

En installant EPEL vous aurez un nombre conséquent de paquets disponibles via le gestionnaire de paquets yum.

  • Fournit beaucoup de paquets open source pour installer via Yum.
  • EPEL est 100 % open source et libre d’utilisation.
  • Il ne fournit pas tous les paquets en double de base et n’a aucun problème de compatibilité.
  • Tous les paquets sur EPEL sont maintenus par la communauté Fedora.

Pour installer le dépôt EPEL vous devez procéder de la manière suivante.

RHEL/CentOS 7 64 Bit:

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
rpm -ivh epel-release-7-5.noarch.rpm

RHEL/CentOS 6 32-64 Bit:

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

RHEL/CentOS 5 32-64 Bit:

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

RHEL/CentOS 4 32-64 Bit:

wget http://download.fedoraproject.org/pub/epel/4/i386/epel-release-4-10.noarch.rpm
rpm -ivh epel-release-4-10.noarch.rpm

wget http://download.fedoraproject.org/pub/epel/4/x86_64/epel-release-4-10.noarch.rpm
rpm -ivh epel-release-4-10.noarch.rpm

On vérifie que le dépôt a bien été ajouté et qu’il est actif:

yum repolist all

Voila, c’est fini.