informatique:linux:reseau
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| informatique:linux:reseau [2016/11/14 09:45] – created pteu | informatique:linux:reseau [2025/04/25 10:15] (current) – Bridge pteu | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ======Le réseau sous Linux====== | + | ====== Le réseau sous Linux ====== |
| + | =====Outils en vrac===== | ||
| + | |||
| + | < | ||
| + | nmap (http:// | ||
| + | thcrut (http:// | ||
| + | hping (http:// | ||
| + | dsniff (http:// | ||
| + | ettercap (http:// | ||
| + | ggsniff (http:// | ||
| + | p0f (http:// | ||
| + | amap (http:// | ||
| + | vmap (http:// | ||
| + | nbtscan (http:// | ||
| + | </ | ||
| + | |||
| + | ====TUI monitoring==== | ||
| + | |||
| + | < | ||
| + | bmon | ||
| + | iptraf | ||
| + | iftop | ||
| + | nettop | ||
| + | </ | ||
| =====IP secondaire===== | =====IP secondaire===== | ||
| Line 50: | Line 73: | ||
| </ | </ | ||
| + | |||
| + | =====Bonding (agrégat)===== | ||
| + | |||
| + | Le **bonding** sous Linux est l' | ||
| + | |||
| + | ====Théorie==== | ||
| + | |||
| + | Il existe plusieurs modes de gestion de l' | ||
| + | |||
| + | Dans la mesure du possible (si le commutateur d'en face le gère et est configuré pour), il est recommandé d' | ||
| + | |||
| + | Avec le LACP (comme le balance-xor) on peut alors configurer la méthode de répartition de charge entre les interfaces avec le paramètre **xmit_hash_policy**, | ||
| + | * **layer2** : répartition par défaut (XOR des adresses MAC src/dst et packet type ID) | ||
| + | * **layer2+3** (XOR des adresses MAC/IP src/dst) | ||
| + | * **layer3+4** (XOR des ports src/dst (TCP-UDP) et des adresses IPs src/dst ; NB : ce mode n'est pas totalement respectueux de la norme 802.3ad et peux causer des dé-séquencements avec des paquets fragmentés)) | ||
| + | |||
| + | Il existe les modes **encap2+3** et **encap3+4**, | ||
| + | |||
| + | ====Configuration sous centOS==== | ||
| + | |||
| + | Fichiers de configuration : | ||
| + | * interfaces physiques : ''/ | ||
| + | * agrégat : ''/ | ||
| + | * driver bonding : ''/ | ||
| + | |||
| + | Pour fonctionner, | ||
| + | <code bash> | ||
| + | # eth2 | ||
| + | DEVICE=eth2 | ||
| + | BOOTPROTO=none | ||
| + | ONBOOT=yes | ||
| + | HWADDR=00: | ||
| + | MASTER=bond0 | ||
| + | SLAVE=yes | ||
| + | TYPE=Ethernet | ||
| + | USERCTL=no | ||
| + | |||
| + | # eth3 | ||
| + | DEVICE=eth3 | ||
| + | BOOTPROTO=none | ||
| + | ONBOOT=yes | ||
| + | HWADDR=00: | ||
| + | MASTER=bond0 | ||
| + | SLAVE=yes | ||
| + | TYPE=Ethernet | ||
| + | USERCTL=no | ||
| + | </ | ||
| + | |||
| + | Il faut installer le module de bonding : | ||
| + | <code bash> | ||
| + | cat / | ||
| + | alias bond0 bonding | ||
| + | options bond0 mode=4 xmit_hash_policy=layer2+3 miimon=100 downdelay=200 updelay=200 | ||
| + | </ | ||
| + | |||
| + | Exemple de configuration : | ||
| + | <code bash> | ||
| + | cat / | ||
| + | |||
| + | DEVICE=' | ||
| + | BONDING_MASTER=' | ||
| + | BONDING_MODULE_OPTS=' | ||
| + | BONDING_SLAVE0=' | ||
| + | BONDING_SLAVE1=' | ||
| + | BOOTPROTO=' | ||
| + | BROADCAST='' | ||
| + | ETHTOOL_OPTIONS='' | ||
| + | IPADDR=' | ||
| + | MTU=' | ||
| + | NAME=' | ||
| + | NETWORK='' | ||
| + | REMOTE_IPADDR='' | ||
| + | STARTMODE=' | ||
| + | USERCONTROL=' | ||
| + | </ | ||
| + | |||
| + | ====Diagnostique==== | ||
| + | |||
| + | <code bash> | ||
| + | cat / | ||
| + | |||
| + | Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) | ||
| + | |||
| + | Bonding Mode: IEEE 802.3ad Dynamic link aggregation | ||
| + | Transmit Hash Policy: layer2 (0) | ||
| + | MII Status: up | ||
| + | MII Polling Interval (ms): 100 | ||
| + | Up Delay (ms): 0 | ||
| + | Down Delay (ms): 0 | ||
| + | |||
| + | 802.3ad info | ||
| + | LACP rate: slow | ||
| + | Aggregator selection policy (ad_select): | ||
| + | Active Aggregator Info: | ||
| + | Aggregator ID: 1 | ||
| + | Number of ports: 2 | ||
| + | Actor Key: 33 | ||
| + | Partner Key: 101 | ||
| + | Partner Mac Address: 74: | ||
| + | |||
| + | Slave Interface: eth2 | ||
| + | MII Status: up | ||
| + | Link Failure Count: 0 | ||
| + | Permanent HW addr: 00: | ||
| + | Aggregator ID: 1 | ||
| + | |||
| + | Slave Interface: eth3 | ||
| + | MII Status: up | ||
| + | Link Failure Count: 1 | ||
| + | Permanent HW addr: 00: | ||
| + | Aggregator ID: 1 | ||
| + | </ | ||
| + | |||
| + | ====Références==== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | =====Bridge===== | ||
| + | |||
| + | Afficher les adresses MAC par port du bridge vmbr0: | ||
| + | <code bash> | ||
| + | # générique, | ||
| + | brctl showmacs vmbr0 | ||
| + | |||
| + | # affiche les MACs par port physique | ||
| + | bridge fdb show | grep " | ||
| + | </ | ||
| + | |||
| + | =====Diagnostique===== | ||
| + | |||
| + | Afficher les infos globales de la carte réseau: | ||
| + | <code bash> | ||
| + | ifconfig eno0 | ||
| + | eth0: flags=4163< | ||
| + | inet 10.0.34.26 | ||
| + | inet6 fe80:: | ||
| + | ether 30: | ||
| + | RX packets 4963422 | ||
| + | RX errors 0 dropped 208003 | ||
| + | TX packets 4106056 | ||
| + | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | ||
| + | device interrupt 16 memory 0x72180000-721a0000 | ||
| + | </ | ||
| + | Ici le compteur de paquets reçus supprimés (dropped) est important ; pourtant il n' | ||
| + | * reçus avec un mauvais tag de VLAN | ||
| + | * utilisant un protocole inconnu | ||
| + | * utilisant une adresse multicast non enregistrée | ||
| + | * reçus par un agrégat inactif | ||
| + | |||
| + | Les commandes suivantes sont des alternatives équivalentes qui remontent les mêmes compteurs : | ||
| + | <code bash> | ||
| + | ip -s link | ||
| + | 2: eth0: < | ||
| + | link/ether 30: | ||
| + | RX: bytes packets | ||
| + | 1239605132 4963422 | ||
| + | TX: bytes packets | ||
| + | 4178403021 4106057 | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | netstat -i | ||
| + | Table d' | ||
| + | Iface | ||
| + | eth0 | ||
| + | </ | ||
| + | |||
| + | Il est plus pertinent de consulter les compteurs avec l' | ||
| + | <code bash> | ||
| + | ethtool -S eth0 | ||
| + | NIC statistics: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | Dans cette dernière commande, le compteur **rx_missed_errors** indique des paquets perdus ; la cause est souvent la saturation du tampon de l' | ||
| + | |||
| + | Il peut être utile d' | ||
| + | <code bash> | ||
| + | # afficher les paramètres actuels et les max admis | ||
| + | ethtool -g eno0 | ||
| + | Ring parameters for eno0: | ||
| + | Pre-set maximums: | ||
| + | RX: 4096 | ||
| + | RX Mini: 0 | ||
| + | RX Jumbo: | ||
| + | TX: 4096 | ||
| + | Current hardware settings: | ||
| + | RX: 256 | ||
| + | RX Mini: 0 | ||
| + | RX Jumbo: | ||
| + | TX: 256 | ||
| + | |||
| + | # augmenter les buffers rx/tx | ||
| + | ethtool -G eno0 rx 4096 tx 4096 | ||
| + | </ | ||
| + | |||
| + | =====Tips===== | ||
| + | |||
| + | ====Activer le TCP BBR==== | ||
| + | |||
| + | Pour remplacer l' | ||
| + | - vérifier que votre kernel a été compilé avec les bons modules : | ||
| + | <code bash> | ||
| + | $ grep ' | ||
| + | && grep ' | ||
| + | && grep -E ' | ||
| + | CONFIG_TCP_CONG_BBR=m | ||
| + | CONFIG_NET_SCH_FQ_CODEL=m | ||
| + | CONFIG_NET_SCH_FQ=m | ||
| + | CONFIG_TCP_CONG_BBR=m | ||
| + | CONFIG_NET_SCH_FQ_CODEL=m | ||
| + | CONFIG_NET_SCH_FQ=m | ||
| + | </ | ||
| + | Si vous optenez ce résultat c'est bon ; sinon c'est qu'il est trop ancien (< 4.9) ou qu'il faut le recompiler avec les modules activés. Sous Debian 10 ça ne devrait pas poser de problème. | ||
| + | |||
| + | Pour activer le TCP BRR, en root/sudo : | ||
| + | <code bash> | ||
| + | $ sudo echo -e " | ||
| + | </ | ||
| + | |||
| + | Pour prendre en compte ces paramètres : | ||
| + | <code bash> | ||
| + | $ sudo sysctl --system | ||
| + | # (ou reboot) | ||
| + | </ | ||
| + | |||
| + | Pour mesurer les améliorations, | ||
| + | |||
| + | src : [[https:// | ||
informatique/linux/reseau.1479116751.txt.gz · Last modified: 2016/11/14 09:45 by pteu