Passa al contenuto principale
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 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 – 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 ac100122
TCP 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 ac100122
TCP 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 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'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 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 – 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: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 – 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 -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 – 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.226
Figura 7 – Aggiunta di un alias a un'interfaccia