Tener dos interfaces en un módulo en la misma subred no te da dos interfaces para entrar y salir del módulo. Mientras tengas dos interfaces en el módulo, STCP usará sólo una interfaz cuando envíe paquetes fuera del módulo. Lo hace independientemente de la interfaz a la que se haya conectado un cliente.
Por ejemplo, dadas estas dos interfaces en la subred 172.16.1.0/24
IP: 172.16.1.116 MAC: 00:00:a8:42:52:22
MAC: 00:00:a8:43:52:22
Observe en la figura 1 que el paquete enviado a 172.16.1.226 utiliza la dirección MAC de destino de 00:00:a8:43:52:22 pero la respuesta viene de 00:00:a8:42:52:22, la dirección MAC para 172.16.1.116 aunque en el paquete la respuesta se muestra como procedente 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
. . .
Figura 1 - Solicitud de conexión al módulo (rastreo realizado en el cliente)
Si el módulo inicia una conexión en lugar de recibirla, siempre utilizará la primera interfaz (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
. . .
Figura 2 - Solicitud de conexión del módulo a otro servidor (rastreo realizado en el servidor)
Incluso si te unes a la segunda (226) dirección IP cuando envías el paquete, éste sale a través de la primera (116) interfaz.
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
. . .
Figura 3 - Solicitud de conexión del módulo a otro servidor (rastreo realizado en otro servidor)
aplicación cliente vinculada a la interfaz IP 172.16.1.226
Sólo si la primera interfaz (116) se cae, el módulo pasará a utilizar la segunda interfaz (226). Mientras se mantengan las conexiones con la segunda interfaz (226), las conexiones con la primera (116) fallarán.
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
. . .
La interfaz 172.16.1.116 falla - note el cambio en la dirección MAC de la fuente
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
. . .
Figura 4 - Cambios en el MAC cuando falla la primera interfaz (rastreo realizado en el cliente)
¿Cómo puedes saber qué interfaz se usará para enviar el tráfico?
Hay varias maneras. La primera es usar packet_monitor o algún otro analizador de protocolo en el host remoto o la red para evaluar las direcciones Mac de origen, ver figuras 1 a 4.
El segundo es usar netstat para mirar la interfaz, generar algo de tráfico, ejecutar netstat de nuevo y comparar. Sólo una interfaz debería haber incrementado su contador de "tramas transmitidas".
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
. . .
Figura 5 - Usando netstat para comparar el contador de fotogramas transmitidos
La tercera forma es conectarse a un servicio en otro sistema y ver qué dirección de fuente local se utiliza. A menos que te conectes explícitamente a otra dirección, la dirección IP de la fuente corresponderá a la interfaz activa.
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
. . .
Figura 6 - qué interfaz se utiliza para las conexiones salientes
En mi opinión, tener múltiples interfaces en la misma subred sólo confunde las cosas y normalmente no vale la pena la confusión. Si por alguna razón necesitas direcciones IP en la misma subred, añade un alias a la primera interfaz.
ifconfig #sdlmux.m16.10.11-2 172.16.1.226 -add -alias
Añadiendo la dirección IP 172.16.1.226 a la interfaz %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
Figura 7 - añadiendo un alias a una interfaz