Agregue un alias de IP estático a una interfaz DHCP en Windows 8

11

Tengo una máquina con Windows 8 que tiene un solo puerto Ethernet. Necesita usar DHCP y también necesita una IP estática. Cada IP está en una subred diferente y cada una tiene un propósito diferente e incompatible.

Esta máquina debe usar DHCP porque el administrador de la red del sitio dice que esta es la única forma admitida de obtener una 192.168.x.ydirección. O su esquema de red no tiene un bloque de IP estático dentro de esa subred, o no asignará uno de ellos a esta máquina.

No puedo arriesgarme a usar una IP asignada por DHCP estáticamente, apostando a que no se reasignará después de que expire el contrato de arrendamiento. Eso me permitiría usar la capacidad de Windows para asignar múltiples direcciones IP estáticas a la interfaz, pero este es un servidor de producción, no es algo que pueda arriesgarme a que me retiren de la red horas o días después.

Me doy cuenta de que algunos servidores DHCP le permiten configurar asignaciones de MAC a IP estáticas, de modo que la IP DHCP de mi máquina nunca se reasigna, pero como no conozco ningún servidor DHCP que emita dos direcciones IP diferentes, cada una en una subred diferente, eso no es Ayuda aquí. (Y si existe un servidor DHCP de este tipo, mi cliente probablemente no lo use y no lo cambiaría si se lo pidiera).

Como no puedo hacer esto completamente con DHCP, necesito una IP estática porque esta máquina también actúa como servidor de una 10.x.y.zsubred. Los administradores de la red local me han dado una IP estática en ese esquema, pero es insuficiente porque también necesito hablar con el 192.168.x.ylado de la red.

Soy consciente de una pregunta similar aquí . Estoy preguntando nuevamente porque:

  1. Esa otra pregunta se planteó cuando Windows 7 era actual. ¿Quizás Microsoft usó esos más de 2 años para corregir esta debilidad en la implementación de la pila de red de Windows 8?

    (Sí, debilidad : Linux permite una interfaz de red con un DHCP y una IP estática. No hay nada acerca de TCP / IP que evite que Microsoft permita esto. Solo tienen que escribir el código para permitirlo).

  2. Parece que la GUI de configuración de red en Windows 8 tiene la misma limitación que la de Windows 7, pero ¿quizás haya algún hack de bajo nivel que nos permita asignar un alias de IP estático a la interfaz DHCP?

Warren Young
fuente

Respuestas:

7

Escribí un pequeño archivo por lotes. Puede probar para ver si funciona en su situación. (aquí funciona bien)

  • Configurará su interfaz de nuevo a DHCP.
  • Después de eso extraerá IP, máscara de subred, puerta de enlace predeterminada y el primer servidor DNS. Esta es la parte difícil. Especialmente si tienes múltiples interfaces. Si no funciona, necesitamos tocar un poco aquí para que funcione.
  • Si desea el segundo DNS también, debe agregarlo aquí (pero no busqué tanto porque un DNS debería estar bien por ahora).
  • Establecerá esta configuración "estática" en la interfaz.
  • Después de eso, puede agregar la 10.x.y.zdirección a su interfaz sin ningún problema.

Aquí está el guión:

@echo off
set interface = "Ethernet 2"
establecer extra_ip = 10.0.0.33
set extra_mask = 255.255.248.0

echo Configuración% interface% de regreso a DHCP
netsh int ipv4 establece el nombre de la dirección =% interface% source = dhcp
netsh int ipv4 set dnsservers name =% interface% source = dhcp

echo Esperando a que la IP se estabilice ...
tiempo de espera / t 5

echo Obtención de la IP actual de% interface%
ipconfig>% temp% \ ipconfig.txt
para / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "IPv4" ^ | find / v "127.0"') do set _IP = %% a
establecer IP =% _ IP: ~ 1%
para / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "Subnet" ^ | find / v "127.0"') do set _IP = %% a
establecer MÁSCARA =% _ IP: ~ 1%
para / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "Default" ^ | find / v "127.0" ^ | find / v "::"') establecer _IP = %% a
establecer GATE =% _ IP: ~ 1%
para / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "DNS Servers" ^ | find / v "127.0"') do set _IP = %% a
establecer DNS1 =% _ IP: ~ 1%

echo Configuración de dirección IP, máscara de subred y puerta de enlace predeterminada ...
echo (IP% IP%, máscara% MASK%, gw% GATE%)
netsh int ipv4 establece el nombre de la dirección =% interfaz% static% IP%% MASK%% GATE% gwmetric = 1

tiempo de espera / t 5
echo Configuración del DNS primario (% DNS1%) ...
netsh int ipv4 set dnsserver name =% interface% static% DNS1% primary

echo Agregando IP secundaria ...
netsh int ipv4 agregar dirección% interfaz%% extra_ip%% extra_mask%

tiempo de espera / t 5
eco.
echo Nueva configuración de IP:
ipconfig / all

del% temp \ ipconfig.txt

Solo necesita ejecutar esto una vez al período de su arrendamiento (o después de un reinicio). Entonces, si su contrato de arrendamiento es de 10 días, puede configurarlo en el programador de tareas para las 3 AM del domingo y después de cada reinicio. Si su computadora siempre está apagada por la noche, solo será necesaria después del reinicio.

Rik
fuente
7

Finalmente, DHCP e IP estáticas se pueden configurar para coexistir en una NIC. Esta característica ha aterrizado en la Actualización de creadores de Windows 10 (1703).

Hay una nueva propiedad llamada dhcpstaticipcoexistenceen el netsh interface ipv4 set interfacecomando, que se puede configurar enabledy esta interfaz se puede configurar con múltiples IP estáticas junto con una IP configurada por DHCP. Sin embargo, esto debe hacerse con el netsh add addresscomando, aún no es posible a través de la GUI.

Se ha publicado poca documentación sobre la actualización netshy hay poca discusión al respecto en todo Internet (la búsqueda de Google dhcpstaticipcoexistencesolo da 5 resultados al momento de esta respuesta). Pero esta característica es real.

Cecilio
fuente
3
Esta respuesta fue muy útil para mí, ya que funcionó a través de reinicios y parecía una buena solución de primera parte. Incluir ejemplos de los comandos a usar hubiera sido bueno. Esta respuesta estuvo tan cerca de dar comandos de ejemplo, pero tuve que ir a Google para averiguar la sintaxis exacta. Mis órdenes finales fueron netsh interface ipv4 set interface interface="Ethernet" dhcpstaticipcoexistence=enabledy netsh interface ipv4 add address "Ethernet" 192.168.1.200 255.255.255.0.
jljtgr
5

Gracias Cecil, funciona, esto es lo que hice:

  1. Descubre el nombre de la interfaz:

    interfaz netsh ipv4 show interface

  2. Habilite dhcpstaticipcoexistence:

    netsh interface ipv4 set interface interface = "nombre de interfaz" dhcpstaticipcoexistence = habilitado

  3. Agregue una dirección IP estática a su interfaz

    interfaz netsh ipv4 agregar dirección "nombre de interfaz" 192.168.x.xxx 255.255.255.0

  4. Use el comando 'ipconfig / all' para verificar que se haya agregado la dirección IP estática. No puedes hacerlo desde la GUI.

Michael Zhang
fuente
3

Una solución alternativa podría ser ejecutar una VM en la misma máquina y agregar una IP estática a esa VM. Básicamente, esto proporcionará un adaptador virtual en el host, pero para la red 10.xvz.

La configuración de redes personalizadas similar a la que está solicitando está bien documentada aquí .

Fergus
fuente
La idea de VM es cazar mariposas con un mazo. Agregar un sistema VM y otorgar licencias de Windows para el uso de VM sería complicado y probablemente más costoso que simplemente agregar una segunda NIC a la máquina. Solo necesito la 10.x.y.zdirección para servir un solo programa.
Warren Young
Es por eso que presento la respuesta con "una solución alternativa podría ser ..."; agregar una VM ciertamente funcionaría. Multihoming es obvio; pero, de nuevo, su idea cambiaría fundamentalmente la pregunta original. buena suerte
Fergus
1

¿Qué tal programar un script para agregar la dirección IP después del arranque?

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0
Pablo
fuente
Gran idea, pero estoy seguro de que forzará el adaptador a salir de DHCP.
Fergus
Lo probé, y @Fergus tiene razón: netsh interface ipv4 show addressdespués de esto, solo se da la IP estática. La IP de DHCP se ha ido.
Warren Young
Vaya, sí, ahora lo recuerdo. La opción sería obtener la IP actual y luego volver a agregar ambas. Es muy poco probable que un contrato de arrendamiento de DHCP no se renueve mientras está en uso activo (hay un período de gracia para evitar esto), por lo que solo es importante en el momento del arranque.
Paul
@Paul: Si solo agrego la dirección DHCP de nuevo netsh, ¿no lo convierte en una IP estática, por lo que la pila de la caja de Windows no seguirá enviando renovaciones de arrendamiento DHCP al servidor DHCP? Cuando finaliza el tiempo de arrendamiento inicial, el servidor DHCP sería libre de reasignar esa dirección.
Warren Young
@WarrenYoung ¿Cuánto dura el contrato de arrendamiento que está recibiendo? ( ipconfig /all. para mí son 10 días desde mi enrutador). Entonces, si la computadora se reinicia antes de que finalice el arrendamiento, no debería ser un problema. De lo contrario se podría añadir una ipconfig /releasey ipconfig /renewpor encima de estas líneas y programarlo para que se ejecute a las 3 AM (cuando no hay nadie detrás de la computadora).
Rik
0

Utilicé Win IP Config versión 2.7.2 de 2007 ejecutándose en Windows 10. Configure su NIC en DHCP, Ejecute Win IP Config como administración (icono de clic derecho en lugar de doble clic para la opción). Luego haga clic en IP + y escriba la dirección IP estática que desee. Ahora tengo un DHCP y dos direcciones estáticas. ¡Ahora puedo hacer el desarrollo de mi sistema integrado y acceder a Internet al mismo tiempo con una NIC!

Brandon
fuente
Esto se ve ... así que ... Shaddy ...
paquetp