J'ai lu la page man de ip
et je ne comprends toujours pas ce que src
est et je ne pouvais pas trouver beaucoup de documentation.
S'il vous plaît, si vous pouvez l'expliquer de manière approfondie ou indiquez que certains liennent une bonne réponse.
Lors de l'ajout d'un itinéraire à un hôte multi-hybriomé, vous souhaiterez peut-être contrôler l'adresse IP source de votre hôte, vous envoie à partir de la communication en utilisant cet itinéraire. C'est ce que SRC est pour.
Un bref exemple: vous avez un hôte avec deux interfaces et les adresses IP 192.168.1.123/24 et 10.45.22.12/24. Vous ajoutez une route au 78.22.45.0/24 via 10.45.22.1 et souhaitez vous assurer que vous n'envoyez pas au 78.22.45.0/24 à l'aide de l'adresse 192.168.1.123 (peut-être parce que le réseau 78.22.45.0/24 n'a pas de route au 192.168.1.0/24 ou parce que vous ne voulez pas que votre trafic prenne cet itinéraire pour une raison ou l'autre):
ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12
Notez que le SRC que vous donnez n'aurait aucune incidence sur le trafic originaire de votre hôte même. Si un paquet étranger est en train d'être acheminé, il aurait évidemment une adresse IP source afin qu'elle soit transmise non valleuse (sauf si vous n'utilisez pas NAT bien sûr, mais c'est une question entièrement différente) . De plus, ce paramètre peut être remplacé par un processus qui choisit spécifiquement de se lier à une adresse spécifique au lieu d'utiliser les valeurs par défaut lors de l'initiation de connexions (plutôt rare).
L'attribut src
est un indice utilisé par le Algorithme de sélection d'adresse. Il est important lorsqu'un hôte dispose de plusieurs adresses IP, ce qui est généralement, mais pas toujours, lorsqu'il a plusieurs interfaces. Bien qu'il existe d'autres règles qui influencent la sélection de l'adresse, une application réseau peut également remplacer l'algorithme de sélection en utilisant des appels système tels que bind()
, l'attribut src
est un moyen d'utiliser une table de routage. Recherche pour répondre à la question "Si je veux initier une connexion à l'hôte X, laquelle de mes adresses dois-je utiliser?"
Voici un exemple pour illustrer l'utilisation et l'effet de l'attribut src
. Pour indiquer que cela est lié aux adresses et aux itinéraires, non strictement des interfaces, cet exemple d'exemple n'a qu'une interface réseau, mais deux adresses. En outre, les deux adresses sont sur le même sous-réseau pour souligner le fait qu'il n'y a pas d'autre moyen évident de choisir lequel à utiliser.
$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27 scope link src 10.1.0.16
10.1.0.0/24 proto kernel scope link src 10.1.0.2
Cet hôte peut communiquer avec l'une des 252 autres adresses de ce sous-réseau à partir de l'adresse d'adresses, mais Par défaut Il utilisera 10.1.0.16 lors de l'initiation d'une connexion avec 10.1.0.32 à 10.1.0.63 et utilisez 10.1.0.2 pour tout le reste.
Si l'hôte répond, plutôt que d'initier, il répondra à l'adresse de destination de la demande. Par exemple, si un autre hôte au 10.1.0.32 se connecte à cet hôte au 10.1.0.2, la réponse proviendra de 10.1.0.2 Même si cela ne correspond pas à l'attribut src
de la route de retour.