Le fait qu'un module dispose de deux interfaces sur le même sous-réseau ne signifie pas pour autant que vous disposez de deux interfaces pour les entrées et les sorties du module. Bien que vous disposiez effectivement de deux interfaces pour les entrées, le protocole STCP n'utilisera qu'une seule interface pour envoyer des paquets hors du module. Il procède ainsi quel que soit le port auquel un client est connecté.
Par exemple, considérons ces deux interfaces sur le sous-réseau 172.16.1.0/24
%phx_vos#sdlmux.m16.10.11-2 IP : 172.16.1.116 MAC : 00:00:a8:42:52:22
%phx_vos#sdlmux.m16.11.11-2 IP : 172.16.1.226 MAC : 00:00:a8:43:52:22
Remarquez sur la figure 1 que le paquet envoyé à 172.16.1.226 utilise l'adresse MAC de destination 00:00:a8:43:52:22, mais que la réponse provient de 00:00:a8:42:52:22, l'adresse MAC de 172.16.1.116, bien que dans le paquet, la réponse apparaisse comme provenant de 172.16.1.226.
11:04:57.117 Xmit Ether Dst 00:00:a8:43:52:22 Src 00:00:a8:42:3b:6e Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 2c, ID 2045, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 0363, Src ac100122, Dst ac1001e2TCP from 172.16.1.34.49183 to 172.16.1.226.telnet. . . 11:04:57.130 Rcvd Ether Dst 00:00:a8:42:3b:6e Src 00:00:a8:42:52:22 Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 2c, ID 7c8, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 1be0, Src ac1001e2, Dst ac100122TCP from 172.16.1.226.telnet to 172.16.1.34.49183. . . Figure 1 – Demande de connexion au module (trace enregistrée côté client)
Si le module établit une connexion au lieu d'en recevoir une, il utilisera toujours la première interface (116).
13:01:36.479 Rcvd Ether Dst 00:00:a8:42:3b:6e Src 00:00:a8:42:52:22 Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 2c, ID 4a33, Flg/Frg 0, TTL 3c, Prtl 6 Cksum d9e2, Src ac100174, Dst ac100122TCP from 172.16.1.116.49320 to 172.16.1.34.4680. . .Figure 2 – Demande de connexion d'un module vers un autre serveur (trace enregistrée sur le serveur)
Même si vous vous connectez à la deuxième adresse IP (226) lors de l'envoi du paquet, celui-ci sort par la première interface (116)
13:02:55.349 Rcvd Ether Dst 00:00:a8:42:3b:6e Src 00:00:a8:42:52:22 Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 2c, ID 4b7a, Flg/Frg 0, TTL 3c, Prtl 6 Cksum d82d, Src ac1001e2, Dst ac100122TCP from 172.16.1.226.49321 to 172.16.1.34.4680. . . Figure 3 – Demande de connexion du module vers un autre serveur (trace enregistrée sur l'autre serveur)
application cliente associée à l'interface IP 172.16.1.226
Ce n'est que si la première interface (116) tombe en panne que le module basculera vers la deuxième interface (226). Alors que les connexions à la deuxième interface (226) seront maintenues, celles à la première interface (116) seront interrompues.
13:14:43.884 Xmit Ether Dst 00:00:a8:43:52:22 Src 00:00:a8:42:3b:6e Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 28, ID 5072, Flg/Frg 0, TTL 3c, Prtl 6 Cksum d339, Src ac100122, Dst ac1001e2TCP from 172.16.1.34.49186 to 172.16.1.226.telnet. . . 13:14:43.885 Rcvd Ether Dst 00:00:a8:42:3b:6e Src 00:00:a8:42:52:22 Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 28, ID 53ef, Flg/Frg 0, TTL 3c, Prtl 6 Cksum cfbc, Src ac1001e2, Dst ac100122TCP from 172.16.1.226.telnet to 172.16.1.34.49186. . . L'interface 172.16.1.116 ne fonctionne pas – notez le changement d'adresse MAC source
13:15:56.718 Xmit Ether Dst 00:00:a8:43:52:22 Src 00:00:a8:42:3b:6e Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 29, ID 50e7, Flg/Frg 0, TTL 3c, Prtl 6 Cksum d2c3, Src ac100122, Dst ac1001e2TCP from 172.16.1.34.49186 to 172.16.1.226.telnet. . . 13:15:56.719 Rcvd Ether Dst 00:00:a8:42:3b:6e Src 00:00:a8:43:52:22 Type 0800+(IP)IP Ver/HL 45, ToS 0, Len 29, ID 5552, Flg/Frg 0, TTL 3c, Prtl 6 Cksum ce58, Src ac1001e2, Dst ac100122TCP from 172.16.1.226.telnet to 172.16.1.34.49186. . .Figure 4 – Évolution de la valeur MAC en cas de défaillance de la première interface (trace enregistrée sur le client)
Comment savoir quelle interface sera utilisée pour acheminer le trafic ?
Il existe plusieurs méthodes. La première consiste à utiliser packet_monitor ou un autre analyseur de protocole sur l'hôte distant ou sur le réseau pour analyser les adresses MAC sources ; voir les figures 1 à 4.
La deuxième méthode consiste à utiliser netstat pour examiner l'interface, à générer un peu de trafic, à relancer netstat et à comparer les résultats. Seule une interface devrait avoir vu son compteur de « trames transmises » augmenter.
netstat -interface #sdlmux.m16.10.11-2; netstat -interface #sdlmux.m16.11.11-2. . .MAC Statistics: Received frames : 1598960 Received multicast and broadcast frames : 1564503 Received octets : 258513766 Transmitted frames : 531 Transmitted octets : 50850. . . MAC Statistics: Received frames : 1603838 Received multicast and broadcast frames : 1569292 Received octets : 259291185 Transmitted frames : 15 Transmitted octets : 947. . . ready 13:29:48ping 172.16.1.34Pinging host 172.16.1.34 : 172.16.1.34ICMP Echo Reply:TTL 60 time = 0 msICMP Echo Reply:TTL 60 time = 0 msICMP Echo Reply:TTL 60 time = 0 msICMP Echo Reply:TTL 60 time = 0 msHost 172.16.1.34 replied to all 4 of the 4 pingsready 13:29:55 netstat -interface #sdlmux.m16.10.11-2; netstat -interface #sdlmux.m16.11.11-2. . .MAC Statistics: Received frames : 1603142 Received multicast and broadcast frames : 1568591 Received octets : 259187870 Transmitted frames : 535 Transmitted octets : 51274. . . MAC Statistics: Received frames : 1607492 Received multicast and broadcast frames : 1572869 Received octets : 259880655 Transmitted frames : 15 Transmitted octets : 947. . .Figure 5 – Utilisation de netstat pour comparer le compteur de trames transmises
La troisième méthode consiste à se connecter à un service sur un autre système et à vérifier quelle adresse source locale est utilisée. À moins que vous ne vous connectiez explicitement à une autre adresse, l'adresse IP source correspondra à l'interface active.
netstat -numericActive connectionsProto Recv-Q Send-Q Local Address Foreign Address (state). . .tcp 0 0 172.16.1.116:49369 172.16.1.34:23 ESTABLISHED. . .Figure 6 – Quelle interface est utilisée pour les connexions sortantes ?
Je pense que le fait d'avoir plusieurs interfaces sur le même sous-réseau ne fait que semer la confusion et n'en vaut généralement pas la peine. Si, pour une raison quelconque, vous devez attribuer des adresses IP sur le même sous-réseau, ajoutez un alias à la première interface.
ifconfig #sdlmux.m16.10.11-2 172.16.1.226 -add -alias
Ajout de l'adresse IP 172.16.1.226 à l'interface %phx_vos#sdlmux.m16.10.11-2
%phx_vos#sdlmux.m16.10.11-2: <UP, BROADCAST, RUNNING, NOFORWARDBROADCAST, KEEPAL+IVE> 172.16.1.116 netmask 0xffffff00 broadcast 172.16.1.255 Number of additional address(es): 1 172.16.1.226Figure 7 – Ajouter un alias à une interface
