26 votes

Paramètre d'étendue de l'adresse IP

Sous Linux, la commande

ip address add [...]

a une scope argument. La page de manuel indique que la portée est "la portée de la zone où cette adresse est valide". Suit la liste des portées légales :

  • mondial
  • site
  • lien
  • hôte

À quoi se réfère ce "domaine" de "validité" ?

32voto

Ethan The Brave Points 378

De http://linux-ip.net/html/tools-ip-address.html :

Champ d'application | Description

global | valable partout

site | valable uniquement pour ce site (IPv6)

lien | valable uniquement sur cet appareil

host | valide uniquement à l'intérieur de cet hôte (machine)

La portée est normalement déterminée par l'utilitaire ip sans utilisation explicite sur la ligne de commande. (...)

Les citations suivantes sont tirées du livre Understanding Linux network internals (Comprendre les rouages du réseau Linux) par Christian Benvenuti, O'Reilly :

"L'étendue d'une route dans Linux est un indicateur de la distance au réseau de destination. La portée d'une adresse IP est un indicateur de la distance à laquelle l'hôte local connaît l'adresse, ce qui, dans une certaine mesure, indique également la distance à laquelle le propriétaire de cette adresse se trouve par rapport à l'hôte local (...).

Hôte : Une adresse a une portée hôte lorsqu'elle est utilisée uniquement pour communiquer au sein de l'hôte lui-même. En dehors de l'hôte, cette adresse n'est pas connue et ne peut pas être utilisée. L'adresse de bouclage, 127.0.0.1, en est un exemple.

Lien : Une adresse a une portée de liaison lorsqu'elle est significative et ne peut être utilisée qu'au sein d'un réseau local. L'adresse de diffusion d'un sous-réseau en est un exemple.

Globale : une adresse a une portée globale lorsqu'elle peut être utilisée n'importe où. C'est la portée par défaut de la plupart des adresses. (...)"

La principale raison d'utiliser les scopes semble être qu'un hôte disposant de plusieurs interfaces et adresses doit décider quand utiliser telle ou telle adresse. Pour communiquer avec lui-même, il peut utiliser une adresse de bouclage (scope host). Pour communiquer ailleurs, il faut choisir une autre adresse.

15voto

Dan Carley Points 24959

Pour commencer à comprendre la définition de la portée, il faut d'abord savoir ce que sont les adresses locales (link-local) et locales (site-local). Une fois ces notions clarifiées, les autres se mettront en place. Je cite quelques extraits de la documentation sur l'IPv6.

Lien

Les adresses locales sont censées être utilisées pour adresser des nœuds sur une seule liaison. Les paquets provenant d'une adresse locale ou destinés à une telle adresse ne seront pas transmis par un routeur.

La plage 169.254/16 en est un exemple. Vous l'avez peut-être déjà vu lorsque des appareils ne parviennent pas à obtenir une adresse valide par DHCP.

Site

Les adresses locales sont censées être utilisées à l'intérieur d'un site. Les routeurs ne transmettront aucun paquet avec une adresse de source ou de destination locale en dehors du site.

Ceci ne s'applique qu'à IPv6. Il n'y a pas de notion d'adresses locales de site dans IPv4.

Hôte

Une adresse d'hôte n'existe qu'au sein de la machine hôte elle-même. Par exemple, 127.0.0.1 est une adresse d'hôte généralement attribuée à l'interface de bouclage. L'interface de bouclage n'a pas de connectivité externe et son champ d'application est donc limité à la machine hôte.

Mondial

Une adresse globale est ce que l'on peut considérer comme une adresse "normale". Il s'agit d'une adresse unicast, qui est visible et routable sur un réseau externe.

0voto

alvin Points 466

Retrouvez ces commentaires dans fib_semantics.c

 704  * Every prefix is assigned a "scope" value: "host" is local address,
 705  * "link" is direct route,
 706  * [ ... "site" ... "interior" ... ]
 707  * and "universe" is true gateway route with global meaning.
 708  *
 709  * Every prefix refers to a set of "nexthop"s (gw, oif),
 710  * where gw must have narrower scope. This recursion stops
 711  * when gw has LOCAL scope or if "nexthop" is declared ONLINK,
 712  * which means that gw is forced to be on link.
 ....
 719  * Normally it looks as following.
 720  *
 721  * {universe prefix}  -> (gw, oif) [scope link]
 722  *                |
 723  *                |-> {link prefix} -> (gw, oif) [scope local]
 724  *                                      |
 725  *                                      |-> {local prefix} (terminal node)
 726  */

0voto

Alex Points 233

D'accord, je vais donner un exemple concret et pas seulement théorique.

j'avais sur mon carnet lien du champ d'application en

/etc/network/interfaces

auto ens160
iface ens160 inet static
        address 172.16.102.33
        netmask 255.255.255.0
        network 172.16.102.0
        broadcast 172.16.102.255
        **scope link**
        gateway 172.16.102.1

lorsque j'ai essayé

# ping 8.8.8.8

ma passerelle cisco asa a bloqué mon paquet et a écrit dans les logs

Deny IP spoof from (0.0.0.0) to 8.8.8.8 on interface sandbox

Je n'ai donc pas pu obtenir 8.8.8.8

et si vous utilisez tcpdump vous verrez que linux enverra effectivement sur le LAN des paquets avec scr ip = 0.0.0.0

tcpdump -n -vv icmp -i ens160

lorsque j'ai modifié le fichier /etc/network/interfaces avec champ d'application mondial

auto ens160
iface ens160 inet static
        address 172.16.102.33
        netmask 255.255.255.0
        network 172.16.102.0
        broadcast 172.16.102.255
        **scope global**
        gateway 172.16.102.1

J'ai réussi à obtenir 8.8.8.8.8

C'est ainsi que l'étendue des paramètres du réseau, par exemple, a une influence réelle sur les paquets IP.

également pour ceux qui souhaitent des explications plus détaillées sur les scopes jetez un coup d'œil ici - https://unix.stackexchange.com/a/611945/214557

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X