4.4 Leçon 1
Certification : |
Linux Essentials |
---|---|
Version : |
1.6 |
Thème : |
4 Le Système d’Exploitation Linux |
Objectif : |
4.4 Votre Ordinateur dans le Réseau |
Leçon : |
1 sur 1 |
Introduction
Dans le monde d’aujourd’hui, les appareils informatiques de toute sorte échangent des informations par le biais de réseaux. Au cœur même du concept de réseau informatique se trouvent les connexions physiques entre un appareil et son ou ses pairs. Ces connexions sont appelées des liens, et elles constituent la connexion la plus élémentaire entre deux appareils différents. Les liens peuvent être établis par le biais de divers supports, tels que les câbles de cuivre, les fibres optiques, les ondes radio ou les lasers.
Chaque lien est relié à une interface d’un appareil. Chaque appareil peut avoir plusieurs interfaces et donc être connecté à plusieurs liens. Grâce à ces liens, les ordinateurs peuvent former un réseau ; une petite communauté d’appareils qui peuvent se connecter directement les uns aux autres. Il existe de nombreux exemples de tels réseaux dans le monde. Pour pouvoir communiquer au-delà de la portée d’un réseau à couche de liaison, les appareils utilisent des routeurs. Pensez aux réseaux de la couche de liaison comme des îlots reliés par des routeurs qui relient les îles comme des ponts par lesquels les informations doivent voyager pour atteindre un appareil qui fait partie d’une île éloignée.
Ce modèle conduit à plusieurs couches différentes de mise en réseau :
- Couche de liaison
-
Gère la communication entre les appareils directement connectés.
- Couche réseau
-
Gère le routage en dehors des réseaux individuels et l’adressage unique des appareils au-delà d’un réseau à couche de liaison unique.
- Couche application
-
Permet aux programmes individuels de se connecter les uns aux autres.
Lorsqu’ils ont été inventés, les réseaux informatiques utilisaient les mêmes méthodes de communication que les téléphones en ce sens qu’ils étaient à commutation de circuits. Cela signifie qu’un lien direct et dédié devait être établi entre deux nœuds pour qu’ils puissent communiquer. Cette méthode fonctionnait bien, mais elle nécessitait tout l’espace d’un lien donné pour que seuls deux hôtes puissent communiquer.
Finalement, les réseaux informatiques sont passés à la commutation par paquets. Dans cette méthode, les données sont regroupées avec un en-tête, qui contient des informations sur la provenance et la destination des informations. Les informations sur le contenu réel sont contenues dans ce cadre et envoyées par le biais du lien vers le destinataire indiqué dans l’en-tête du cadre. Cela permet à plusieurs appareils de partager un même lien et de communiquer presque simultanément.
Réseau de Couche de Liaison
Le rôle de tout paquet est de transporter l’information de la source à sa destination par un lien reliant les deux appareils. Ces appareils ont besoin d’un moyen de s’identifier l’un à l’autre. C’est le but d’une adresse de couche de liaison. Dans un réseau ethernet, les adresses MAC (Media Access Control Addresses) sont utilisées pour identifier les dispositifs individuels. Une adresse MAC se compose de 48 bits. Elles ne sont pas nécessairement uniques au niveau mondial et ne peuvent pas être utilisées pour s’adresser à des pairs en dehors de la liaison en cours. Ainsi, ces adresses ne peuvent pas être utilisées pour acheminer des paquets vers d’autres liens. Le destinataire d’un paquet vérifie si l’adresse de destination correspond à sa propre couche de liaison et, si c’est le cas, il traite le paquet. Dans le cas contraire, le paquet est abandonné. L’exception à cette règle concerne les paquets de diffusion (un paquet envoyé à tout le monde dans un réseau local donné) qui sont toujours acceptés.
La commande ip link show
affiche une liste de toutes les interfaces réseau disponibles et leurs adresses de couche de liaison ainsi que d’autres informations sur la taille maximale des paquets :
$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff
La sortie ci-dessus montre que l’appareil a deux interfaces, lo
et ens33
. lo
est l’interface de rebouclage et a l’adresse MAC 00:00:00:00:00:00
alors que ens33
est une interface ethernet et a l’adresse MAC 00:0c:29:33:3b:25
.
Réseau IPv4
Pour visiter des sites web tels que Google ou Twitter, pour vérifier les courriels ou pour permettre aux entreprises de se connecter entre elles, les paquets doivent pouvoir passer d’un réseau de couche de liaison à un autre. Souvent, ces réseaux ne sont connectés qu’indirectement, avec plusieurs réseaux intermédiaires de la couche de liaison que les paquets doivent traverser pour atteindre leur destination réelle.
Les adresses de la couche de liaison d’une interface réseau ne peuvent pas être utilisées en dehors de ce réseau spécifique de la couche de liaison. Comme cette adresse n’a pas d’importance pour les appareils des autres réseaux de la couche de liaison, il faut une forme d’adresses uniques au niveau mondial pour mettre en œuvre le routage. Ce système d’adressage, ainsi que le concept général de routage, est mis en œuvre par le protocole Internet (IP).
Note
|
Un protocole est un ensemble de procédures permettant de faire quelque chose de manière que toutes les parties qui le suivent soient compatibles entre elles. Un protocole peut être considéré comme la définition d’une norme. En informatique, le protocole Internet est une norme acceptée par tous, de sorte que différents appareils produits par différents fabricants peuvent tous communiquer entre eux. |
Adresses IPv4
Les adresses IP, comme les adresses MAC, sont un moyen d’indiquer d’où vient un paquet de données et où il va. IPv4 était le protocole d’origine. Les adresses IPv4 ont une largeur de 32 bits, ce qui donne un nombre maximum théorique de 4 294 967 296 adresses. Toutefois, le nombre de ces adresses utilisables par les appareils est beaucoup plus faible, car certaines plages sont réservées à des cas d’utilisation particuliers tels que les adresses de diffusion (qui sont utilisées pour atteindre tous les participants d’un réseau spécifique), les adresses de multidiffusion (semblables aux adresses de diffusion, mais un appareil doit se connecter comme une radio) ou celles réservées à un usage privé.
Dans leur format lisible par l’homme, les adresses IPv4 sont désignées par quatre chiffres séparés par un point. Chaque chiffre peut aller de 0
à 255
. Par exemple, prenons l’adresse IP suivante :
192.168.0.1
Techniquement, chacun de ces chiffres représente huit bits individuels. Ainsi, cette adresse pourrait également être écrite comme ceci :
11000000.10101000.00000000.00000001
Dans la pratique, on utilise la notation décimale telle que vue ci-dessus. Cependant, la représentation par bits reste importante pour comprendre le découpage en sous-réseaux (sous-réseautage).
Sous-réseaux IPv4
Afin de permettre le routage, les adresses IP peuvent être divisées en deux parties : la partie réseau et la partie hôte. La partie réseau identifie le réseau sur lequel l’appareil se trouve et est utilisée pour acheminer les paquets vers ce réseau. La partie hôte est utilisée pour identifier spécifiquement un appareil donné sur un réseau et pour remettre le paquet à son destinataire spécifique une fois qu’il a atteint son réseau de couche de liaison.
Les adresses IP peuvent être divisées en sous-réseaux et en hôtes à tout moment. Le masque de sous-réseau définit l’endroit où cette division se produit. Revenons sur la représentation binaire de l’adresse IP de l’exemple précédent :
11000000.10101000.00000000.00000001
Maintenant, pour cette adresse IP, le masque de sous-réseau met à 1
chaque bit appartenant à la partie réseau et à 0
chaque bit appartenant à la partie hôte :
11111111.11111111.11111111.00000000
Dans la pratique, le masque de sous-réseau s’écrit en notation décimale :
255.255.255.0
Cela signifie que ce réseau s’étend de 192.168.0.0
à 192.168.0.255
. Notez que les trois premiers chiffres, dont tous les bits sont définis dans le masque de sous-réseau, restent inchangés dans les adresses IP.
Enfin, il existe une autre notation pour le masque de sous-réseau, appelée Classless Inter-Domain Routing (CIDR). Cette notation indique simplement combien de bits sont définis dans le masque de sous-réseau et ajoute ce nombre à l’adresse IP. Dans l’exemple, 24 des 32 bits sont définis à 1
dans le masque de sous-réseau. Cela peut être exprimé en notation CIDR sous la forme 192.168.0.1/24
Adresses IPv4 Privées
Comme mentionné précédemment, certaines sections de l’espace d’adressage IPv4 sont réservées à des cas d’utilisation particuliers. L’un de ces cas d’utilisation est l’attribution d’adresses privées. Les sous-réseaux suivants sont réservés à l’adressage privé :
-
10.0.0.0/8
-
172.16.0.0/12
-
192.168.0.0/16
Les adresses de ces sous-réseaux peuvent être utilisées par tout le monde. Toutefois, ces sous-réseaux ne peuvent pas être acheminés sur l’internet public car ils sont potentiellement utilisés par de nombreux réseaux en même temps.
Aujourd’hui, la plupart des réseaux utilisent ces adresses internes. Elles permettent la communication interne sans qu’il soit nécessaire d’attribuer une adresse externe. Aujourd’hui, la plupart des connexions Internet sont simplement fournies avec une seule adresse IPv4 externe. Les routeurs font correspondre toutes les adresses internes à cette adresse IP externe unique lorsqu’ils transfèrent des paquets vers l’internet. C’est ce qu’on appelle la traduction d’adresse réseau (NAT : Network Addresses Translation). Le cas particulier de NAT, où un routeur mappe les adresses internes à une seule adresse IP externe, est parfois appelé masquage. Cela permet à n’importe quel appareil du réseau interne d’établir de nouvelles connexions avec n’importe quelle adresse IP globale sur l’internet.
Note
|
Avec le masquage, les appareils internes ne peuvent pas être référencés sur Internet car ils n’ont pas d’adresse globalement valable. Toutefois, il ne s’agit pas d’un dispositif de sécurité. Même en cas de masquage, un pare-feu est toujours nécessaire. |
Configuration de l’Adresse IPv4
Il y a deux façons principales de configurer les adresses IPv4 sur un ordinateur. Soit en attribuant les adresses manuellement, soit en utilisant le protocole DHCP (Dynamic Host Configuration Protocol) pour une configuration automatique.
Lorsqu’on utilise le DHCP, un serveur central contrôle quelles adresses sont distribuées à quels appareils. Le serveur peut également fournir aux appareils d’autres informations sur le réseau, telles que les adresses IP des serveurs DNS, l’adresse IP du routeur par défaut ou, dans le cas de configurations plus complexes, pour démarrer un système d’exploitation à partir du réseau. Le DHCP est activé par défaut sur de nombreux systèmes, vous aurez donc probablement déjà une adresse IP lorsque vous serez connecté à un réseau.
Les adresses IP peuvent également être ajoutées manuellement à une interface à l’aide de la commande ip addr add
. Ici, nous ajoutons l’adresse 192.168.0.5
à l’interface ens33
. Le réseau utilise le masque de sous-réseau 255.255.255.0
qui est égal à /24
en notation CIDR :
$ sudo ip addr add 192.168.0.5/255.255.255.0 dev ens33
Nous pouvons maintenant vérifier que l’adresse a été ajoutée en utilisant la commande ip addr show
:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever
La sortie ci-dessus montre à la fois la commande ainsi que les interfaces lo
et ens33
avec l’adresse assignée.
Pour vérifier l’accessibilité d’un appareil, la commande ping
peut être utilisée. Elle envoie un type spécial de message appelé echo request dans lequel l’expéditeur demande une réponse au destinataire. Si la connexion entre les deux appareils peut être établie avec succès, le destinataire enverra un echo reply, vérifiant ainsi la connexion :
$ ping -c 3 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.16 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.85 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.41 ms --- 192.168.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 5ms rtt min/avg/max/mdev = 1.849/2.473/3.410/0.674 ms
Le paramètre -c 3
fait que le ping
s’arrête après l’envoi de trois echo requests. Sinon, le ping
continue à s’exécuter indéfiniment et doit être arrêté en appuyant sur Ctrl+C.
Routage IPv4
Le routage est le processus par lequel un paquet passe du réseau source au réseau de destination. Chaque appareil gère une table de routage qui contient des informations sur le réseau IP qui peut être directement atteint par le biais de la connexion de l’appareil aux réseaux de la couche de liaison et sur le réseau IP qui peut être atteint en transmettant les paquets à un routeur. Enfin, une route par défaut définit un routeur qui reçoit tous les paquets qui ne correspondent à aucune autre route.
Lorsqu’il établit une connexion, l’appareil recherche l’adresse IP de la cible dans sa table de routage. Si une entrée correspond à l’adresse, le paquet est soit envoyé au réseau de la couche de liaison correspondante, soit transmis au routeur indiqué dans la table de routage.
Les routeurs eux-mêmes maintiennent également des tables de routage. Lorsqu’il reçoit un paquet, un routeur recherche également l’adresse de destination dans sa propre table de routage et envoie le paquet au routeur suivant. Cette opération est répétée jusqu’à ce que le paquet arrive au routeur sur le réseau de destination. Chaque routeur impliqué dans ce voyage est appelé un hop. Ce dernier routeur trouve une liaison directe pour l’adresse cible dans sa table de routage et envoie les paquets à son interface cible.
La plupart des réseaux domestiques n’ont qu’une seule issue, le routeur singulier qui provient du fournisseur d’accès à Internet (FAI). Dans ce cas, un appareil se contente de transmettre tous les paquets qui ne sont pas destinés au réseau interne directement au routeur domestique, qui les envoie ensuite au routeur du fournisseur pour qu’ils soient retransmis. Il s’agit d’un exemple de route par défaut.
La commande ip route show
liste la table de routage IPv4 actuelle :
$ ip route show 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Pour ajouter une route par défaut, il suffit d’indiquer l’adresse interne du routeur qui sera la passerelle par défaut. Si, par exemple, le routeur a l’adresse 192.168.0.1
, alors la commande suivante le configure comme route par défaut :
$ sudo ip route add default via 192.168.0.1
Pour vérifier, lancez à nouveau ip route show
:
$ ip route show default via 192.168.0.1 dev ens33 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Réseau IPv6
L’IPv6 a été conçu pour pallier les lacunes de l’IPv4, principalement le manque d’adresses à mesure que de plus en plus d’appareils étaient mis en ligne. Toutefois, IPv6 comprend également d’autres caractéristiques telles que de nouveaux protocoles pour la configuration automatique du réseau. Au lieu de 32 bits par adresse, IPv6 en utilise 128. Cela permet d’obtenir environ 2128 adresses. Toutefois, comme pour l’IPv4, le nombre d’adresses utilisables uniques au niveau mondial est beaucoup plus faible, car certaines parties de l’attribution sont réservées à d’autres usages. Ce grand nombre d’adresses signifie qu’il y a plus qu’assez d’adresses publiques pour chaque appareil actuellement connecté à l’internet et pour beaucoup d’autres à venir, ce qui réduit la nécessité de masquer les adresses et ses problèmes tels que le retard de traduction et l’impossibilité de se connecter directement à des appareils masqués.
Adresses IPv6
Les adresses utilisent 8 groupes de 4 chiffres hexadécimaux séparés par deux points :
2001:0db8:0000:abcd:0000:0000:0000:7334
Note
|
Les chiffres hexadécimaux vont de |
Pour faciliter la tâche, les zéros de tête de chaque groupe peuvent être supprimés lorsqu’ils sont écrits, mais chaque groupe doit contenir au moins un chiffre :
2001:db8:0:abcd:0:0:0:7334
Lorsque plusieurs groupes ne contenant que des zéros se suivent directement, ils peuvent être entièrement remplacés par ::
:
2001:db8:0:abcd::7334
Toutefois, cela ne peut se produire qu’une seule fois par adresse.
Préfixe IPv6
Les 64 premiers bits d’une adresse IPv6 sont connus comme le préfixe de routage. Le préfixe est utilisé par les routeurs pour déterminer à quel réseau appartient un appareil et donc sur quel chemin les données doivent être envoyées. Le sous-réseautage se produit toujours à l’intérieur du préfixe. Les FAI distribuent généralement les préfixes /48 ou /58 à leurs clients, leur laissant 16 ou 8 bits pour leur sous-réseautage interne.
Il existe trois grands types de préfixes dans IPv6 :
- Adresse Mondialement Unique
-
Dans laquelle le préfixe est attribué à partir des blocs réservés aux adresses globales. Ces adresses sont valables sur l’ensemble de l’internet.
- Adresse Unique Localement
-
Ne peut pas être acheminée sur Internet. Elles peuvent cependant être acheminées en interne au sein d’une organisation. Ces adresses sont utilisées au sein d’un réseau pour garantir que les appareils ont toujours une adresse même lorsqu’il n’y a pas de connexion internet. Elles sont l’équivalent des plages d’adresses privées à partir d’IPv4. Les 8 premiers bits sont toujours
fc
oufd
, suivis de 40 bits générés de façon aléatoire. - Adresse Locale du Lien
-
Ne sont valables que sur un lien particulier. Chaque interface réseau compatible IPv6 possède une telle adresse, qui commence par
fe80
. Ces adresses sont utilisées en interne par IPv6 pour demander des adresses supplémentaires par configuration automatique et pour trouver d’autres ordinateurs sur le réseau à l’aide du protocole Neighbor Discovery.
Identificateur d’Interface IPv6
Alors que le préfixe détermine dans quel réseau un appareil réside, l’identifiant d’interface est utilisé pour énumérer les appareils d’un réseau. Les 64 derniers bits d’une adresse IPv6 forment l’identificateur d’interface, tout comme les derniers bits d’une adresse IPv4.
Lorsqu’une adresse IPv6 est attribuée manuellement, l’identifiant de l’interface est défini comme faisant partie de l’adresse. Lorsque la configuration automatique de l’adresse est utilisée, l’identificateur de l’interface est soit choisi au hasard, soit dérivé de l’adresse de la couche de liaison du dispositif. Cela fait apparaître une variation de l’adresse de la couche de liaison dans l’adresse IPv6.
Configuration des Adresses IPv6
Comme pour l’IPv4, l’adresse IPv6 peut être attribuée manuellement ou automatiquement. Cependant, IPv6 a deux types de configuration automatisée différents, DHCPv6 et Stateless Address Autoconfiguration (SLAAC).
La SLAAC est la plus simple des deux méthodes automatisées et elle est directement intégrée à la norme IPv6. Les messages utilisent le nouveau protocole Neighbor Discovery Protocol qui permet aux appareils de se retrouver et de demander des informations concernant un réseau. Ces informations sont envoyées par des routeurs et peuvent contenir des préfixes IPv6 que les appareils peuvent utiliser en les combinant avec un identificateur d’interface de leur choix, à condition que l’adresse résultante ne soit pas encore utilisée. Les appareils ne fournissent pas de retour d’information au routeur sur les adresses réelles qu’ils ont créées.
Le DHCPv6, d’autre part, est le DHCP mis à jour pour fonctionner avec les changements de l’IPv6. Il permet un contrôle plus fin des informations transmises aux clients, comme la possibilité de transmettre la même adresse au même client à chaque fois, et d’envoyer plus d’options au client que le SLAAC. Avec DHCPv6, les clients doivent obtenir le consentement explicite d’un serveur DHCP pour pouvoir utiliser une adresse.
La méthode pour attribuer manuellement une adresse IPv6 à une interface est la même qu’avec IPv4 :
$ sudo ip addr add 2001:db8:0:abcd:0:0:0:7334/64 dev ens33
Pour vérifier que l’affectation a fonctionné, la même commande ip addr show
est utilisée :
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever inet6 2001:db8:0:abcd::7334/64 scope global valid_lft forever preferred_lft forever
Ici, nous voyons également l’adresse locale du lien fe80::010c:29ff:fe33:3b25/64
.
Comme pour IPv4, la commande ping
peut également être utilisée pour confirmer l’accessibilité des appareils via IPv6 :
$ ping 2001:db8:0:abcd::1 PING 2001:db8:0:abcd::1(2001:db8:0:abcd::1) 56 data bytes 64 bytes from 2001:db8:0:abcd::1: icmp_seq=1 ttl=64 time=0.030 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=3 ttl=64 time=0.072 ms --- 2001:db8:0:abcd::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 43ms rtt min/avg/max/mdev = 0.030/0.047/0.072/0.018 ms
Note
|
Sur certains systèmes Linux, le |
Pour vérifier à nouveau l’adresse du lien local, utilisez à nouveau le ping
. Mais comme toutes les interfaces utilisent le préfixe fe80::/64
, l’interface correcte doit être spécifiée avec l’adresse :
$ ping6 -c 1 fe80::010c:29ff:fe33:3b25%ens33 PING fe80::010c:29ff:fe33:3b25(fe80::010c:29ff:fe33:3b25) 56 data bytes 64 bytes from fe80::010c:29ff:fe33:3b25%ens33: icmp_seq=1 ttl=64 time=0.049 ms --- fe80::010c:29ff:fe33:3b25 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms
DNS
Les adresses IP sont difficiles à mémoriser et n’ont pas un facteur esthétique élevé si vous essayez de commercialiser un service ou un produit. C’est là que le système des noms de domaine entre en jeu. Dans sa forme la plus simple, le DNS est un annuaire téléphonique distribué qui associe des noms de domaine faciles à mémoriser, tels que example.com
, à des adresses IP. Lorsqu’un utilisateur se rend sur un site web, par exemple, il saisit le nom d’hôte du DNS dans le cadre de l’URL. Le navigateur web envoie ensuite le nom DNS à l’un des résolveurs DNS configurés. Ce résolveur DNS trouvera à son tour l’adresse qui correspond au domaine. Le résolveur répond alors avec cette adresse et le navigateur web essaie d’atteindre le serveur web à cette adresse IP.
Les résolveurs que Linux utilise pour consulter les données DNS sont configurés dans le fichier de configuration /etc/resolv.conf
:
$ cat /etc/resolv.conf search lpi nameserver 192.168.0.1
Lorsque le résolveur effectue une recherche de nom, il vérifie d’abord le fichier /etc/hosts
pour voir s’il contient une adresse pour le nom demandé. Si c’est le cas, il renvoie cette adresse et ne contacte pas le DNS. Cela permet aux administrateurs de réseau de fournir une résolution de nom sans avoir à passer par l’effort de configuration d’un serveur DNS complet. Chaque ligne de ce fichier contient une adresse IP suivie d’un ou plusieurs noms :
127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 192.168.0.10 server 2001:db8:0:abcd::f server
Pour effectuer une recherche dans le DNS, utilisez la commande host
:
$ host learning.lpi.org learning.lpi.org has address 208.94.166.198
Des informations plus détaillées peuvent être obtenues en utilisant la commande dig
:
$ dig learning.lpi.org ; <<>> DiG 9.14.3 <<>> learning.lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21525 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 2ac55879b1adef30a93013705d3306d2128571347df8eadf (bad) ;; QUESTION SECTION: ;learning.lpi.org. IN A ;; ANSWER SECTION: learning.lpi.org. 550 IN A 208.94.166.198 ;; Query time: 3 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Sat Jul 20 14:20:21 EST 2019 ;; MSG SIZE rcvd: 89
Ici, nous voyons également le nom des types d’enregistrements DNS, en l’occurrence A
pour IPv4.
Les Sockets
Un socket est un point d’extrémité de communication pour deux programmes qui se parlent. Si le socket est connecté sur un réseau, les programmes peuvent s’exécuter sur différents appareils, tels qu’un navigateur web fonctionnant sur l’ordinateur portable d’un utilisateur et un serveur web fonctionnant dans le centre de données d’une entreprise.
Il existe trois grands types de sockets :
- Sockets Unix
-
qui relient des processus s’exécutant sur le même appareil.
- Sockets UDP (User Datagram Protocol)
-
qui connectent des applications à l’aide d’un protocole rapide mais non résilient.
- Sockets TCP (Transmission Control Protocol)
-
qui sont plus fiables que les sockets UDP et qui, par exemple, confirment la réception des données.
Les sockets Unix ne peuvent connecter que des applications fonctionnant sur le même appareil. Les sockets TCP et UDP peuvent cependant se connecter sur un réseau. Le protocole TCP permet d’obtenir un flux de données qui arrive toujours dans l’ordre exact où il a été envoyé. UDP est plus "tire et oublie"; le paquet est envoyé mais sa livraison à l’autre extrémité n’est pas garantie. UDP n’a cependant pas la surcharge du TCP, ce qui le rend parfait pour les applications à faible latence telles que les jeux vidéo en ligne.
TCP et UDP utilisent tous deux des ports pour adresser plusieurs sockets sur la même adresse IP. Alors que le port source d’une connexion est généralement aléatoire, les ports cibles sont normalisés pour un service spécifique. HTTP est, par exemple, généralement hébergé sur le port 80, HTTPS est exécuté sur le port 443. SSH, un protocole permettant de se connecter en toute sécurité à un système Linux distant, écoute sur le port 22.
La commande ss
permet à un administrateur d’enquêter sur toutes les sockets d’un ordinateur Linux. Elle affiche tout, de l’adresse source à l’adresse de destination en passant par le type. L’une de ses meilleures caractéristiques est l’utilisation de filtres permettant à un utilisateur de surveiller les sockets dans l’état de connexion qu’il souhaite. ss
peut être lancée avec un ensemble d’options ainsi qu’une expression de filtre pour limiter les informations affichées.
Lorsqu’elle est exécutée sans aucune option, la commande affiche une liste de tous les sockets établis. L’utilisation de l’option -p
inclus des informations sur le processus utilisant chaque socket. L’option -s
affiche un résumé des sockets. Il y a beaucoup d’autres options disponibles pour cet outil, mais les dernières principales sont -4
et -6
pour réduire le protocole IP à IPv4 ou IPv6 respectivement, -t
et -u
permettent à l’administrateur de sélectionner les sockets TCP ou UDP et -l
de n’afficher que les sockets qui écoutent les nouvelles connexions.
La commande suivante, par exemple, liste tous les sockets TCP actuellement utilisés :
$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.0.5:49412 192.168.0.1:https ESTAB 0 0 192.168.0.5:37616 192.168.0.1:https ESTAB 0 0 192.168.0.5:40114 192.168.0.1:https ESTAB 0 0 192.168.0.5:54948 192.168.0.1:imap ...
Exercices Guidés
-
Il est demandé à un ingénieur réseau d’attribuer deux adresses IP à l’interface
ens33
d’un hôte, une adresse IPv4 (192.168.10.10/24
) et une adresse IPv6 (2001:0:0:abcd:0:8a2e:0370:7334/64
). Quelles commandes doit-il entrer pour y parvenir ? -
Quelles sont les adresses de la liste ci-dessous qui sont privées ?
192.168.10.1
120.56.78.35
172.16.57.47
10.100.49.162
200.120.42.6
-
Quelle entrée ajouteriez-vous dans le fichier hosts pour attribuer
192.168.0.15
àexample.com
? -
Quel serait l’effet de la commande suivante ?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Exercices d’Exploration
-
Nommez le type d’enregistrement DNS utilisé pour servir les demandes suivantes :
-
Données textuelles
-
Recherche inversée d’adresses IP
-
Un domaine qui n’a pas d’adresse propre et qui dépend d’un autre domaine pour cette information
-
Serveur de courrier électronique
-
-
Linux a une fonction appelée bridging, que fait-elle et en quoi est-elle utile ?
-
Quelle option doit être fournie à la commande
ss
afin de visualiser tous les sockets UDP établies ? -
Quelle commande affiche un résumé de tous les sockets fonctionnant sur un appareil Linux ?
-
La sortie suivante est générée par la commande de l’exercice précédent. Combien de sockets TCP et UDP sont actifs ?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
Résumé
Ce sujet couvre la mise en réseau de votre ordinateur Linux. Nous avons d’abord découvert les différents niveaux de mise en réseau :
-
La couche de liaison qui relie directement les appareils.
-
La couche réseau qui assure le routage entre les réseaux et un espace d’adressage global.
-
La couche application où les applications se connectent les unes aux autres.
Nous avons vu comment IPv4 et IPv6 sont utilisés pour adresser les ordinateurs individuels, et comment TCP et UDP énumèrent les sockets utilisés par les applications pour se connecter les unes aux autres. Nous avons également appris comment le DNS est utilisé pour résoudre les noms en adresses IP.
Commandes utilisées dans les exercices :
dig
-
Interroge les informations du DNS et fourni des informations verbeuses sur les requêtes et les réponses du DNS.
host
-
Interroge les informations du DNS et fourni un résultat condensé.
ip
-
Configure la mise en réseau sous Linux, y compris les interfaces réseau, les adresses et le routage.
ping
-
Teste la connectivité à un appareil distant.
ss
-
Affiche les informations concernant les sockets.
Réponses aux Exercices Guidés
-
Il est demandé à un ingénieur réseau d’attribuer deux adresses IP à l’interface
ens33
d’un hôte, une adresse IPv4 (192.168.10.10/24
) et une adresse IPv6 (2001:0:0:abcd:0:8a2e:0370:7334/64
). Quelles commandes doit-il entrer pour y parvenir ?sudo ip addr add 192.168.10.10/24 dev ens33 sudo ip addr add 2001:0:0:abcd:0:8a2e:0370:7334/64 dev ens33
-
Quelles sont les adresses de la liste ci-dessous qui sont privées ?
192.168.10.1
X
120.56.78.35
172.16.57.47
X
10.100.49.162
X
200.120.42.6
-
Quelle entrée ajouteriez-vous dans le fichier hosts pour attribuer
192.168.0.15
àexample.com
?192.168.0.15 example.com
-
Quel serait l’effet de la commande suivante ?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Il ajouterait une route par défaut dans le tableau qui envoie tout le trafic IPv6 au routeur avec une adresse interne de
2001:db8:0:abcd::1.
Réponses aux Exercices d’Exploration
-
Nommez le type d’enregistrement DNS utilisé pour servir les demandes suivantes :
-
Données textuelles
TXT
-
Recherche inversée d’adresses IP
PTR
-
Un domaine qui n’a pas d’adresse propre et qui dépend d’un autre domaine pour cette information
CNAME
-
Serveur de courrier électronique
MX
-
-
Linux a une fonction appelée bridging, que fait-elle et en quoi est-elle utile ?
Un pont relie plusieurs interfaces de réseau. Toutes les interfaces connectées à un pont peuvent communiquer comme si elles étaient connectées au même réseau de couche de liaison : Tous les appareils utilisent des adresses IP provenant du même sous-réseau et n’ont pas besoin de routeur pour se connecter les uns aux autres.
-
Quelle option doit être fournie à la commande
ss
afin de visualiser tous les sockets UDP établies ?L’option
-u
montre tous les sockets UDP établies. -
Quelle commande affiche un résumé de tous les sockets fonctionnant sur un périphérique Linux ?
La commande
ss -s
affiche un résumé de tous les sockets -
La sortie suivante est générée par la commande de l’exercice précédent. Combien de sockets TCP et UDP sont actifs ?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
11 sockets TCP et UDP sont actifs.