Rappel
IPv4 codé sur 4 octets
1 octet se code en binaire sur 8 digits (python bin(255) = '0b11111111' )
1 octet se code en hexadecimal sur 2 digits (python hex(255) = '0xff' )
Adresses multicast
IP multicast addresses have been assigned to the IPv4 Class D address space by IANA. The high-order four
bits of a Class D address are 1110. Therefore, host group addresses can be in the range 224.0.0.0 to
239.255.255.255. A multicast address is chosen at the source (sender) for the receivers in a multicast group.
Reserved Link-Local Addresses, 224.0.0.0 to 224.0.0.255 : Reserved for use by network protocols on a local network segment.
Globally Scoped Addresses, 224.0.1.0 to 238.255.255.255 : Reserved to send multicast data between
organizations and across the Internet
For example, Open Shortest Path First (OSPF) uses the IP addresses 224.0.0.5 and 224.0.0.6 to exchange link-state information.
For example, 224.0.1.1 : Network Time Protocol (NTP)
Adresses multicast réservées
224.0.0.1 : tous les hotes du segment capable de recevoir du multicast,
224.0.0.2 : tous les routeurs multicasts,
224.0.0.4 : les routeurs DVMRP,
224.0.0.5 : les routeurs OSPF,
224.0.0.13 : les routeurs PIM ...
IGMP
Les routeurs envoient périodiquement (toutes les 1 ou 2 minutes) un IGMP Host Membership Querie (Type 0x11) sur le group all-hosts (224.0.0.1) avec un TTL de 1
Tous les hostes capablent de traiter le multicast reçoivent cette ``sonde'' et afin qu'ils ne repondent pas tous en même temps, chacun lance un compteur aléatoire pour chaque groupe auprès duquel il est enregistré. Un fois le compteur arrivé a terme, l'hote envoie un IGMP Host Membership Report (TTL 1 Type 0x12) à l'adresse multicast du groupe auquel il participe et pour lequel le compteur viens de se terminer.
Comme le ``Report'' est envoyé au groupe multicast, les autres hotes du segment éventuellement enregistrés sur le même groupe receveront ce report et pourrons ainsi abandonner le compteur et donc de faire eux-même un report auprès du routeur local. Ce dernier continuera de transmettre le flux multicast d'un groupe des l'instant qu'il a au moins une réponse d'un hote concernant le groupe, il n'a pas besoin de savoir combien d'hotes demandent ce flux ni lesquels. Si aucun ``Report'' n'est reçu alors il arrete de transmettre le flux.
IGMP version 2 ajoute un nouveau type de message IGMP Leave Group (Type 0x17) envoyé cette fois ci au groupe all-routers (224.0.0.2) et non au groupe pour lequel il ne desir plus recevoir de flux, ceci afin d'éviter d'encombrer quelques minutes de plus la bande passante par le flux d'un groupe pour lequel il n'y a plus d'hotes interessés. En effet un routeur arrète de transmettre le flux d'un groupe seulement s'il ne reçoit pas de réponse après 3 IGMP Host Membership Querie consécutifs.
Deux versions du protocole PIM :
• PIM en mode dense (“dense mode”)
• PIM en mode clairsemé (“sparce mode”)
Bibliographie :
https://www.telecom-sudparis.eu/s2ia/user/procacci/multicast/multicast-cisco-ext002.html => bien
https://www.ionos.fr/digitalguide/serveur/know-how/multicast/ => pas mal avec une video sur PIM
https://www.metaswitch.com/knowledge-center/reference/what-is-protocol-independent-multicast-pim => pas mal
- Détails
Dans cet article, nous traiterons des sujets suivants :
- les notions principales de la virtualisation
- les modes de connexion au réseau (NAT, par pont, ...)
- Détails
Dans cet article, nous traiterons des sujets suivants :
- un test de diffusion multicast IPv6 entre deux machines Debian
- Détails
Tshark permet de :
- réaliser des captures réseau en ligne de commande
- lire un fichier de capture réseau
sudo tshark -D permet de lister les interfaces que l'on peut écouter
sudo tshark affiche à l'écran les paquets capturés sur l'interface numéro 1
sudo tshark -T fields -e frame.number -e ip.src -e ip.dst -e ip.len affiche à l'écran le numéro de trame, l'ip src, l'ip destination et la longueur du paquet IP
Capturer dans un fichier pcap
touch maCapture.pcap
chmod o=rw maCapture.pcap # cette ligne et la ligne qui précède sont nécessaires, sinon, pour une raison inconnu, on aura une erreur "could not be opened: Permission denied" pour créer le fichier maCapture.pcap
sudo tshark -T fields -e frame.number -e ip.src -e ip.dst -w maCapture.pcap # la capture ira dans le fichier maCapture.pcap.
!! Attention, ce fichier ne contiendra pas seulement les colonnes affichées (frame.number, ip.src, ip.dst).
Capture sélective
L'option -f (capture filter) permet de sélectionner les données à capturer.
sudo tshark -f "ip or arp" => permet de ne capturer que les paquets de type IP ou ARP
Affichage sélectif
sudo tshark -f "ip or arp" -Y "ip.src == 192.168.1.6"
Affichage formatté
tsudo tshark -f "ip or arp" -T fields -E separator=, -E quote=d -e ip.src -e ip.dst
"172.217.18.194","192.168.1.6"
"172.217.18.194","192.168.1.6"
"192.168.1.6","172.217.18.194"
"172.217.18.194","192.168.1.6"
Lire depuis un fichier pcap
Lire un pcap
tshark -r maCapture.pcap # affiche le fichier pcap, uniquement les colonnes principales
1 12:54:58,838325659 2001:861:3a02:dff0:a433:c73d:ae9f:672e → 2a00:1450:4007:812::2003 TLSv1.2 125 2 12:54:58,857405445 2a00:1450:4007:812::2003 → 2001:861:3a02:dff0:a433:c73d:ae9f:672e TCP 86 3 12:54:58,858259678 2a00:1450:4007:812::2003 → 2001:861:3a02:dff0:a433:c73d:ae9f:672e TLSv1.2 126 4 12:54:58,901022717 2001:861:3a02:dff0:a433:c73d:ae9f:672e → 2a00:1450:4007:812::2003 TCP 86 5 12:54:59,169301812 Netgear_cc:e9:e6 → Broadcast HomePlug AV 60
Lire une ligne spécifique du pcap
tshark -r maCapture.pcap -Y frame.number==61 # lit le fichier maCapture.pcap et affiche seulement la frame 61
Filltrer le pcap et mettre le résultat dans un nouveau pcap
Dans l'exemple, on s'intéresse à tous les paquets dont l'IP source est 192.168.1.6
tshark -r maCapture.pcap -w maCaptureSrcSpecifique.pcap ip.src == 192.168.1.6
Analyser un fichier pcap avec Python via Pyshark
import pyshark
cap = pyshark.FileCapture('maCapture.pcap')
i=0
for pkt in cap:
print("==================%d=========================" % i)
print(pkt)
i+=1
pkt=cap[58]
print(pkt)
print(f"IP.src:{pkt['ip'].src}, IP.dst:{pkt['ip'].dst}")
....
==================65=========================
Packet (Length: 60)
Layer ETH:
Destination: ff:ff:ff:ff:ff:ff
Address: ff:ff:ff:ff:ff:ff
....
IP.src:54.149.19.17, IP.dst:192.168.1.6
- Détails
La MIB présente de façon hiérarchique des grandeurs associées à un équipements (date de démarrage, nombre de paquets reçus, ...). Les grandeurs sont référencées via un numéro nommé OID.
Certains fabricants tel CISCO fournissent leur propre MIB.
Le protocole SNMP permet d'accéder à la MIB d'un équipement.
Installation
# installs SNMP package:
sudo apt-get install snmp
# downloads common SNMP MIBs:
sudo apt-get install snmp-mibs-downloader
# tells Ubuntu to load SNMP MIB files:
sudo sed -i 's/mibs :/# mibs :/g' /etc/snmp/snmp.conf
Récupération d'un élément avec snmpget
Exemple avec la version 2 de SNMP.
Ici, on récupère le nom du PC
snmpget -c public -v 2c -On 127.0.0.1 .1.3.6.1.2.1.1.5.0
.1.3.6.1.2.1.1.5.0 = STRING: PC-thierry
Récupération d'un ensemble d'élément avec snmpwalk
Récupération en fournissant l'OID via sa valeur numérique
snmpwalk -v 2c -c public -On localhost .1.3.6.1.2.1.1 (noeud qui contient la feuille représentant le nom du PC)
.1.3.6.1.2.1.1.1.0 = STRING: Linux PC-thierry 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10
.1.3.6.1.2.1.1.3.0 = Timeticks: (1109970) 3:04:59.70
.1.3.6.1.2.1.1.4.0 = STRING: Me <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
.1.3.6.1.2.1.1.5.0 = STRING: PC-thierry
.1.3.6.1.2.1.1.6.0 = STRING: Sitting on the Dock of the Bay
.1.3.6.1.2.1.1.7.0 = INTEGER: 72
.1.3.6.1.2.1.1.8.0 = Timeticks: (80) 0:00:00.80
.1.3.6.1.2.1.1.9.1.2.1 = OID: .1.3.6.1.6.3.11.3.1.1
.1.3.6.1.2.1.1.9.1.2.2 = OID: .1.3.6.1.6.3.15.2.1.1
...
Récupération en fournissant l'OID via son nom
snmpwalk -v 2c -c public -On localhost system
.1.3.6.1.2.1.1.1.0 = STRING: Linux PC-thierry 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10
.1.3.6.1.2.1.1.3.0 = Timeticks: (3942135) 10:57:01.35
.1.3.6.1.2.1.1.4.0 = STRING: Me <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
.1.3.6.1.2.1.1.5.0 = STRING: PC-thierry
...
Connaître le nom d'un OID
Exemple pour savoir la signification de l'OID .1.3.6.1.2.1.1.1.0 qui vaut PC-thierry
snmptranslate .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0
snmptranslate -Of SNMPv2-MIB::sysUpTime.0
.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
snmptranslate -On -Td SNMPv2-MIB::sysUpTime
.1.3.6.1.2.1.1.3
sysUpTime OBJECT-TYPE
-- FROM SNMPv2-MIB
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The time (in hundredths of a second) since the
network management portion of the system was last
re-initialized."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 3 }
- Détails
Page 1 sur 5