Una configurazione molto comune per un server è avere più di una scheda di rete, ed essere collegato a più reti simultaneamente nonostante il server non funga da forwarder/router. Un server con questa caratteristica viene etichettato come multihomed.

Un server multihomed è caratterizzato da un’elevata connettività di rete, in quanto può essere connesso simultaneamente a più reti, siano esse Intranet e/o Internet. Questa connessione multipla introduce alcune problematiche di sicurezza, che normalmente non sono presenti in un ambiente con una sola connessione. I servizi che girano in un server multihomed potrebbero essere vulnerabili ad attacchi provenienti dalle diverse reti connesse.

Per ovviare a questo problema l’RFC 1122 (sez 3.3.4.2) specifica due modelli comportamentali per gli host multihomed:

  • Strong ES Model
  • Weak ES Model

Nel primo modello l’host scarta un pacchetto in ingresso se il suo indirizzo di destinazione non corrisponde a quello dell’interfaccia in cui è stato ricevuto ed invia un pacchetto IP solamente attraverso l’interfaccia che corrisponde all’IP sorgente del pacchetto. Il modello weak invece è più permissivo, e permette di compiere le azioni inibite dal modello precedente.

Una differenza sostanziale tra I due modelli è nella scelta della scheda su cui inviare un pacchetto, il modello weak tiene conto solamente dell’IP di destinazione mentre il modello strong utilizza anche l’IP sorgente come parametro per la scelta della scheda da utilizzare. Da notare che il modello strong preferisce l’utilizzo di un default gateway per ogni scheda.

In Windows Server 2008 di default è abilitato il modello strong, che aumenta il livello di sicurezza della macchina. In alcune configurazioni particolari la seconda scheda di rete, senza gateway, riceve correttamente i pacchetti ma non invia le risposte per via delle restrizioni di sicurezza introdotte dal modello strong.

Per ovviare a questo inconveniente ci sono due modi:

  1. Aggiungere un default gateway sulle NIC che ne sono prive
  2. Passare dal modello strong al modello weak

Il primo punto è di facile implementazione, mentre per mettere in pratica il secondo punto bisogna utilizzare i seguenti comandi:

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostsend=enabled
netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostreceive=enabled

Per maggiori informazioni, e una dettagliata descrizione degli algoritmi utilizzati nei vari modelli potete fate riferimento al seguente articolo.

Gianluca Bertelli
Support Engineer
Microsoft Enterprise Platforms Support