Windows Server 2008: especificando la dirección IP predeterminada cuando la NIC tiene varias direcciones

23

Tengo un servidor de Windows que tiene ~ 10 direcciones IP enlazadas estáticamente. El problema es que no sé cómo especificar la dirección IP predeterminada.

A veces, cuando asigno una nueva dirección a la NIC, la dirección IP predeterminada cambia con la última IP ingresada en la configuración avanzada de IP en la NIC. Esto tiene el efecto (ya que uso NAT) de que la IP pública saliente también cambia.

Aunque este problema se encuentra actualmente en Windows Server 2008.

¿Cómo puede establecer la dirección IP predeterminada en una NIC cuando tiene varias direcciones IP enlazadas?

Hay más explicaciones sobre mi problema.

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

Aquí está la salida de 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

Si hago una pathpingrespuesta, la primera es la 99.49, también si mi dirección IP predeterminada es 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]

Existe la tabla de enrutamiento en la máquina:

 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

Creo que mi ruta debería verse así:

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

¿Cómo puedo estar seguro de que la dirección IP utilizada en la imagen (supuestamente la dirección IP predeterminada) será utilizada por mi servidor como la dirección predeterminada?

Cédric Boivin
fuente

Respuestas:

11

Con Server 2008 Service Pack 2 (no R2), o Vista SP2 y MS hotfix KB975808 hay una solución, aunque un poco torpe. Eliminaría todas las direcciones que NO desea como fuente, luego volvería a agregar cada una en la línea de comando usando

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

La revisión habilita el indicador "Omitir como fuente".

Para una inmersión más profunda sobre cómo las diferentes versiones de Windows seleccionan las IP de origen, consulte esta publicación de blog de TechNet .

Paul
fuente
6

No existe una "IP predeterminada" para una interfaz de red; más bien, la tabla de enrutamiento de sus sistemas define qué interfaz lógica se debe usar al comunicarse con otros dispositivos.

Parece que lo que le gustaría hacer es configurar una ruta predeterminada. Esto provocaría que todas las conversaciones iniciadas por esta máquina se realicen desde una IP específica.

Use route add para agregar una puerta de enlace predeterminada

Brian Tillman
fuente
Cómo puedo cambiar mi tabla de enrutamiento, en realidad es el 99.49, necesito que la ruta predeterminada sea 99.100
Cédric Boivin
La puerta de enlace predeterminada es la ruta predeterminada y viceversa. Es solo una cuestión de terminología.
Kevin M
Lo sé, pero no puedo cambiar la ruta predeterminada. ¿Cómo puedo cambiarlo? ¿Cuáles son las fórmulas de comando correctas?
Cédric Boivin
1
Puede intentar esto: "ruta agregar 0.0.0.0 máscara 0.0.0.0 192.168.99.100 métrica 2"
Jeff Miles
Si hago eso, no, ya no puedo ir a Internet porque es una puerta de enlace incorrecta.
Cédric Boivin
2

Su situación no está del todo clara, pero si lo entiendo bien:
1) ¿Por qué no establecerá su IP de "necesidad de ser el predeterminado" al final?

2) O, tal vez pueda intentar esto (suponiendo que la dirección de la puerta de enlace sea 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

Para obtener más información sobre la sintaxis del comando "ruta", mire aquí: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx?mfr=true

Alexey Shatygin
fuente
No funciona, el comando no es bueno. Error, no se puede encontrar el archivo especificado
Cédric Boivin
intente sin "if": route -p add 192.168.99.1 mask 255.255.255.255 192.168.99.100 pero debería funcionar, ¿podría citar el erroe por favor?
Alexey Shatygin
Esta vez, no hay mensaje de error, pero eso no cambia nada
Cédric Boivin
Debería cambiar su tabla de enrutamiento. ¿Puedes hacer "route print", este comando y "route print" nuevamente y poner la salida aquí?
Alexey Shatygin
Y, antes de hacer el comando que
publiqué
1

¿No podría usar métricas en las direcciones IP? En las propiedades de TCP / IP, desactive la métrica automática y asigne una estática con un valor inferior a 261 (como se muestra en la captura de pantalla) a la dirección que desea para su valor predeterminado.

Jeff Miles
fuente
Lo intentaré, es una buena idea.
Cédric Boivin
No trabajes, mira mi modificación en mi publicación.
Cédric Boivin
¿Hay alguna manera de cambiar la dirección de la interfaz?
Cédric Boivin
1

Un comando en la forma:
> route add 0.0.0.0 mask 0.0.0.0 192.168.99.1 metric xxx si yyy
cambiará la dirección vista cuando la máquina vaya a cualquier dirección que no sea 192.168.99.0 / 24 y no 10.10.10.0 / 24 . Es decir, cuando se usa la puerta de enlace predeterminada. La métrica (xxx) debe ser más alta que cualquier otra cosa para garantizar que se use la regla. La interfaz (aaa) debe ser una interfaz para usar. Pero, no creo que haya una manera de controlar qué dirección IP en esa interfaz usar si hay varias direcciones IP.
> route add 192.168.99.0 mask 255.255.255.0 metric xxx si yyy
es similar pero es para cualquier dirección 192.168.99.0/24 a la que va el sistema. El hecho es que asignar múltiples direcciones IP a una sola interfaz puede tener este tipo de problemas.

Beau Geste
fuente
1

He podido duplicar su problema: parece que Windows usa la dirección IP asignada más baja en una interfaz de red determinada como la "saliente", independientemente del orden real en que se asignaron.

No pude encontrar ninguna documentación sobre este comportamiento, pero estoy bastante seguro de que es por diseño.


Editar

Creo que esto realmente no se puede hacer a nivel del sistema operativo, pero se puede hacer por código en su aplicación: un socket se puede vincular explícitamente a un par de puerto / dirección IP elegido antes de conectarlo al punto final remoto. Pero tendrá que usar bibliotecas de nivel inferior que las de servicios web estándar. IE tendrá que abrir manualmente un socket, conectarlo y usarlo para leer / escribir datos.

Ejemplo de .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

Esto abrirá una conexión a 1.2.3.4:80 originándola desde 192.168.99.100:4242, por lo que el host remoto verá que proviene exactamente de esa dirección IP.

Probado y probado al conectarse a IIS, registra la solicitud como proveniente de la dirección IP especificada.

Massimo
fuente
¿Leí algo que podría ser una comparación binaria con la dirección IP?
Cédric Boivin
1
Sí, es muy probable que la comparación binaria sea la forma en que se selecciona "la más baja"; Sin embargo, no he probado con IP que pertenecen a diferentes subredes.
Massimo
Mi mayor problema en este momento es que tengo más de 300 sitios web en direcciones IP múltiples, y cuando mi servidor se conecta a Internet para llamar a otro servidor (servicio web), no puedo estar seguro de qué IP pública tendrá mi servidor.
Cédric Boivin
Gracias por esta respuesta, pero en mi escenario es imposible aplicar estas soluciones. Las soluciones deben provenir del sistema operativo, o quizás del firewall. Es una buena forma de resolver el problema por aplicación, pero vamos a muchas aplicaciones para resolver el problema en cada sitio web.
Cédric Boivin
Pero incluso si pudiera hacer lo que quisiera, no podría hacer que diferentes sitios web utilicen diferentes IP; de esta manera, podrías :-)
Massimo
1

La selección de dirección de origen para una llamada saliente se maneja de manera diferente por la pila TCP / IP desde la revisión de Vista. En XP / 2003 y versiones anteriores, la tabla de ruta determinaba la dirección de origen cuando la aplicación que realizaba la llamada saliente no la declaraba explícitamente. Desde Vista / 2008, la dirección de origen podría determinarse por afinidad de prefijo con el destino o la dirección de la puerta de enlace del próximo salto si el destino no es local. La siguiente publicación en el blog de Technet explica muy bien el cambio de comportamiento.

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

Brian Mellinger
fuente
1

Tengo Windows 2008 R2 SP1 x64 Enterprise Edition como servidores web con One NIC.

Me encontré con el mismo problema descrito anteriormente. Quiero que las conexiones salientes sean manejadas por la dirección IP predeterminada (la que está firmada en el servidor) pero sigue eligiendo aleatoriamente qué dirección IP de mis 10 direcciones IP para mis 10 sitios web en ese servidor.

Todos se muestran como direcciones IP preferidas si ejecuta el siguiente comando.

Netsh int ipv4 show ipaddresses level=verbose

Intenté descargar el Hot Fix, pero por alguna razón (y lo hice doblemente, verifiqué tres veces) me dijo "no se puede ejecutar en esta versión del sistema operativo". Si quieren probarlo aquí está .

Si tiene un servidor MS DNS en ejecución, notará que el mismo nombre del servidor se registrará 11 veces (en mi caso) 1 IP para el servidor y 10 IP para cada uno de los sitios web.

Lo que creo que podría ser una solución alternativa (en este momento, a menos que alguien más tenga una mejor solución)

Es ir al servidor de Windows en las propiedades de TCP donde ingresó las direcciones IP para el servidor y los sitios web, verá allí una pestaña DNS. Ahora desmarque el REGISTRO DE LAS DIRECCIONES DE CONEXIONES y reinicie el servidor (y deje sin marcar).

Si marca en el servidor DNS, todas las entradas DNS con las IP habrán desaparecido.

Ahora ingrese MANUALMENTE en DNS el nombre del servidor y la dirección IP preferida . Y debería solucionar el problema.

Si alguno de ustedes tiene una solución mejor, comparta con nosotros.

Gripe: No estoy seguro de por qué MS no solucionó este problema. Deberían haber creado una opción (como una casilla de verificación) para los servidores que llevan múltiples direcciones IP en la misma subred para que pueda seleccionar qué dirección IP debería ser la preferida.

Neo
fuente
0

Una 'dirección predeterminada' es la que se coloca en el primer cuadro de entrada en las propiedades de la tarjeta de interfaz, ya que responderá de forma predeterminada con esta, todas las demás se consideran secundarias.

(El servidor ISA es un buen ejemplo de ese comportamiento, ya que no puede decirle que responda con la IP con la que se contactó ...)

Alexandre Nizoux
fuente
Se supone que es así, pero no funciona. En mi caso, la ip 99.49 está en la configuración avanzada y la 99.100 es la que especifica en la propiedad de ipv4 ...
Cédric Boivin
Esto es realmente extraño ya que nuestra infraestructura aquí lo usa mucho para filtros de servidores web y otras cosas. ¿Ha intentado eliminar todas las IP de las propiedades de la tarjeta, excepto la que desea que sea predeterminada, aplicar y volver a colocarlas después?
Alexandre Nizoux
Sí, lo intento, y el mismo problema ocurre cuando ingreso 99.49
Cédric Boivin
¿es 99.49 la más baja de sus IP?
Alexandre Nizoux
Sí, puedes mirar mi ipconfig en la parte superior
Cédric Boivin
0

Encontré una solución:

  • en su nic principal, elimine la IP que desea de forma predeterminada, elimine también gw predeterminado, asígnele una métrica alta (ejemplo: 50)
  • agregue nic secundaria, dele la IP que desea como 'predeterminada', establezca el GW predeterminado aquí y en la pestaña avanzada establezca la métrica más baja (ejemplo: 1)

Esto funcionó en mi 2008R2 / IIS7 con 20 direcciones IP.

BR, Matija

user39080
fuente
0

Lo resolví cambiando la máscara de red a 255.255.255.255todas las direcciones adicionales y dejando solo la dirección predeterminada sin cambios.

¡Espero que esto te resuelva!

Aldo
fuente