Aller directement au contenu principal
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 ac1001e2
TCP 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 ac100122
TCP 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 ac100122
TCP 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 ac100122
TCP 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 ac1001e2
TCP 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 ac100122
TCP 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 ac1001e2
TCP 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 ac100122
TCP 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:48
ping 172.16.1.34
Pinging host 172.16.1.34 : 172.16.1.34
ICMP Echo Reply:TTL 60 time = 0 ms
ICMP Echo Reply:TTL 60 time = 0 ms
ICMP Echo Reply:TTL 60 time = 0 ms
ICMP Echo Reply:TTL 60 time = 0 ms
Host 172.16.1.34 replied to all 4 of the 4 pings
ready  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 -numeric
Active connections
Proto 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.226
Figure 7 – Ajouter un alias à une interface