Outils pour utilisateurs

Outils du site


doc:formations:hebergement:service_non_publie:routage

Bases en réseau et en routage

Enfin, la communication IP repose sur un découpage des données en petits paquets, où chaque paquet contient une adresse source, une adresse destinataire et un contenu de taille plutôt réduite (typiquement 1.5KO seulement). Un peu comme les pages d'un livre qu'on enverrait individuellement à un destinataire par la poste.

Le protocole assure la découpe de la transmission du message souhaité en paquets, son routage vers le destinataire, mais aussi la reconstituion intégrale du message à l'arrivée dans le cas du sur-protocole TCP (il ira jusqu'à retransmettre les paquets perdus si besoin). Une variante nommée UDP se permet de perdre des paquets en route: elle est souvent utilisée pour le "streaming" ou "broadcasting" vidéo ou audio par exemple, lorsque plusieurs clients peuvent écouter et qu'il n'est ni grave ni réaliste de gérer les paquets perdus en regard de la surcharge réseau que cela occasionnerait et de l'impact sur les autres clients passifs (cf. visio conférence).

Toujours est-il que ces paquets vont devoir passer à travers différents noeuds du réseau. Ceux-ci se chargeront de trouver la bonne route vers le destinataire, et parfois de les intercepter pour des raisons de sécurité.

Commençons par quelques acronymes utiles:

Types de réseaux internet

  • LAN: local area network, le réseau local souvent à connotation de proximité physique (ex. entreprise);
  • WLAN: wireless local area network, le réseau local créée par un point d'accès wifi (AP)
  • WAN: wide area network: le réseau internet public avec ses routeurs planétaires, c'est "l'extérieur"!
  • WWAN: wireless wide area network: un réseau wifi internet public, par exemple Wimax, 3G ou UMTS.

Adresses

  • MAC: une adresse physique, assimimable à un long numéro de série unique de l'interface qui permet d'accéder physiquement au réseau (elle est "gravée" dans l'électronique de la carte).
  • IP: une adresse logique attribuée à une interface réseau, qui permet de router les informations.

Il existe deux grandes version: IPv4 et IPv6, et l'on ne parlera ici que de la très majoritaire version 4. La version 6 avait été établie pour compenser l'épuisement d'adresses disponibles en IPv4 ainsi que d'autres fonctionalités. Mais des astuces et surtout des libérations de grandes plages d'addresses v4 "réservées" historiquement ont pu repousser trsè significativeent la nécessité de basculer en version 6 (plus complexe et/donc moins répandue).

Matériel de routage

  • switch: un "pont" qui relie directement deux LAN ("prise multiple" réseau en fait)
  • routeur: local ou public, il se charge d'envoyer les paquet vers les bon sous-réseaux et machines
  • gateway: le portail, point d'entrée vers un autre réseau (ex. celui qui permet d'interfacer le LAN et le WAN)
  • a noter qu'une "box ADSL" (abusivement son "routeur") regroupe les trois fonctions

Termes de routage

  • DCHP: dynamic host control protocol, qui permet d'attribuer automatiquement une IP à une interface réseau (correspondance IP-MAC)
  • DNS: domain name server, un peu hors sujet ici, les DNS se chargent de faire correspondre une adresse IP et un nom de domaine (www.tecrd.com et 51.15.247.53).
  • DMZ: demilitarized zone, une zone "neutre" entre le WAN apporté par le routeur et un serveur dédié qui va se charger de filtrer et/ou répartir les connexions. C'est généralement un mécanisme de protection du LAN.

Interfaces réseau

C'est donc le point d'entrée et de sortie d'une communication sur une machine. En amont et en aval on est dans l'application, le contenu sémantique et l'usage des données.

Depuis le mécanisme de predictable network interface names sous Linux, les interfaces réseau ont un nom qui dépend d'informations tels que leur type et de leur emplacement sur le PC. Si elles sont moins lisibles qu'avant, elles évitent certaines ambiguités qui étaient ennuyeuses et dangereuses.

Par exemple un serveur DMZ (demilitarized zone) sert de filtre et de répartiteur entre le réseau internet public (WAN) et votre réseau local (LAN). Il aura donc deux cartes réseau au minimum.
Autrefois les noms des interfaces réseaux étaient attribués séquentiellement au fur et à mesure de leur détection par les pilotes de périphériques réseau systemd/udevd et donc non systématiques! Ainsi, si vous utilisez des dongles USB pour votre serveur DMZ, l'odre de branchement vous posait des problèmes sérieux et systématiques de sécurité (notamment pour le firewall). Avec le nouveau nommage on ne risque plus de problème, pas plus que s'ils ne sont pas dans la bonne prise USB. La contrepartie est que ces noms deviennent un peu cryptiques: un mélange de leur type, de leur emplacement physique (prise sur le PC) et de leur identifiant unique (adresse MAC, numéro de série de la carte).

L'omniprésente commande ''ip''

La plupart des opérations et du controle du réseau de votre serveur peuvent se faire avec la commande ip.

On voit encore souvent des historiques ifconfig et autres ifup/ifdown, mais ils ne sont même plus installés par défaut. Ils ont leurs équivalents modernes souvent directs, hormis pour certaines informations comme les statistiques de tranfert des interfaces présent dans ifconfig -a et pas dans ip a (disponibles ailleurs bien sûr, netstat -i ou directement avec cat /proc/net/dev).
Il y a aussi des mécanismes plus récents comme netplan (paquetage debian netplan.io), qui repose sur des fichiers au format Yaml. Je le déconseille encore car il semble à peine "sec" et surtout un peu "collant" quand on veut faire marche arrière et revenir au network manager basique ;)

Pour lister les interfaces présentes sur une machine (ici avec 6 interfaces réseau):

$ ip a

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

2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 2c:f0:5d:21:48:d3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global dynamic noprefixroute enp3s0
       valid_lft 41637sec preferred_lft 41637sec
    inet6 fe80::76d3:64c0:1228:8880/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

3: wlp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether ac:67:5d:81:a2:2c brd ff:ff:ff:ff:ff:ff

5: enx1cba8ca2ed02: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 1c:ba:8c:a2:ed:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.7.1/24 brd 192.168.7.255 scope global noprefixroute enx1cba8ca2ed02
       valid_lft forever preferred_lft forever
    inet6 fe80::dbdd:78a5:2bad:652f/64 scope link tentative noprefixroute 
       valid_lft forever preferred_lft forever

6: enx1cba8ca2ed11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:ba:8c:a2:ed:11 brd ff:ff:ff:ff:ff:ff
    inet 192.168.7.2/24 brd 192.168.7.255 scope global noprefixroute enx1cba8ca2ed11
       valid_lft forever preferred_lft forever
    inet6 fe80::e1e6:63d4:f20a:3de3/64 scope link tentative noprefixroute 
       valid_lft forever preferred_lft forever

Les interfaces ont un nom révélateur, notamment leur préfixe:

  • en est réseau cablé
  • wl pour une carte wifi (ou ww pour un wifi WAN tel qu'un modem 3G)
  • enx ici un dongle ethernet usb

L'interface 3 est donc une carte réseau wifi. Elle n'est pas utilisable ici car elle n'a pas d'adresse IP, contrairement à la 2 qui a pour adresse IPv4 192.168.0.100.

Si votre cablé réseau n'est pas branché, on aurait vu une indication NO-CARRIER (pas de porteuse = pas de connexion phyique):

2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 2c:f0:5d:21:48:d3 brd ff:ff:ff:ff:ff:ff

Si elle est branchée mais que vous n'avez pas d'IP attribuée on aurait eu quelque chose de la sorte (notez le UP):

2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 2c:f0:5d:21:48:d3 brd ff:ff:ff:ff:ff:ff

Notez qu'on peut parfois quand même avoir une interface non branchée mais qui a conservé son adresse IP, un peu par inertie.

Adresses IP des interfaces

Les interfaces disposent d'une adresse MAC (adresse "physique", comme un numéro de série, ex 2c:f0:5d:21:48:d3 ci-avant).

Mais une connexion "physique" établie ne suffit pas à vous donner un accès au réseau. La couche physique assure la transmission d'un signal, l'électronique assure le codage/décodage des paquets de données: cable, fibre, signaux radios wifi ou 3G… On est encore au niveau "électronique".

Maintenant vous avez aussi besoin d'une adresse IP, afin de vous insérer dans le réseau local et d'établir des liens logiques entres macgines du réseau. C'est cette adresse qui permet ensuite le routage, en vous aidant à "virtualiser" les adresses physiques.

DHCP (Dynamic host control protocol)

Ce mécanisme omniprésent permet d'attribuer automatiquement des adresses IP aux interfaces réseau activées et connectées. Il est géré par un serveur et service homonyme sur ce meme réseau local (c'est souvent le routeur/gateway/box adsl, la "porte de sortie" du LAN). C'est ce qui permet à un nouveau venu sur un réseau de se connecter à l'internet sans devoir configurer son PC.

Note: vous pouvez vous désinscrire de l'adresse qui vous a été attribuée avec dhclient -r enp3s0, puis en redemander une avec dhclient enp3s0 (généralement vous récupèrerez la même). L'intéret est aussi de tester explicitement si le mécanisme DHCP fonctionne sur le LAN et sur votre PC, par exemple suite à une configuration temporaire en "IP statique" qui aurait été demandée par un contexte particulier.

IP statique

En l'absence d'attribution automatique d'adresse IP, cela devient assez rare, on peut attribuer l'adresse directement avec ip ainsi:

ip addr add 192.168.7.1/24 dev enx1cba8ca2ed11 

On fixe arbitrairement ici l'adresse 192.168.7.1 à l'interface nommée enx1cba8ca2ed11. Veillez à ce qu'elle ne soit pas déjà utilisée, au risque sinon de causer toute sortes de problèmes compliqués à détecter dans le réseau local.

Note: en fait, tout serveur DHCP permet aussi d'attribuer des adresses IP choisies aux adresses Ethernet MAC connues (en général dans une plage hors de la zone DHCP configurée pour éviter les risques). Il faut en abuser pour profiter du meilleur des deux mondes: vos machines bien identifiées avec une IP attribuée mais fixe permet ensuite de router des services vers ou depuis elles.

Routage et sous-réseaux

En fait les IP ne suffisent pas. On a besoin d'autres informations et d'autres noeuds spécialisés sur le réseau pour "délimiter" le réseau, assurer la communication avec l'extérieur et sécuriser l'ensemble.

Pour cela, il existe plusieurs machines spécialistes dans le réseau local:

  • Un ou plusieurs "switch": ce n'est rien de plus qu'une multiprise dans un LAN, qui permet d'ajouter et d'interconnecter plusieurs clients.
  • Un "routeur" est plus subtil. Son rôle est de connecter plusieurs réseaux ensembles tout en assurant un filtrage entre les deux. C'est généralement fait avec un pare-feu, et toujours avec des "tables de routages": il lit l'IP source et l'IP destination d'un paquet et sait alors vers quelle connection envoyer l'information. Mais il peut décider d'intercepter et de bloquer certains mouvements pour des raison de sécurité, ne serait-ce que pour permettre au machines du LAN d'accéder à l'internet public mais d'interdire l'acces inverse (l'internat public ne peut pas sans son accord explicite accéder à une machine de votre votre réseau privé).
  • Enfin, l'unique "gateway" pour un sous-réseau, qui se charge de faire la passerelle (d'où son nom) entre des réseaux distincts, par exemple entre le LAN et le WAN. Il ne se soucie pas du routage ou du filtrage lui-même mais sert de point d'accès. Sa propre adresse IP doit être connues des différentes machine du réseau local qui dessert

En pratique, gateway et routeur sont souvent dans la même boîte, et un routeur fait parfois office de switch, souvent avec peu de prises.

Masques de sous-réseau (IPv4)

Il vous permet de définir des réseaux distincts, des groupes d'adresses qui peuvent communiquer entres elles, mais ne pourront pas discuter avec l'extérieur de leur réseau local sans devoir passer par leur "passerelle" (gateway).

Une adresse est souvent notée 192.168.1.100/24 par exemple. L'extension permet d'indiquer qu'elle fait partie du sous-réseau des autres machines dont les interfaces réseaux ont une IP au format 192.168.1.0 à 192.168.1.255. Bon, en fait les adresses .0 et .255 sont réservées, donc c'est en fait un sous-réseau potentiel de 253 machines au maximum. Ces machines doivent bien sûr aussi être reliées physiquement sur le meme réseau, via une multi-prise appelée switch pour celles qui sont cablées.

Avec notre masque de 24 bits, les adresses qui se finissent en .255 servent au broadcast, lorsqu'il s'agit d'envoyer indistinctement à tout le sous réseau. C'est le cas par exemple d'un flux vidéo "streamé", généralement aussi en mode UDP où l'on se moque de savoir si ceux qui écoutent reçoivent bien toutes les données. Le mode TCP, plus habituel, garantit avec un mécanisme de "serrage de main" (handshake) que les données sont bien transmises et reçues entre les 2 interlocuteurs identifiés par leur IP.

Comment la portée du sous réseau est-elle déterminée par le nombre 24? C'est en fait assez simple: une IPv4 est constituée de 4 octets (nombres de 0 à 255), soit 32 bits d'indentifiants en tout. Notre 24 signale que les 24 premiers bits sont fixes: ils doivent être identiques pour qu'on puisse communiquer ensemble. Si l'on avait indiqué /16 ce seraient les deux derniers chiffres et donc un sous-réseau de 256x256 soit un peu moins que 65536 machines au maximum.

routage et gateway: par où je sors?

L'adresse IP du gateway sur le réseau local est automatiquement transmise aux PC de ce réseau si l'on est en protocole d'attribution des IP automatiques DHCP. Si l'on est en IP statique il faudra par contre la spécifier lors de la configuration de l'interface.

Voyons voir nos routes:

$ ip route
default via 192.168.0.1 dev enp3s0 proto dhcp metric 103 
169.254.0.0/16 dev enp3s0 scope link metric 1000 
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.100 metric 103 

Ce que l'on obtient là n'est rien d'autre que la table de routage utilisée par le kernel Linux. Elle signifie que par défaut, on doit "sortir" du LAN via la machine qui a l'IP 192.168.0.1 (le routeur local ici), et notre interface réseau enp3s0.

Elle indique aussi que ce sous réseau est constitué des machines du domaine 192.168.0.0/24 et que notre IP est la 192.168.0.100.

Le "metric" permet de prioriser les routes, sans trop d'effet ici puisqu'il n'y a qu'un point de sortie. La route très secondaire 169.254.0.0 est un peu particulière, elle sert dans le mécanisme d'attribution d'adresse IP di le DHCP a échoué.

Voyons un second cas plus compliqué avec plusieurs interfaces et plusieurs sous-réseaux:

$ ip route 
default via 192.168.0.1 dev enp3s0 proto dhcp metric 103 
default via 192.168.7.2 dev enx1cba8ca2ed02 proto static metric 104 
default via 192.168.6.2 dev enx1cba8ca2ed11 proto static metric 105 
169.254.0.0/16 dev enp3s0 scope link metric 1000 
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.100 metric 103 
192.168.7.0/24 dev enx1cba8ca2ed02 proto kernel scope link src 192.168.7.1 metric 104 
192.168.6.0/24 dev enx1cba8ca2ed11 proto kernel scope link src 192.168.7.1 metric 105 

On a plusieurs routes "default", donc plusieurs gateways vers 3 sous réseaux ici! Pas de soucis, c'est celle avec le plus faible "metric" qui a la prévalence: si l'on n'a pas réussi à joindre l'IP souhaitée avec ce gateway alors le système ira essayer la suivante…

On peut retirer une route et le "default" associé ainsi:

ip route delete 192.168.7.0/24 dev enx1cba8ca2ed02
ip route del default via 192.168.7.2 dev enx1cba8ca2ed02

Et inversement en ajouter une manuellement, que l'on déclare en gateway pour ce sous réseau et une métrique prioritaire (détruire puis rajouter est d'ailleurs la seule façon de changer une priorité).

ip route add 192.167.8.0/24 dev enx1cba8ca2ed02
ip route add default via 192.167.8.2 metric 1

Note, la "vieille" fonction route donne des informations similaires mais formatées un peu plus lisiblement:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         console.gl-inet 0.0.0.0         UG    100    0        0 enp3s0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp3s0

On y retrouve les noms "résolus" des machines (console.gl-inet est en fait le 192.168.0.1 précédent, et le ''G' indique que c'est un gateway), ainsi que le 0.0.0.0 qui n'est autre que la "boucle locale" (nous même: cette adresse est toujours valide).

doc/formations/hebergement/service_non_publie/routage.txt · Dernière modification : 2021/02/05 11:51 de jeremie