Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
050-manips-ipv4:030-config-ipv4 [le 05/04/2025 à 16:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 050-manips-ipv4:030-config-ipv4 [le 05/04/2025 à 16:40] (Version actuelle) – ↷ Page déplacée de 050_profondeurs:030-config-ipv4 à 050-manips-ipv4:030-config-ipv4 prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== La configuration IPv4 ====== | ||
+ | Tout nœud présent sur un réseau doit disposer d'une configuration IP complète et cohérente. Au minimum une adresse IP et un masque de réseau, chaque nœud du même réseau devant avoir une partie commune, celle qui représente justement le réseau. | ||
+ | Plusieurs méthodes sont possibles pour réaliser cette configuration, | ||
+ | ===== Zeroconf ===== | ||
+ | Sous ce terme plus ou moins générique se cachent des systèmes destinés à attribuer une configuration IP à chaque nœud du LAN de façon totalement transparente pour les utilisateurs. Dans les distributions GNU/Linux, c'est le démon '' | ||
+ | |||
+ | Comme ce démon ne possède pas le pouvoir de divination, il est contraint de lancer des diffusions (broadcast) périodiques pour tenir à jour le système. C'est une solution que nous n' | ||
+ | ===== Configuration manuelle ===== | ||
+ | Comme indiqué, '' | ||
+ | < | ||
+ | |||
+ | source / | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | <span class=" | ||
+ | iface < | ||
+ | <span class=" | ||
+ | </ | ||
+ | |||
+ | En une seule ligne, nous fournissons l' | ||
+ | |||
+ | Autrefois, les interfaces réseaux de type Ethernet se nommaient '' | ||
+ | |||
+ | Désormais le nom est calculé en fonction de plusieurs critères. C'est '' | ||
+ | < | ||
+ | * Two character prefixes based on the type of interface: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | * | ||
+ | * Type of names: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | Bref, tout ceci fait que notre interface se nomme bien intuitivement '' | ||
+ | |||
+ | ===== DHCP ===== | ||
+ | [[https:// | ||
+ | ==== Le client ==== | ||
+ | |||
+ | Ce protocole nécessite un logiciel serveur sur le réseau local et des logiciels clients sur les autres nœuds. Pour l' | ||
+ | < | ||
+ | 1 0.000000000 | ||
+ | 2 7.278755900 | ||
+ | 3 22.288572403 | ||
+ | 4 35.326945321 | ||
+ | 5 52.906541227 | ||
+ | ... | ||
+ | </ | ||
+ | Quelqu' | ||
+ | |||
+ | Voyons dans le détail l'une quelconque de ces trames: | ||
+ | < | ||
+ | <span class=" | ||
+ | < | ||
+ | Address: Broadcast (ff: | ||
+ | .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default) | ||
+ | .... ...1 .... .... .... .... = IG bit: Group address (multicast/ | ||
+ | Source: RealtekU_b7: | ||
+ | Address: RealtekU_b7: | ||
+ | .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default) | ||
+ | .... ...0 .... .... .... .... = IG bit: Individual address (unicast) | ||
+ | Type: IPv4 (0x0800)</ | ||
+ | <span class=" | ||
+ | 0100 .... = Version: 4 | ||
+ | .... 0101 = Header Length: 20 bytes (5) | ||
+ | Differentiated Services Field: 0x10 (DSCP: Unknown, ECN: Not-ECT) | ||
+ | 0001 00.. = Differentiated Services Codepoint: Unknown (4) | ||
+ | .... ..00 = Explicit Congestion Notification: | ||
+ | Total Length: 328 | ||
+ | Identification: | ||
+ | 000. .... = Flags: 0x0 | ||
+ | 0... .... = Reserved bit: Not set | ||
+ | .0.. .... = Don't fragment: Not set | ||
+ | ..0. .... = More fragments: Not set | ||
+ | ...0 0000 0000 0000 = Fragment Offset: 0 | ||
+ | Time to Live: 128 | ||
+ | < | ||
+ | Header Checksum: 0x3996 [validation disabled] | ||
+ | Source Address: 0.0.0.0 | ||
+ | Destination Address: 255.255.255.255</ | ||
+ | <span class=" | ||
+ | Source Port: 68 | ||
+ | Destination Port: 67 | ||
+ | Length: 308 | ||
+ | Checksum: 0x7714 [unverified] | ||
+ | UDP payload (300 bytes)</ | ||
+ | <span class=" | ||
+ | Message type: Boot Request (1) | ||
+ | Hardware type: Ethernet (0x01) | ||
+ | Hardware address length: 6 | ||
+ | Hops: 0 | ||
+ | Transaction ID: 0xc356da15 | ||
+ | Seconds elapsed: 53 | ||
+ | Bootp flags: 0x0000 (Unicast) | ||
+ | 0... .... .... .... = Broadcast flag: Unicast | ||
+ | .000 0000 0000 0000 = Reserved flags: 0x0000 | ||
+ | Client IP address: 0.0.0.0 | ||
+ | Your (client) IP address: 0.0.0.0 | ||
+ | Next server IP address: 0.0.0.0 | ||
+ | Relay agent IP address: 0.0.0.0 | ||
+ | < | ||
+ | Client hardware address padding: 00000000000000000000 | ||
+ | Server host name not given | ||
+ | Boot file name not given | ||
+ | Magic cookie: DHCP | ||
+ | Option: (53) DHCP Message Type (Discover) | ||
+ | Length: 1 | ||
+ | < | ||
+ | Option: (50) Requested IP Address (192.168.61.101) | ||
+ | Length: 4 | ||
+ | Requested IP Address: 192.168.61.101 | ||
+ | Option: (12) Host Name | ||
+ | Length: 11 | ||
+ | Host Name: democlient1 | ||
+ | < | ||
+ | Length: 13 | ||
+ | Parameter Request List Item: (1) Subnet Mask | ||
+ | Parameter Request List Item: (28) Broadcast Address | ||
+ | Parameter Request List Item: (2) Time Offset | ||
+ | Parameter Request List Item: (3) Router | ||
+ | Parameter Request List Item: (15) Domain Name | ||
+ | Parameter Request List Item: (6) Domain Name Server | ||
+ | Parameter Request List Item: (119) Domain Search | ||
+ | Parameter Request List Item: (12) Host Name | ||
+ | Parameter Request List Item: (44) NetBIOS over TCP/IP Name Server | ||
+ | Parameter Request List Item: (47) NetBIOS over TCP/IP Scope | ||
+ | Parameter Request List Item: (26) Interface MTU | ||
+ | Parameter Request List Item: (121) Classless Static Route | ||
+ | Parameter Request List Item: (42) Network Time Protocol Servers</ | ||
+ | Option: (61) Client identifier | ||
+ | Length: 19 | ||
+ | IAID: 00b76681 | ||
+ | DUID Type: link-layer address plus time (1) | ||
+ | Hardware type: Ethernet (1) | ||
+ | Time: 741453611 | ||
+ | Link layer address: 52: | ||
+ | Option: (255) End | ||
+ | Option End: 255 | ||
+ | Padding: 00</ | ||
+ | </ | ||
+ | * Couche Ethernet, c'est logiquement du broadcast MAC ff: | ||
+ | * Couche IP c'est non moins logiquement du broadcast IP 255.255.255.255, | ||
+ | * côté UDP donc, nous découvrons les ports utilisés: 68 par le client et 67 par le serveur; | ||
+ | * enfin, l' | ||
+ | |||
+ | Mais personne ne lui répond :-/ | ||
+ | ==== Le serveur ==== | ||
+ | Installons un logiciel serveur sur '' | ||
+ | |||
+ | apt install kea-dhcp4-server | ||
+ | |||
+ | Une fois finie l' | ||
+ | |||
+ | Voici un fichier minimum ''/ | ||
+ | < | ||
+ | { | ||
+ | " | ||
+ | <span class=" | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | }</ | ||
+ | <span class=" | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | { | ||
+ | <span class=" | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | } | ||
+ | ], | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | * en jaune, la ou les interfaces par lesquelles le serveur doit rester à l' | ||
+ | * en vert des grandeurs temporelles concernant la validité du bail attribué: | ||
+ | * durée de vie de 360 secondes (très peu, pour la manip. Dans la pratique, c'est à évaluer en fonction du besoin); | ||
+ | * durée à partir de laquelle le client commence à demander un renouvellement; | ||
+ | * durée à partir de laquelle le client doit commencer à s' | ||
+ | * en bleu le réseau concerné, ici bien entendu '' | ||
+ | * la réserve d' | ||
+ | |||
+ | Il faut (re)démarrer le serveur: | ||
+ | systemctl restart kea-dhcp4-server.service | ||
+ | et s' | ||
+ | ==== Retour sur le client ==== | ||
+ | Voyons maintenant ce qu'il se passe: | ||
+ | < | ||
+ | 1 0.000000000 | ||
+ | 2 0.001231474 | ||
+ | 3 0.001655257 | ||
+ | 4 0.002352680 | ||
+ | </ | ||
+ | Clairement, ça se passe beaucoup mieux. Voyons ce que le serveur offre: | ||
+ | < | ||
+ | Dynamic Host Configuration Protocol (Offer) | ||
+ | Message type: Boot Reply (2) | ||
+ | Hardware type: Ethernet (0x01) | ||
+ | Hardware address length: 6 | ||
+ | Hops: 0 | ||
+ | Transaction ID: 0x09c1733a | ||
+ | Seconds elapsed: 0 | ||
+ | Bootp flags: 0x0000 (Unicast) | ||
+ | 0... .... .... .... = Broadcast flag: Unicast | ||
+ | .000 0000 0000 0000 = Reserved flags: 0x0000 | ||
+ | Client IP address: 0.0.0.0 | ||
+ | <span class=" | ||
+ | Next server IP address: 0.0.0.0 | ||
+ | Relay agent IP address: 0.0.0.0 | ||
+ | Client MAC address: RealtekU_b7: | ||
+ | Client hardware address padding: 00000000000000000000 | ||
+ | Server host name not given | ||
+ | Boot file name not given | ||
+ | Magic cookie: DHCP | ||
+ | Option: (53) DHCP Message Type (Offer) | ||
+ | Length: 1 | ||
+ | DHCP: Offer (2) | ||
+ | Option: (1) Subnet Mask (255.255.255.0) | ||
+ | Length: 4 | ||
+ | <span class=" | ||
+ | Option: (12) Host Name | ||
+ | Length: 11 | ||
+ | <span class=" | ||
+ | Option: (51) IP Address Lease Time | ||
+ | Length: 4 | ||
+ | <span class=" | ||
+ | Option: (54) DHCP Server Identifier (192.168.61.1) | ||
+ | Length: 4 | ||
+ | <span class=" | ||
+ | Option: (58) Renewal Time Value | ||
+ | Length: 4 | ||
+ | <span class=" | ||
+ | Option: (59) Rebinding Time Value | ||
+ | Length: 4 | ||
+ | <span class=" | ||
+ | Option: (61) Client identifier | ||
+ | Length: 19 | ||
+ | IAID: 00b76681 | ||
+ | DUID Type: link-layer address plus time (1) | ||
+ | Hardware type: Ethernet (1) | ||
+ | Time: 741453611 | ||
+ | Link layer address: 52: | ||
+ | Option: (255) End | ||
+ | Option End: 255 | ||
+ | </ | ||
+ | |||
+ | Le serveur fournit une adresse et les paramètres du bail alloué, mais ne répond bien sûr pas aux autres requêtes. | ||
+ | |||
+ | Le client ayant déjà un nom, en l’absence de directive particulière, | ||
+ | |||
+ | En laissant tourner wireshark, nous observons dans la suite: | ||
+ | 1 | ||
+ | 2 | ||
+ | Pas la peine d' | ||
+ | |||
+ | Tout le processus sera étudié dans le détail dans le chapitre des [[090_applicatifs: | ||
+ | |||
+ | ===== Un coup d' | ||
+ | Debian utilise par défaut '' | ||
+ | |||
+ | Il existe un fichier de configuration dans ''/ | ||
+ | < | ||
+ | option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | rfc3442-classless-static-routes, | ||
+ | </ | ||
+ | Simplement, nous remarquons que le client envoie au serveur son «hostname» et lui réclame un certain nombre de paramètres. Bien sûr une adresse IP, un masque, une adresse de broadcast, un décalage horaire et les adresses de passerelles (routeurs). | ||
+ | |||
+ | Ce client stocke les baux qu'il reçoit dans le fichier ''/ | ||
+ | |||
+ | Pour l' | ||
+ | < | ||
+ | lease { | ||
+ | interface " | ||
+ | fixed-address 192.168.61.100; | ||
+ | option subnet-mask 255.255.255.0; | ||
+ | option dhcp-lease-time 360; | ||
+ | option routers 192.168.61.1; | ||
+ | option dhcp-message-type 5; | ||
+ | option dhcp-server-identifier 192.168.61.1; | ||
+ | option dhcp-renewal-time 180; | ||
+ | option dhcp-rebinding-time 350; | ||
+ | option host-name " | ||
+ | option dhcp-client-identifier ff: | ||
+ | <span class=" | ||
+ | rebind 0 2025/03/02 19:04:33; | ||
+ | expire 0 2025/03/02 19: | ||
+ | } | ||
+ | </ | ||
+ | En regardant ce bail, nous pouvons voir que le serveur n'a pas répondu à toutes les demandes. En revanche, les les dates pour la demande de renouvellement, |
La configuration IPv4: Dernière modification le: 01/01/1970 à 00:00 par