Catégorie : Debian

10 février 2017 /

Voici comment configurer une agrégation de liens sur les ports Ethernet dans Ubuntu 16.04.
Dans mon cas, j’ai deux cartes (ens160 & ens192) 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 ).

 

Configuration du noyau via le fichier bonding.conf:

 

vi /etc/modprobe.d/bonding.conf

 

et on y ajoute cela:

alias bond0 bonding
options bonding mode=0 miimon=100 lacp_rate=1

 

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

 

modinfo bonding

 

Création de l’interface bond0 :

 

Installation du paquet qui va gérer l’agrégation ifenslave :

apt-get -y install ifenslave

 

Édition du fichier interfaces :

vi /etc/network/interfaces

 

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens160
iface ens160 inet dhcp

devient

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens160
iface ens160 inet manual
bond-master bond0

# The secondary network interface
auto ens192
iface ens192 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 10.148.14.244
gateway 10.148.14.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8 8.8.4.4
up /sbin/ifenslave bond0 ens160 ens192
down /sbin/ifenslave -d bond0 ens160 ens192

 

Pour ne pas se retrouver au prochain redémarrage avec ce genre de message:

« A start job is running for raise network interfaces (1 minutes of 5 mins 4 sec) »


il faut éditer ce fichier et modifier la valeur du paramètre « TimeoutStartSec » :

vi /etc/systemd/system/network-online.target.wants/networking.service

[Unit]
Description=Raise network interfaces
Documentation=man:interfaces(5)
DefaultDependencies=no
Wants=network.target
After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service
Before=network.target shutdown.target network-online.target
Conflicts=shutdown.target

[Install]
WantedBy=multi-user.target
WantedBy=network-online.target

[Service]
Type=oneshot
EnvironmentFile=-/etc/default/networking
ExecStartPre=-/bin/sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle'
ExecStart=/sbin/ifup -a --read-environment
ExecStop=/sbin/ifdown -a --read-environment
RemainAfterExit=true
TimeoutStartSec=30sec

 

« Failed to start Raise network interfaces – networking.service: Failed with result ‘timeout' »:

Il faut désactiver la configuration par default:

vi /etc/default/networking

On active le paramètre suivant et on le met sur « no »:

CONFIGURE_INTERFACES=no

Puis on redémarre:

reboot

 

Une fois redémarré, Il est possible de visualiser l’état de l’agrégat « bond0 » en affichant le contenu de ce fichier :

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: ens160
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

Slave Interface: ens192
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

 

Vérification de l’agrégat:

ifconfig

bond0     Link encap:Ethernet  HWaddr 00:0c:29:ae:79:ef
inet addr:10.148.14.244  Bcast:10.148.14.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feae:79ef/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
RX packets:2467 errors:0 dropped:19 overruns:0 frame:0
TX packets:553 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:231406 (231.4 KB)  TX bytes:45953 (45.9 KB)

ens160    Link encap:Ethernet  HWaddr 00:0c:29:ae:79:ef
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
RX packets:1235 errors:0 dropped:0 overruns:0 frame:0
TX packets:277 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:115802 (115.8 KB)  TX bytes:22197 (22.1 KB)

ens192    Link encap:Ethernet  HWaddr 00:0c:29:ae:79:ef
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
RX packets:1232 errors:0 dropped:0 overruns:0 frame:0
TX packets:276 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:115604 (115.6 KB)  TX bytes:23756 (23.7 KB)

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:65536  Metric:1
RX packets:1920 errors:0 dropped:0 overruns:0 frame:0
TX packets:1920 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:142080 (142.0 KB)  TX bytes:142080 (142.0 KB)

 

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 group default 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: ens160: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:ae:79:ef brd ff:ff:ff:ff:ff:ff
3: ens192: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default 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 group default 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

24 octobre 2016 /

Rien n’empêche une machine de disposer de plusieurs adresses IP, sur des interfaces différentes ou sur une même interface et ceci présente de nombreux avantages dans plusieurs circonstances, par exemple :

  • Pour un serveur web (une IP par site).
  • Pour un serveur quelconque, disposer d’une adresse l’IP dédié à l’administration, et d’une ou plusieurs pour les services.
  • Pour un cluster (une IP par service ou groupe de services).
  • Pour un répartiteur de charge (une IP pour chaque serveur virtuel).

Alias sur Debian

Un alias se configure dans le fichier /etc/network/interfaces.
Pour configurer un alias eth0:0, les lignes suivantes doivent y être ajoutées (et adaptées selon les besoins et votre configuration actuelle):

auto eth0:0
iface eth0:0 inet static
address 192.168.1.70
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0

L’alias peut être activé et désactivé comme toute carte avec les commandes ifup et ifdown:

ifup eth0:0
ifdown eth0:0

Alias sur Red Hat

Un alias se configure en créant un fichier dans /etc/sysconfig/network-scripts/ , par exemple ifcfg-eth0:0.
Dans l’exemple de ifcfg-eth0:0, il doit reprendre une structure identique à la configuration de l’interface réseau eth0, excepté l’adresse MAC qui est inutile.
Voici un exemple de contenu :

DEVICE=eth0:0
IPADDR=192.168.1.70
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes

L’alias peut être activé et désactivé comme toute carte avec les commandes ifup et ifdown.

Sur les distributions type RedHat, on peut également créer des plages d’IP multiples en affectant cette plage à une interface réseau.
Il devient alors possible, d’un seul coup, de créer autant d’alias que souhaité, à condition que les adresses IP se suivent.

Si on souhaite créer 19 alias sur eth0 allant de l’IP 192.168.1.71 à 192.168.1.90, le fichier /etc/sysconfig/network-scripts/ifcfg-eth0-range0 doit être créé et rempli avec le contenu suivant :

IPADDR_START=192.168.1.71
IPADDR_END=192.168.1.90
CLONENUM_START=0
NETMASK=255.255.255.0

Le paramètre CLONENUM_START indique le numéro d’alias de départ.

L’interface associée doit être arrêtée et démarrée pour que la modification soit prise en compte, soit par ifdown/ifup, soit par le redémarrage du service network.

Le résultat est le suivant :

ifconfig

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.71 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:1 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.72 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:2 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.73 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:3 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.74 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:4 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.75 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:5 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.76 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Etc… jusqu’a eth0:18.

25 janvier 2016 /

Ufw (pour « Uncomplicated Firewall ») permet de gérer Netfilter, le pare-feu de Linux.
Il a été développé à l’origine par Caconical, mais maintenant il est disponible sur d’autres distributions comme Debian.

Par defaut, Ufw interdit tous les paquets entrants et autorise tous les paquets sortants. Il autorise également toutes les connexions en cours.
Il ne reste donc qu’à autoriser les paquets entrants suivants nos besoins.

Installation Ufw

apt-get install ufw

Activation d’Ufw

ufw enable

Autoriser un flux entrant (ici ssh)

ufw allow 22

Interdire un flux entrant (ici ssh)

ufw deny 22

Ufw possede des regles prédéfinies permettant d’autoriser des applications sans avoir a entrer manuellement le numéro de port.

Pour obtenir la liste des applications disponibles:

ufw app list

Ensuite pour autorisé une application

ufw allw SSH

Autoriser un flux entrant (règle complexe)

ufw allow from 2.5.8.3 to any port 22

Cette commande va autoriser les connexions ssh a partir de l’ip 2.5.8.3.

Interdire un flux entrant (règle complexe)

ufw deny from 2.5.8.3 to any port 22

Cette commande va interdire les connexions ssh a partir de l’ip 2.5.8.3.

Pour lister les règles en place avec numérotation :

ufw status numbered

Supprimer une règle (en se basant sur la numérotation (ici règle n°2):

ufw delete 2

11 janvier 2016 /

Pour utiliser apt-get derrière un proxy, il y a deux solutions:

Pour un usage ponctuel, il suffit d’exporter les paramètres du proxy que l’on souhaite utiliser dans la variable d’environnement http_proxy, sous la forme suivante :

export http_proxy=http://utilisateur:motdepasse@serveurproxy.com:port

utilisateur= Utilisateur pour se connecter au proxy (si nécessaire).
motdepasse=mot de passe associé à l’utilisateur du proxy (si nécessaire).
serveurproxy.com= l’adresse du proxy.
port= Port d’écoute du proxy.

Pour activer le proxy de façon pérenne, il faut créer un fichier /etc/apt/apt.conf.d/proxy puis d’y ajouter la ligne suivante :

Acquire::http::Proxy "http://utilisateur:motdepasse@example.com:port";

16 novembre 2015 /

Pour avoir rapidement un état des services qui se lancent au démarrage (systemd):

systemctl list-unit-files | grep enable

Pour lister tous les services:

systemctl list-units --type=service