Question Comment le trafic est-il séparé entre les adresses IP internes et externes?


Si je cingle 192.168.0.X à partir de mon réseau domestique, il essaiera de rechercher cette adresse dans mon réseau et non l'adresse IP externe du WAN. Cependant, je peux envoyer un ping à 74.125.224.163 et à ping google.com.

Je peux configurer mon réseau interne sur 74.125.224.X, puis, si j'essaie de faire un ping, je ne regarderais plus que sur mon réseau, mais j'imagine (je n'ai pas tenté de le modifier) ​​que je pouvais toujours communiquer avec le serveur de Google la même adresse IP.

A quel niveau est-ce séparé? Comment les paquets sauront-ils que la destination de l’adresse IP est de sortir sur le réseau étendu au lieu du réseau local?


3
2017-07-26 19:46


origine




Réponses:


Les paquets ne savent rien - ils ne portent que l'adresse de destination; le chemin parcouru est décidé par tables de routage qui sont conservés dans votre ordinateur, votre routeur, et d'autres routeurs sur Internet.

Lorsqu'un paquet est envoyé depuis votre ordinateur ...

  1. Le système d'exploitation vérifie d'abord si l'adresse de destination est affectée à une interface réseau de votre ordinateur. Si oui, le système d'exploitation le consomme lui-même - le paquet ne va nulle part en dehors de votre ordinateur.

  2. Sinon, il recherche dans la table de routage toutes les routes correspondant à l'adresse de destination. Il pourrait y en avoir plusieurs - le système d'exploitation choisit celui qui a le plus long "préfixe" correspondant.

  3. S'il n'y a pas de route correspondant à l'adresse de destination, le paquet est supprimé.

Par exemple, si votre propre adresse était 192.168.1.1...

  • La table de routage de votre ordinateur peut ressembler à ceci:

    • 10.11.12.0/24 peut être atteint directement sur ppp0 interface
    • 192.168.1.0/24 peut être atteint directement sur eth0 interface
    • 10.42.0.0/16 peut être atteint en passant par 10.11.12.50
    • 0.0.0.0/0 peut être atteint en passant par 192.168.1.254

    Le nombre après / indique combien de bits comparer; voir Notation CIDR. Par exemple. si c'est /16, les 16 premiers bits des deux adresses (à partir du bit le plus à gauche) doivent être égaux. Si c'est /0, rien n'est comparé, donc la route correspondra à n'importe quelle adresse - c'est la "route par défaut".

    Les tables de routage réelles ont également des métriques - par exemple, si vous connectiez un ordinateur portable à votre réseau local via Ethernet et WiFi, il disposerait de deux routes identiques vers le même réseau, mais la métrique serait plus rapide que le WiFi. . J'ai omis les métriques ici pour simplifier.

  • si vous avez cinglé 192.168.1.5, le système d'exploitation:

    1. chercher des routes vers 192.168.1.5
    2. trouver des itinéraires 192.168.1.0/24 et 0.0.0.0/0
    3. choisir l'itinéraire 192.168.1.0/24, car il a un préfixe plus long (24> 0)
    4. voir que la route pointe vers le eth0 interface
    5. envoyer le paquet sur le eth0 câble

    Le paquet passerait par Ethernet (ou WiFi, ou ...) directement sur l'ordinateur de destination.

  • si vous avez cinglé 74.125.224.163, le système d'exploitation:

    1. chercher des routes vers 74.125.224.163
    2. trouver un itinéraire 0.0.0.0/0
    3. voir que la route a passerelle 192.168.1.254
    4. chercher des routes vers 192.168.1.254 qui sont aussi accessible directement (sans passer par une deuxième passerelle)
    5. trouver un itinéraire 192.168.1.0/24
    6. voir que la route pointe vers le eth0 interface
    7. envoyer le paquet sur le eth0 câble

    Le paquet passerait par Ethernet (ou WiFi, ou ...) pour 192.168.1.254 (votre routeur domestique), qui répèterait alors le même processus en utilisant ses propres tables de routage et enverrait le paquet au prochain bond (les routeurs de votre FAI).

(Donc, si vous avez le même réseau que Google, vous ne pouvez plus accéder à Google, car l'itinéraire vers votre propre réseau sera toujours choisi en premier.)


11
2017-07-26 20:38



Je vous remercie! C'est quelque peu ce que je soupçonnais, mais il semble étrange que tous les réseaux 172.x.x.x 192.x.x.x et 10.x.x.x soient réservés à la mise en réseau interne. Comme nous manquons d'espace IPv4, deux d'entre eux seraient bien. Bonne information et merci encore pour cela. - Zombian
Ces trois gammes ont été sélectionnées il y a longtemps, alors que nous avions encore beaucoup d'espace IPv4. Les changer maintenant signifie que tous ceux qui utilisent ces plages (actuellement valides) devront reconfigurer leur réseau. Ce n'est pas trivial. - Hennes
@Zombian: ... avait tellement de de l'espace IPv4 que la carte réseau utilisait pour distribuer / 16 réseaux (ancienne "classe B") pour gratuit, J'ai lu, et certaines entreprises encore des énormes / 8 '. Et ce que dit Hennes s'applique aussi, en partie, à la réservé plages - il y a plusieurs « / 8 » blocs commençant par 240.0.0.0/8 et se terminant par 255.0.0.0/8 marqué comme « réservé à un usage futur », mais ils ne peuvent pas être utilisés dans les réseaux réels, car de nombreux programmes ont été [bêtement] écrit rejeter les adresses "réservées" ... - grawity
@Zombian: De plus, seuls les 192.168. * Sont réservés aux réseaux privés, pas aux 192. * - les autres adresses sont actuellement utilisées sur Internet. - grawity


Non, votre ordinateur ne tentera pas d'abord de rechercher cette adresse dans votre réseau domestique. Il va regarder la table de routage.

Cette table contient des règles pour les choses suivantes

  1. Est-ce que l'adresse IP correspond à une adresse IP explicite (ajoutée avec route add -net)? Puis envoyez-le via cette interface
  2. Est-ce que l'IP appartient à une plage de réseau répertoriée, puis l'envoie sur une interface spécifique.
  3. Si tout échoue, envoyez-le à la passerelle par défaut via l'interface spécifiée.

Il n'y a pas de réseau spécifique "interne" vs externe "dans le tableau.

Les configurations typiques avec un seul commutateur NICm et un seul routeur remplissent généralement ces tables comme suit:

  1. Si c'est pour moi-même (plage de localhost 127.x ou propre IP), envoyez-le via le périphérique de bouclage.
  2. Si c'est pour le réseau local (qu'il connaît depuis que vous avez configuré une carte réseau avec l'adresse IP et le masque de réseau), envoyez-le via le réseau Ethernet local.
  3. Si cela ne correspond pas, envoyez-le à la passerelle par défaut (aka votre routeur sur le réseau local).

L'ordinateur ne se soucie pas de la manière dont le paquet arrive à sa destination. Tout ce qu'il sait, et tout ce qu'il doit savoir, c'est ce qu'il faut faire localement et déléguer le reste.

Cela peut ressembler beaucoup à votre question, mais ce n’est pas le paquet qui sait comment voyager. C'est l'ordinateur local, utilisant des tables de routage locales, qui décide de ce qu'il convient de faire avec le paquet.


Maintenant, si vous définissez votre réseau interne sur 74.125.224.X et essayez de faire un ping (avec des tables de routage mises à jour), la pile réseau reconnaîtra que vous essayez d'envoyer une requête ping à votre propre adresse IP. Vous obtiendrez une réponse au ping depuis votre propre ordinateur. Puisque vous n'êtes pas google, vous pouvez oublier googler autour pour les réponses via le moteur de recherche. Il n'atteindrait jamais les vrais ordinateurs Google.

La communication avec eux serait impossible, car les paquets pour eux ne quitteraient jamais votre ordinateur. Au lieu de cela, ils seront renvoyés directement via le bouclage.

Si vous désactivez le bouclage ou indiquez explicitement à votre ordinateur de transférer ces paquets vers le routeur par défaut et Internet, vous ne recevrez pas de réponse. Tous les autres ordinateurs transfèrent encore leur paquet vers le réal ordinateur sur Google, et non sur votre réseau.


2
2017-07-26 19:58



En tant que super utilisateur très apprécié, je vous suggère de revenir sur cette réponse et ajouter plus de détails. - KronoS


Votre ordinateur a un masque de sous-réseau ainsi qu'une adresse IP. Votre logiciel de réseau utilise le masque de sous-réseau pour déterminer si une adresse IP se trouve sur votre sous-réseau local (et peut donc être contacté directement) ou sur un autre réseau (et doit donc être contacté via votre passerelle par défaut).

Si vous modifiez votre adresse IP de sorte qu'un serveur Google se trouve dans le même sous-réseau que votre ordinateur, tel que défini par le masque de sous-réseau, vous habitude être capable de communiquer avec ce serveur Google.


1
2017-07-26 19:58