Solution 1 :
Lors de l'ajout d'une route à un hôte multirésident, vous souhaiterez peut-être contrôler l'adresse IP source à partir de laquelle votre hôte envoie lors du démarrage des communications utilisant cette route. C'est ce que src est pour.
Un petit 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 vers 78.22.45.0/24 via 10.45.22.1 et vous voulez vous assurer que vous n'envoyez pas vers 78.22.45.0/24 en utilisant l'adresse 192.168.1.123 (peut-être parce que le réseau 78.22.45.0/24 n'a pas de route de retour vers 192.168.1.0/24 ou parce que vous ne voulez pas que votre trafic emprunte cette route pour une raison ou une 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'affecterait que le trafic provenant de votre hôte même. Si un paquet étranger est routé, il aura évidemment déjà une adresse IP source, il sera donc transmis sans modification (sauf si vous utilisez NAT bien sûr, mais c'est une tout autre affaire). De plus, ce paramètre peut être remplacé par un processus choisissant spécifiquement de se lier à une adresse spécifique au lieu d'utiliser les valeurs par défaut lors de l'établissement de connexions (plutôt rare).
Solution 2 :
Le src
l'attribut est un indice utilisé par l'algorithme de sélection d'adresse . C'est important lorsqu'un hôte a 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 d'adresses, une application réseau peut également remplacer l'algorithme de sélection en utilisant des appels système tels que bind()
, le src
L'attribut est un moyen d'utiliser une recherche de table de routage 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 du src
attribut. Pour souligner que cela est lié aux adresses et aux routes, pas strictement aux interfaces, cet exemple d'hôte n'a qu'une seule interface réseau mais deux adresses. De plus, les deux adresses se trouvent 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 n'importe laquelle des 252 autres adresses sur ce sous-réseau /24 à partir de l'une ou l'autre adresse, mais par défaut il utilisera 10.1.0.16 lors de l'établissement d'une connexion avec 10.1.0.32 à 10.1.0.63, et utilisera 10.1.0.2 pour tout le reste.
Si l'hôte répond, plutôt que d'initier, il répondra à partir de l'adresse de destination de la demande. Par exemple, si un autre hôte à 10.1.0.32 se connecte à cet hôte à 10.1.0.2, la réponse viendra de 10.1.0.2 même si cela ne correspond pas au src
attribut de la route de retour.