Avere due interfacce in un modulo sulla stessa sottorete non significa avere due interfacce in entrata e in uscita dal modulo. Sebbene si abbiano due interfacce in entrata nel modulo, STCP utilizzerà solo un'interfaccia per l'invio dei pacchetti in uscita dal modulo. Ciò avviene indipendentemente dall'interfaccia a cui è connesso il client.
Ad esempio, date queste due interfacce sulla sottorete 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
Si noti nella figura 1 che il pacchetto inviato a 172.16.1.226 utilizza l'indirizzo MAC di destinazione 00:00:a8:43:52:22, ma la risposta proviene da 00:00:a8:42:52:22, l'indirizzo MAC per 172.16.1.116, anche se nel pacchetto la risposta è indicata come proveniente da 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. . . Figura 1 – Richiesta di connessione al modulo (traccia acquisita sul client)
Se il modulo avvia una connessione invece di riceverne una, utilizzerà sempre la prima interfaccia (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. . .Figura 2 – Richiesta di connessione dal modulo a un altro server (traccia acquisita sul server)
Anche se ti colleghi al secondo indirizzo IP (226) quando invii il pacchetto, questo esce dalla prima interfaccia (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. . . Figura 3 – Richiesta di connessione dal modulo a un altro server (traccia acquisita su un altro server)
applicazione client associata all'interfaccia IP 172.16.1.226
Solo se la prima interfaccia (116) smette di funzionare, il modulo passerà alla seconda interfaccia (226). Mentre le connessioni alla seconda interfaccia (226) continueranno a funzionare, quelle alla prima interfaccia (116) non funzioneranno più.
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'interfaccia 172.16.1.116 non funziona: notare la modifica dell'indirizzo MAC di origine.
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. . .Figura 4 – Modifiche al MAC quando la prima interfaccia non funziona (traccia acquisita sul client)
Come si può sapere quale interfaccia verrà utilizzata per inviare il traffico?
Esistono diversi modi. Il primo consiste nell'utilizzare packet_monitor o un altro analizzatore di protocollo sull'host remoto o sulla rete per valutare gli indirizzi Mac di origine, vedere le figure da 1 a 4.
Il secondo è utilizzare netstat per esaminare l'interfaccia, generare un po' di traffico, eseguire nuovamente netstat e confrontare i risultati. Solo un'interfaccia dovrebbe aver incrementato il proprio contatore "frame trasmessi".
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. . .Figura 5 – Utilizzo di netstat per confrontare il contatore dei frame trasmessi
Il terzo modo consiste nel connettersi a un servizio su un altro sistema e vedere quale indirizzo sorgente locale viene utilizzato. A meno che non si effettui esplicitamente il binding a un altro indirizzo, l'indirizzo IP sorgente corrisponderà all'interfaccia attiva.
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. . .Figura 6 – Quale interfaccia viene utilizzata per le connessioni in uscita
A mio avviso, avere più interfacce sulla stessa sottorete crea solo confusione e solitamente non ne vale la pena. Se per qualche motivo avete bisogno di indirizzi IP sulla stessa sottorete, aggiungete un alias alla prima interfaccia.
ifconfig #sdlmux.m16.10.11-2 172.16.1.226 -add -alias
Aggiunta dell'indirizzo IP 172.16.1.226 all'interfaccia %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.226Figura 7 – Aggiunta di un alias a un'interfaccia
