La Fibre
Datacenter et équipements réseaux => Routeurs =>
Routeur => Discussion démarrée par: Leon le 02 avril 2013 à 18:08:55
-
Bonjour à tous,
Je me permet de poser une question existentielle. Un routeur a autant d'adresses IP que d'interfaces réseaux différentes. Mais pourquoi? A quoi ça sert?
Un routeur ne pourrait-il pas utiliser tout le temps la même adresse IP pour toutes ses interfaces? Surtout pour les interfaces qui ne sont reliées qu'à un autre routeur (donc qui ne voient pas tout un sous réseau).
J'ai bien compris que sur mon PC, chaque interface était définie par une adresse IP. Mais justement, j'aimerai comprendre pourquoi. Pourquoi a-t-on besoin d'une IP pour définir une interface d'une machine. Ne pourrait-on pas utiliser, dans la table de routage au sein d'un routeur (ou PC), un N° d'interface (de 1 à 100 par exemple), ou le nom de l'interface Ethernet, au lieu de l'adresse IP de cette interface...
Merci d'avance pour vos explications sur cette question un peu tirée par les cheveux...
Leon.
-
Tu parles de ta Freebox par exemple ?
Tout simplement car ARP (https://fr.wikipedia.org/wiki/Address_Resolution_Protocol) (Address Resolution Protocol) fonctionne avec des adresses IP.
Avoir plusieurs adresses IP pour une même adresse mac, cela me semble introduire de gros changements...
-
En fait, je parle de n'importe quel routeur, gros ou petit. Un gros routeur (de coeur de réseau) qui a 10 interconnexions avec 10 autres routeurs, il aura 10 adresses IP différentes, une pour chaque interface (=port ethernet) de ce routeur. Et c'est ça que je ne comprends pas. Pourquoi n'aurrait-il pas une seule et unique adresse IP quelque soit l'interface utilisée parmi ses 10 interfaces.
Tout simplement car ARP (Address Resolution Protocol) fonctionne avec des adresses IP.
Avoir plusieurs adresses IP pour une même adresse mac, cela me semble introduire de gros changements...
En fait, c'est l'inverse que je cherche à savoir: pourquoi ne pas utiliser, pour 1 seul et même routeur, tout le temps la même adresse IP, quelle que soit l'interface (physique) de ce routeur.
J'avoue que je ne vois pas ce qui s'opposerai à cette pratique. Je suis certain qu'il y a une raison fondamentale, mais je ne l'ai pas encore vue/comprise.
Leon.
-
Avoir plusieurs adresses IP pour une même adresse mac, cela me semble introduire de gros changements...
C'est ce qui se fait systématiquement en IPv6 et sans problème en IPv4. Dans l'application (fonction) ARP, peu importe combien d'adresses IP vont sur la même adresse Ethernet.
Je pense que tu voulais dire autre chose.
-
En fait, je parle de n'importe quel routeur, gros ou petit. Un gros routeur (de coeur de réseau) qui a 10 interconnexions avec 10 autres routeurs, il aura 10 adresses IP différentes, une pour chaque interface (=port ethernet) de ce routeur.
Il faut se référer à la définition d'un routeur. Contrairement ce que les gens s'imaginent (et surement à ce qui est dans les dico) la définition de routeur IP (dans le cas où le support physique est Ethernet) n'est PAS :
un machin avec plusieurs interfaces Ethernet qui transmet des paquets IP qui lui arrive d'un coté en les envoyant de l'autre
MAIS :
un machin avec une ou plusieurs interfaces Ethernet qui transmet des paquets IP venant d'un sous-réseau vers un autre sous-réseau
et un sous-réseau est caractérisé par une plage d'adresse d'IP correspondant à PRÉFIXE || x
|| étant la concaténation de suites de bits
x la partie locale de l'adresse IP
Les sous-réseaux doivent être disjoints.
Un routeur doit avoir une adresse IP dans chaque sous-réseau qu'il route.
Donc un routeur a au moins autant d'adresses IP que de sous-réseaux.
Il faut raisonner en terme de sous-réseaux.
-
Merci corrector, pour ta réponse.
[un routeur est] un machin avec une ou plusieurs interfaces Ethernet qui transmet des paquets IP venant d'un sous-réseau vers un autre sous-réseau
[...]
Il faut raisonner en terme de sous-réseaux.
Et comment ça se passe pour les routeurs dont chacune des interfaces physique n'est reliée qu'à un seul autre routeur (ou noeud IP) en Ethernet? La notion de sous-réseau est-elle toujours valable dans ce cas? Avec seulement les 2 adresses IP des 2 routeurs interconnectés entre eux, sur cette liaison Ethernet non partagée?
Est-ce que cette "contrainte" n'est valable que pour l'Ethernet? Ou alors est-ce que c'est valable pour toutes les méthodes possibles d'interconnexion de routeur?
Leon.
-
Je pense que tu voulais dire autre chose.
Exact: je voulais dire qu'une adresse IP unique l'IP publique et plusieurs PC (adresse mac) derrière cela va poser problème.
Je pensais que leon voulais supprimer l’adressage privé derrière les box (192.168.1.xxx).
-
c'est comme une maison avec 2 portes sur 2 rues distinctes. il y a forcement 2 adresses différentes parce que c'est la rue qui défini l'adresse pas la maison.
et on ne peut joindre une maison sans donner un nom de rue.
-
Exact: je voulais dire qu'une adresse IP unique l'IP publique et plusieurs PC (adresse mac) derrière cela va poser problème.
Je pensais que leon voulais supprimer l’adressage privé derrière les box (192.168.1.xxx).
Ah oui, une adresse IP pour plusieurs adresses Ethernet, on a déjà discuté de ça comme une approche de l'équilibrage-redondance.
-
c'est comme une maison avec 2 portes sur 2 rues distinctes. il y a forcement 2 adresses différentes parce que c'est la rue qui défini l'adresse pas la maison.
et on ne peut joindre une maison sans donner un nom de rue.
Mais là, dans l'exemple que j'ai donné, de routeurs avec des connexions directes avec d'autres routeurs, chaque "rue" (sous réseau) ne donne que sur 2 adresses. C'est bien le cas qui est le plus fréquent dans les liaisons "WAN", les liaisons entre 2 routeurs de backbone, en direct. Donc des sortes de sous-réseau avec seulement 2 adresses. Je ne sais même pas s'ils sont définis comme ça d'ailleurs.
Quel est l'intérêt dans ce cas de donner des noms de rue (des sous réseaux différents) si on sait que le chemin va d'un point A à un point B? Peu importe que la rue s'appelle "avenue Rivoli". L'important, c'est d'aller au point B, non? Que ce soit par la rue de Rivoli ou par l'avenue Jean Jaures.
L'important, pour le routeur A est de savoir qu'en sortant par sa porte numéro 12 (l'interface physique Ethernet numéro 12), on atteint directement le point B (l'adresse IP du routeur B), peut importe le nom de la rue que l'on emprunte. Dans ce cas, pourquoi l'adresse IP de B ne pourrait pas être la même quelle que soit la rue, quelle que soit la porte, quelle que soit l'interface physique?
J'ai loupé quelque chose dans mon raisonnement?
Leon.
-
Bon, voici une réponse partielle que j'ai trouvé.
Après recherche, j'ai constaté qu'un routeur utilisant des connexions "point à point" de type SLIP, PLIP, PPP (ou autres joyeusetés rarissimes) n'a pas besoin d'une adresse IP par interface, et peut utiliser la même adresse IP sur toutes ses interfaces.
http://www.faqs.org/docs/linux_network/x-087-2-iface.interface.html (http://www.faqs.org/docs/linux_network/x-087-2-iface.interface.html)
Note that the plip1 interface on vlager does not need a separate IP address, but may also be given the address 172.16.1.1. Point-to-point networks don't support a network directly, so the interfaces don't require an address on any supported network. The kernel uses the interface information in the routing table to avoid any possible confusion
Visiblement, cette contrainte d'avoir une IP différente par interface physique n'existe qu'en Ethernet, puisqu'Ethernet permet de connecter un réseau entier, et non seulement une liaison point à point.
Je trouve toujours étrange qu'on se retrouve avec de telles contraintes pour de l'Ethernet utilisé comme liaison "point à point".
Leon.
-
Merci corrector, pour ta réponse.Et comment ça se passe pour les routeurs dont chacune des interfaces physique n'est reliée qu'à un seul autre routeur (ou noeud IP) en Ethernet? La notion de sous-réseau est-elle toujours valable dans ce cas? Avec seulement les 2 adresses IP des 2 routeurs interconnectés entre eux, sur cette liaison Ethernet non partagée?
Comme dit Vivien, ARP pour IPv4 (ou ND pour IPv6, ce qui revient en pratique à la même chose) utilise l'adresse IP pour obtenir l'adresse Ethernet, donc un périphérique IP qui doit envoyer une trame IP a besoin d'une adresse IP d'un premier routeur sur le chemin pour avoir son adresse Ethernet (ou autre adresse physique, ou adresse L2) : c'est le rôle du paramètre "passerelle" dans la table de routage, ex. sous Windows :
>netsh interface ipv4 show route
Publier Type Mét Préfixe Idx Nom passerelle/interface
------- -------- --- ------------------------ --- ------------------------
Non Manuel 9 0.0.0.0/0 8 192.168.1.254
>netsh interface ipv6 show route
Publier Type Mét Préfixe Idx Nom passerelle/interface
------- -------- --- ------------------------ --- ------------------------
Non Manuel 256 ::/0 8 fe80::207:cbff:fe9a:194
Par contre on remarque que l'adresse IP de la passerelle n'a pas besoin d'être une adresse Internet (adresse globalement unique).
Sur un lien point à point, comme PPP, il n'y a plus d'adresse L2, on voit n'importe quoi dans le tuyau et ça ressort de l'autre coté. Il n'y a donc pas d'ARP.
Mais le concept de sous-réseau existe toujours, c'est inhérent aux protocoles IP (v4, v6).
Est-ce que cette "contrainte" n'est valable que pour l'Ethernet? Ou alors est-ce que c'est valable pour toutes les méthodes possibles d'interconnexion de routeur?
C'est une contrainte intrinsèque puisque la définition même d'un routeur IP : relier plusieurs sous-réseaux IP.
Pour relier plusieurs liens physiques il suffit d'un pont, invisible du point de vue IP.
-
Mais là, dans l'exemple que j'ai donné, de routeurs avec des connexions directes avec d'autres routeurs, chaque "rue" (sous réseau) ne donne que sur 2 adresses. C'est bien le cas qui est le plus fréquent dans les liaisons "WAN", les liaisons entre 2 routeurs de backbone, en direct. Donc des sortes de sous-réseau avec seulement 2 adresses. Je ne sais même pas s'ils sont définis comme ça d'ailleurs.
Quel est l'intérêt dans ce cas de donner des noms de rue (des sous réseaux différents) si on sait que le chemin va d'un point A à un point B? Peu importe que la rue s'appelle "avenue Rivoli". L'important, c'est d'aller au point B, non? Que ce soit par la rue de Rivoli ou par l'avenue Jean Jaures.
L'important, pour le routeur A est de savoir qu'en sortant par sa porte numéro 12 (l'interface physique Ethernet numéro 12), on atteint directement le point B (l'adresse IP du routeur B), peut importe le nom de la rue que l'on emprunte. Dans ce cas, pourquoi l'adresse IP de B ne pourrait pas être la même quelle que soit la rue, quelle que soit la porte, quelle que soit l'interface physique?
J'ai loupé quelque chose dans mon raisonnement?
Leon.
oui quand les 2 routeurs appartiennent a la même société on fait très souvent un lien point a point sans utiliser d’adresse IP (en jargon Cisco on fait un "ip unnumbered" en utilisant l'adresse d'une autre interface).
quand le lien est entre 2 sociétés différentes et qu'on ne sait pas ce qu'il y a l'autre bout, c'est plus délicat de faire ca donc on prefere mettre des IP.
-
Mais le concept de sous-réseau existe toujours, c'est inhérent aux protocoles IP (v4, v6).
C'est une contrainte intrinsèque puisque la définition même d'un routeur IP : relier plusieurs sous-réseaux IP.
Pour relier plusieurs liens physiques il suffit d'un pont, invisible du point de vue IP.
Corrector, on a encore un problème de vocabulaire. Selon toi, un "routeur" qui n'a que des liaisons "point à point" avec d'autres routeurs (potentiellement plein de liaisons), donc ne relie directement aucun sous-réseau, ça n'est pas un routeur. C'est bien ça? Etrange comme définition. Pourtant, ce routeur manipule du L3, fait du routage IP (regarde l'IP destination, décrèmente le TTL, fais suivre à la bonne interface), maintient une table de routage IP, etc...
oui quand les 2 routeurs appartiennent a la même société on fait très souvent un lien point a point sans utiliser d’adresse IP (en jargon Cisco on fait un "ip unnumbered" en utilisant l'adresse d'une autre interface).
quand le lien est entre 2 sociétés différentes et qu'on ne sait pas ce qu'il y a l'autre bout, c'est plus délicat de faire ca donc on prefere mettre des IP.
Merci à toi, c'est exactement ce que je cherchais. Le concept d'IP Unnumbered répond en effet à mes questions!
http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a0080094e8d.shtml (http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a0080094e8d.shtml)
Et on peut faire la même chose sous Linux, comme je l'ai montré un peu plus haut.
Leon.
-
Pour finir dans les surprises, on constate qu'au final, un routeur (s'il n'est connecté directement à aucun sous réseau, mais uniquement à d'autres routeurs en direct) n'a en théorie pas besoin d'avoir une adresse IP!
Dans la pratique, c'est autre chose. Pour pouvoir l'administrer, et pour qu'il réponde au ping, on lui définit quand même une adresse IP. Au moins une IP "loopback" qui fait que ce routeur puisse être joint de l'extérieur.
Leon.
-
Mais là, dans l'exemple que j'ai donné, de routeurs avec des connexions directes avec d'autres routeurs, chaque "rue" (sous réseau) ne donne que sur 2 adresses. C'est bien le cas qui est le plus fréquent dans les liaisons "WAN", les liaisons entre 2 routeurs de backbone, en direct. Donc des sortes de sous-réseau avec seulement 2 adresses. Je ne sais même pas s'ils sont définis comme ça d'ailleurs.
A priori pour ce genre d'interco entre deux routeurs, tu définis un subnet /30 de chaque côté.
-
Après recherche, j'ai constaté qu'un routeur utilisant des connexions "point à point" de type SLIP, PLIP, PPP (ou autres joyeusetés rarissimes) n'a pas besoin d'une adresse IP par interface, et peut utiliser la même adresse IP sur toutes ses interfaces.
http://www.faqs.org/docs/linux_network/x-087-2-iface.interface.html (http://www.faqs.org/docs/linux_network/x-087-2-iface.interface.html)
Visiblement, cette contrainte d'avoir une IP différente par interface physique n'existe qu'en Ethernet, puisqu'Ethernet permet de connecter un réseau entier, et non seulement une liaison point à point.
Je trouve toujours étrange qu'on se retrouve avec de telles contraintes pour de l'Ethernet utilisé comme liaison "point à point".
Prenons le cas de la Freebox en "mode bridge"; donc tout ceci concerne seulement IPv4, puisqu'il n'y a pas de "mode bridge" en IPv6.
Le "mode bridge" est le mode de fonctionnement dans lequel un seul périphérique connecté à la box en Ethernet obtient l'adresse IP publique.
Free est réellement un "FAI = Fournisseur d'Accès IPv4" pas un "Fournisseur d'Accès Ethernet". Il n'y a pas de connectivité Ethernet aux autres abonnés Freebox. Il y a bien sûr une connectivité IPv4 entre les abonnés Freebox.
Le lien ADSL est point-à-point entre la Freebox et le DSLAM; la Freebox présente ce lien point-à-point comme un lien Ethernet. Voyons comment cela se présente concrètement.
Je passe en mode bridge, j'ai donc une adresse IP de la forme : a.b.c.x
où a.b.c est le préfixe du sous-réseau.
L'adresse de la passerelle est a.b.c.254
Remarque : Windows étant ce qu'il est, parfois si la configuration du réseau change complètement (j'étais en "mode routeur", je passe en "mode bridge"), Windows va faire des requêtes DHCP pour avoir les nouveaux paramètres, recevoir une réponse DHCP de la Freebox, et l'ignorer parce que ça le bouleverse que les adresses aient changées. Le fait de débrancher physiquement le câble Ethernet peut aider. Il faut parfois redémarré.
Sous Windows, on peut voir les adresses physiques mémoisées pour chaque interface avec :
netsh interface ipv4 show neighbors
ou pour une seule interface
netsh interface ipv4 show neighbors nom-de-l'interface
Note : On peut renommer les interfaces dans "Gérer les connexions réseau" (adresse dans explorer : Panneau de configuration\Réseau et Internet\Connexions réseau) pour avoir des noms pas trop horribles.
Au lieu de netsh, on peut aussi utiliser arp -a, mais je préfère tout faire avec netsh (de même que sous linux je préfère utiliser ip (plutôt que ifconfig, route, arp...). C'est vrai que arp -a est plus court, mais avec netsh la variante IPv6 est évidente. De plus netsh m'affiche uniquement ce que je veux, les commandes plus anciennes affichent plein de trucs.
Note : La commande netsh interface ipv4 show neighbors s'abrège en netsh i i sh n.
Sous linux, la commande correspondante est ip neigh show.
Revenons à nos moutons, j'utilise netsh i i sh n e (l'interface s'appelle "ether") pour afficher le cache de voisins :
> netsh i i sh n e
Interface 8 : ether
Adresse Internet Adresse physique Type
-------------------------------------------- ----------------- -----------
a.b.c.254 ADRESSE-FREEBOX Joignable
224.0.0.22 01-00-5e-00-00-16 Permanent
224.0.0.252 01-00-5e-00-00-fc Permanent
239.255.255.250 01-00-5e-7f-ff-fa Permanent
Remarque : les valeurs particulières à mon cas sont remplacées par des symboles. ADRESSE-FREEBOX = le numéro de série de la Freebox inscrit sur l'étiquette.
Remarque : À partir d'ici, je laisse de coté les adresses IP de multi-diffusion (adresses en 224 et 239), ce sont des valeurs fixes, elles ne sont pas renseignées par ARP.
Donc l'adresse physique de la passerelle IP est ADRESSE-FREEBOX.
Je ping quelques adresses IP du sous-réseau (de la forme a.b.c.y) au hasard. La commande netsh i i sh n ether affiche :
Adresse Internet Adresse physique Type
-------------------------------------------- ----------------- -----------
a.b.c.1 ADRESSE-FREEBOX Joignable
a.b.c.2 ADRESSE-FREEBOX Joignable
a.b.c.5 ADRESSE-FREEBOX Joignable
a.b.c.10 ADRESSE-FREEBOX Joignable
a.b.c.254 ADRESSE-FREEBOX Joignable
Donc tous les voisins ont la même adresse physique ADRESSE-FREEBOX!
Que se passe t-il?
Bien sûr, tous les autres Freeboxés ne partagent pas une adresse physique, c'est juste la Freebox qui indique la sienne pour toute question.
Je peux passe de la configuration DHCP en configuration statique avec ces commande :
netsh interface ipv4 set address ether static a.b.c.x/24 gate=a.b.c.254
netsh interface ipv4 set dns ether static 212.27.40.241
Je vérifie que tout marche bien.
Remarque : La commande pour revenir en DHCP est tout simplement :
netsh interface ipv4 set address ether dhcp
Je peux m'amuser à faire varier ma config statique (sachant que x n'est pas égal à 1, donc que a.b.c.1 n'est pas mon adresse, ça n'aurait évidemment aucun sens de m'indiquer moi-même comme passerelle IPv4) :
netsh interface ipv4 set address ether static a.b.c.x/24 gate=a.b.c.1
et là, ça marche encore!
Je peux indiquer n'importe quoi comme adresse de passerelle IP, ça change rien. (Sauf ma propre IP, évidemment.)
a.b.c.254 n'est pas particulier, pour moi, par rapport à a.b.c.2. Bien sûr, a.b.c.254 est particulier parce que c'est la seule adresse a.b.c.z qui n'est pas l'adresse a.b.c.x d'un Freeboxé.
-
A priori pour ce genre d'interco entre deux routeurs, tu définis un subnet /30 de chaque côté.
Pour info, certains constructeurs (dont CISCO) autorisent même l'usage d'un /31, sur une interface "ip ospf network point-to-point" par exemple.
Pas d'adresse de réseau ni de Broadcast, juste les 2 ip des interfaces de 2 routeurs. Ca permet d'économiser pas mal d'adresses en cas de gestion d'un gros backbone par exemple