Windows Server 2008: specifica dell'indirizzo IP predefinito quando la NIC ha più indirizzi


23

Ho un server Windows con ~ 10 indirizzi IP associati staticamente. Il problema è che non so come specificare l'indirizzo IP predefinito.

A volte, quando assegno un nuovo indirizzo alla NIC, l'indirizzo IP predefinito cambia con l'ultimo IP inserito nella configurazione IP avanzata sulla NIC. Ciò ha l'effetto (poiché utilizzo NAT) che cambia anche l'IP pubblico in uscita.

Anche se questo problema è attualmente su Windows Server 2008.

Come si può impostare l'indirizzo IP predefinito su una scheda NIC quando ha più indirizzi IP associati?

C'è più spiegazione sul mio problema.

testo alternativo http://www.nmediasolutions.com/_images/probleme/ip.png

Ecco l'output di ipconfig:

DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 192.168.99.49(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.51(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.52(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.53(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.54(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.55(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.56(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.57(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.58(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.59(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.60(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.61(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.62(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.64(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.65(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.66(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.67(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.68(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.70(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.71(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.100(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.108(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.109(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.112(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.63(Duplicate)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.99.1

Se lo faccio pathpingc'è la risposta, il primo è il 99.49, anche se il mio indirizzo IP predefinito è 99.100

Tracing route to www.l.google.com [72.14.204.99]
over a maximum of 30 hops:
  0  Machine [192.168.99.49]

C'è la tabella di routing sulla macchina:

 Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0     192.168.99.1    192.168.99.49    261
           10.10.10.0    255.255.255.0         On-link       10.10.10.10    261
          10.10.10.10  255.255.255.255         On-link       10.10.10.10    261
         10.10.10.255  255.255.255.255         On-link       10.10.10.10    261
         192.168.99.0    255.255.255.0         On-link     192.168.99.49    261
        192.168.99.49  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.51  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.52  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.53  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.54  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.55  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.56  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.57  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.58  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.59  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.60  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.61  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.62  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.64  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.65  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.66  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.67  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.68  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.70  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.71  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.100  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.108  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.109  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.112  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.255  255.255.255.255         On-link     192.168.99.49    261
            224.0.0.0        240.0.0.0         On-link     192.168.99.49    261
            224.0.0.0        240.0.0.0         On-link       10.10.10.10    261
      255.255.255.255  255.255.255.255         On-link     192.168.99.49    261
      255.255.255.255  255.255.255.255         On-link       10.10.10.10    261

Penso che il mio percorso dovrebbe apparire come:

Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0     192.168.99.1    **192.168.99.100**    261
           10.10.10.0    255.255.255.0         On-link       10.10.10.10    261
          10.10.10.10  255.255.255.255         On-link       10.10.10.10    261
         10.10.10.255  255.255.255.255         On-link       10.10.10.10    261
         192.168.99.0    255.255.255.0         On-link     192.168.99.100    261
        192.168.99.49  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.51  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.52  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.53  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.54  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.55  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.56  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.57  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.58  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.59  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.60  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.61  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.62  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.64  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.65  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.66  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.67  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.68  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.70  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.71  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.100  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.108  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.109  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.112  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.255  255.255.255.255         On-link     192.168.99.100    261
            224.0.0.0        240.0.0.0         On-link     192.168.99.100    261
            224.0.0.0        240.0.0.0         On-link       10.10.10.10    261
      255.255.255.255  255.255.255.255         On-link     192.168.99.100    261
      255.255.255.255  255.255.255.255         On-link       10.10.10.10    261

Come posso essere sicuro che l'indirizzo IP utilizzato nell'immagine (che si suppone sia l'indirizzo IP predefinito) verrà utilizzato dal mio server come indirizzo predefinito?

Risposte:


11

Con Server 2008 Service Pack 2 (non R2) o Vista SP2 e hotfix MS KB975808 esiste una soluzione, sebbene un po 'goffa. Rimuovere tutti gli indirizzi che NON si desidera come fonte, quindi aggiungere nuovamente ciascuno nella riga di comando utilizzando

Netsh int ipv4 add address <Interface Name> <ip address> skipassource=true

L'aggiornamento rapido abilita il flag "Salta come origine".

Per un approfondimento su come le diverse versioni di Windows selezionano gli IP di origine, consultare questo post sul blog TechNet .


6

Non esiste un "IP predefinito" per un'interfaccia di rete; piuttosto la tabella di routing dei sistemi definisce quale interfaccia logica deve essere utilizzata quando si comunica con altri dispositivi.

Sembra che quello che ti piacerebbe fare è configurare un percorso predefinito. Ciò causerebbe tutte le conversazioni avviate da questa macchina da un IP specifico.

Usa route add per aggiungere un gateway predefinito


Come posso cambiare la mia tabella di routing, in realtà è il 99.49 ho bisogno che il percorso predefinito sia 99.100
Cédric Boivin

Il gateway predefinito è route predefinita e viceversa. È solo una questione di terminologia.
Kevin M

Lo so, ma non posso cambiare il percorso predefinito. Come posso cambiarlo? Quali sono le formule di comando corrette
Cédric Boivin

1
Puoi provare questo: "route add 0.0.0.0 mask 0.0.0.0 192.168.99.100 metric 2"
Jeff Miles

Se lo faccio, no, non posso più andare su Internet perché è un gateway sbagliato.
Cédric Boivin

2

La tua situazione non è abbastanza chiara, ma se ti capisco bene:
1) Perché non imposti l'ultimo IP "necessario per essere predefinito"?

2) O forse puoi provare questo (supponendo che l'indirizzo gateway sia 192.168.99.1):

route delete 0.0.0.0
route -p add 192.168.99.1 mask 255.255.255.255 192.168.99.100
route -p add 0.0.0.0 mask 0.0.0.0 192.168.99.1 192.168.99.100

Per ulteriori informazioni sulla sintassi del comando "route", consultare qui: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx?mfr=true


Non funziona, i comandi non sono buoni. Errore, impossibile trovare il file specificato
Cédric Boivin

prova senza "if": route -p aggiungi 192.168.99.1 maschera 255.255.255.255 192.168.99.100 ma dovrebbe funzionare, potresti citare l'erroe per favore?
Alexey Shatygin

Questa volta, nessun messaggio di errore, ma questo non cambia nulla
Cédric Boivin

Dovrebbe cambiare la tabella di routing. Puoi ripetere "route print", questo comando e "route print" e inserire qui l'output?
Alexey Shatygin

E, prima di eseguire il comando che ho pubblicato, fai "route delete 0.0.0.0"
Alexey Shatygin

1

Non potresti utilizzare le metriche sugli indirizzi IP? Nelle proprietà TCP / IP, deseleziona Metrica automatica e assegna una metrica statica con un valore inferiore a 261 (come mostrato nello screenshot) all'indirizzo desiderato per impostazione predefinita.


Ci proverò, è una buona idea.
Cédric Boivin

Non funziona, vedi la mia modifica sul mio post.
Cédric Boivin

c'è un modo per cambiare l'indirizzo dell'interfaccia?
Cédric Boivin

1

Un comando nel formato:
> route aggiungi 0.0.0.0 mask 0.0.0.0 192.168.99.1 metrica xxx se yyy
cambierà l'indirizzo visto quando la macchina passa a qualsiasi indirizzo non 192.168.99.0 / 24 e non 10.10.10.0 / 24 . Cioè, quando viene utilizzato il gateway predefinito. La metrica (xxx) dovrebbe essere superiore a qualsiasi altra cosa per garantire che la regola venga utilizzata. L'interfaccia (yyy) deve essere interfaccia per l'uso. Ma non penso che ci sia un modo per controllare quale indirizzo IP su quell'interfaccia usare se ci sono più indirizzi IP.
> route aggiungi 192.168.99.0 maschera 255.255.255.0 metrica xxx se yyy
è simile ma è per qualsiasi indirizzo 192.168.99.0/24 a cui va il sistema. Il fatto è che l'assegnazione di più indirizzi IP a una singola interfaccia può avere questo tipo di problemi.


1

Sono stato in grado di duplicare il tuo problema: sembra che Windows usi l' indirizzo IP assegnato più basso su una determinata interfaccia di rete come "in uscita", indipendentemente dall'ordine effettivo in cui sono stati assegnati.

Non sono stato in grado di trovare alcuna documentazione su questo comportamento, ma sono abbastanza sicuro che sia di progettazione.


modificare

Penso che questo non possa essere fatto a livello di sistema operativo, ma può essere fatto tramite il codice nell'applicazione: un socket può essere esplicitamente associato a una coppia di indirizzi / porte IP scelta prima di collegarlo all'endpoint remoto. Ma dovrai usare librerie di livello inferiore rispetto a quelle dei servizi web standard. IE dovrai aprire manualmente un socket, collegarlo e usarlo per leggere / scrivere i dati.

Esempio .NET / C #:

using System.Net;
using System.Net.Sockets;

IPAddress local_addr = IPAddress.Parse("192.168.99.100");
IPAddress remote_addr = IPAddress.Parse("1.2.3.4");

int local_port = 4242;
int remote_port = 80;

IPEndPoint local_ep = new IPEndPoint(local_addr,local_port);
IPEndPoint remote_ep = new IPEndPoint(remote_addr,remote_port);

Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

s.Bind(local_ep);

s.Connect(remote_ep);

// Now use the socket to talk to the remote host

Questo aprirà una connessione a 1.2.3.4:80 originandola da 192.168.99.100:4242, quindi l'host remoto vedrà che proviene esattamente da quell'indirizzo IP.

Provato e testato connettendosi a IIS, registra la richiesta come proveniente dall'indirizzo IP specificato.


Ho letto un abbigliamento che potrebbe essere un confronto binario con l'indirizzo IP?
Cédric Boivin,

1
Sì, il confronto binario è molto probabilmente il modo in cui è selezionato "il più basso"; Tuttavia, non ho provato con IP appartenenti a sottoreti diverse.
Massimo

Il mio problema più grande in questo momento è che ho più di 300 siti Web su più indirizzi IP e quando il mio server va su Internet per chiamare un altro server (servizio Web), non posso essere certo di quale IP pubblico avrà il mio server.
Cédric Boivin,

Grazie per questa risposta ma nel mio scenario è impossibile applicare questa soluzione. Le soluzioni devono provenire dal sistema operativo o forse dal firewall. È un buon modo per risolvere il problema per applicazione, ma andiamo a molte applicazioni, per risolvere il problema su ogni sito web.
Cédric Boivin,

Ma anche se tu fossi in grado di fare ciò che desideri, non potresti fare in modo che diversi siti web utilizzino IP diversi; in questo modo potresti :-)
Massimo

1

La selezione dell'indirizzo di origine per una chiamata in uscita viene gestita in modo diverso dallo stack TCP / IP dalla revisione di Vista. In XP / 2003 e precedenti, l'indirizzo di origine era determinato dalla tabella di instradamento quando non dichiarato esplicitamente dall'applicazione che effettuava la chiamata in uscita. A partire da Vista / 2008, l'indirizzo di origine potrebbe essere determinato dall'affinità del prefisso con l'indirizzo gateway destinazione o hop successivo se la destinazione non è locale. Il seguente post sul blog di Technet spiega molto bene il cambiamento di comportamento.

http://blogs.technet.com/b/networking/archive/2009/04/24/source-ip-address-selection-on-a-multi-homed-windows-computer.aspx


1

Ho Windows 2008 R2 SP1 x64 Enterprise Edition utilizzato come server Web con una scheda di rete.

Ho riscontrato lo stesso problema descritto sopra. Voglio che le connessioni in uscita siano gestite dall'indirizzo IP predefinito (quello firmato al server) ma continua a scegliere casualmente quale indirizzo IP tra i miei 10 indirizzi IP per i miei 10 siti Web su quel server.

Tutti vengono visualizzati come indirizzi IP preferiti se si esegue il comando seguente.

Netsh int ipv4 show ipaddresses level=verbose

Ho provato a scaricare la correzione rapida, ma per qualche motivo (e ho ricontrollato tre volte) ha detto "non può essere eseguito su questa versione del sistema operativo. Se voi ragazzi volete provare qui lo è .

Se il server MS DNS è in esecuzione, noterai che il nome del server SAME verrà registrato 11 volte (nel mio caso) 1 IP per il server e 10 IP per ciascuno dei siti Web.

Quello che credo potrebbe essere un Workaround (in questo momento, a meno che qualcun altro non abbia una soluzione migliore)

È quello di andare al server Windows sotto le proprietà TCP in cui hai inserito gli indirizzi IP per il server e i siti Web, vedrai lì una scheda DNS. Ora deseleziona REGISTRA GLI INDIRIZZI DEI COLLEGAMENTI e riavvia il server (e lascia deselezionato).

Se si accede al server DNS, tutte le voci DNS con gli IP saranno scomparse.

Ora inserisci MANUALMENTE in DNS il nome del server e l'indirizzo IP preferito . E dovrebbe risolvere il problema.

Se qualcuno di voi ha una soluzione migliore, si prega di condividere con noi.

Aderenza: non so perché MS non abbia risolto questo problema. Avrebbero dovuto creare un'opzione (come una casella di controllo) per i server che trasportano più indirizzi IP sulla stessa sottorete per consentire all'utente di selezionare quale indirizzo IP dovrebbe essere preferito.


0

Un "indirizzo predefinito" è quello inserito nella prima casella di input nelle proprietà della scheda di interfaccia poiché risponderà di default con questo, tutti gli altri sono considerati secondari.

(Il server ISA è un buon esempio di quel comportamento in quanto non si può dire di rispondere con l'IP con cui è stato contattato ...)


Supponiamo che sia così, ma non funziona. Nel mio caso l'ip 99.49 è nella configurazione avanzata e il 99.100 è quello che specifica nella proprietà di ipv4 ....
Cédric Boivin

Questo è davvero strano in quanto la nostra infrastruttura qui lo utilizza molto per i filtri e cose del server web. Hai provato a rimuovere tutti gli IP dalle proprietà della scheda eccetto quello che vuoi essere predefinito, applicare e rimetterli in seguito?
Alexandre Nizoux

Sì, lo provo e lo stesso problema si verifica quando entro 99.49
Cédric Boivin

è 99.49 il più basso dei tuoi IP?
Alexandre Nizoux

Sì, puoi guardare il mio ipconfig in alto
Cédric Boivin

0

Ho trovato una soluzione:

  • sul tuo nic principale, rimuovi l'IP che desideri come predefinito, rimuovi anche gw predefinito, fornisci metrica alta (esempio: 50)
  • aggiungi nic secondario, fornisci l'IP che desideri come "predefinito", imposta qui GW predefinito e nella scheda avanzata imposta la metrica più bassa (esempio: 1)

Questo ha funzionato nel mio 2008R2 / IIS7 con 20 indirizzi IP.

BR, Matija


0

L'ho risolto cambiando la maschera di rete in 255.255.255.255per tutti gli indirizzi aggiuntivi e lasciando invariato solo l'indirizzo predefinito.

Spero che questo risolva per te!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.