Adiciona um alias de IP estático a uma interface DHCP no Windows 8

8

Eu tenho uma máquina com Windows 8 que possui apenas uma porta Ethernet. Ele precisa usar o DHCP e também precisa de um IP estático. Cada IP está em uma sub-rede diferente e cada um serve um propósito diferente e incompatível.

Esta máquina deve usar o DHCP porque o administrador da rede do site diz que esta é a única maneira suportada de obter um endereço 192.168.x.y . Ou o esquema de rede dele não tem um bloco de IP estático dentro dessa sub-rede, ou ele não atribuirá nenhum deles a essa máquina.

Não posso arriscar usar estaticamente um IP atribuído por DHCP, apostando que ele não será reatribuído depois que a concessão expirar. Isso me permitiria usar a capacidade do Windows de atribuir vários IPs estáticos à interface, mas este é um servidor de produção, não é algo que eu possa me arriscar a sair da rede horas ou dias depois.

Eu percebo que alguns servidores DHCP permitem que você configure MAC estático para atribuições de IP, para que o IP do DHCP da minha máquina nunca seja reatribuído, mas eu não conheço nenhum servidor DHCP que emita dois endereços IP diferentes, cada um em uma sub-rede diferente Isso não ajuda aqui. (E se houver um servidor DHCP desse tipo, meu cliente provavelmente não o usará e não mudaria para ele se eu perguntasse.)

Como não consigo fazer isso totalmente com o DHCP, preciso de um IP estático, porque essa máquina também funciona como um servidor para uma sub-rede 10.x.y.z . Os administradores da rede local me me deram um IP estático nesse esquema, mas é insuficiente, porque eu também preciso falar com o lado 192.168.x.y da rede.

Estou ciente de uma pergunta semelhante aqui . Estou perguntando novamente porque:

  1. Essa outra questão foi colocada quando o Windows 7 estava atualizado. Talvez a Microsoft tenha usado esses 2+ anos para corrigir essa fraqueza na implementação da pilha de rede do Windows 8?

    (Sim, fraqueza : o Linux permite uma interface de rede com um DHCP e um IP estático. Não há nada sobre o TCP / IP que impeça a Microsoft de permitir isso. Eles só precisam escrever o código para permitir.)

  2. Parece que a GUI de configuração de rede no Windows 8 tem a mesma limitação que o Windows 7, mas talvez haja algum hack de baixo nível que nos permita atribuir um alias de IP estático à interface DHCP?

por Warren Young 22.11.2013 / 02:59

6 respostas

7

Eu escrevi um pequeno arquivo em lote. Você pode testar para ver se funciona na sua situação. (aqui funciona bem)

  • Ele irá definir sua interface de volta ao DHCP.
  • Depois disso, ele extrairá IP, Máscara de sub-rede, Gateway padrão e o primeiro servidor DNS. Essa é a parte difícil. Especialmente se você tiver várias interfaces. Se não funcionar, precisamos mexer um pouco aqui para fazê-lo funcionar.
  • Se você quiser o segundo DNS também, ele deve ser adicionado aqui (mas eu não olhei tão longe porque um DNS deve estar bem por enquanto).
  • Ele definirá essas configurações como "estáticas" na interface.
  • Depois disso, você pode adicionar o endereço 10.x.y.z à sua interface sem problemas.

Aqui está o script:

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

echo Setting %interface% back to DHCP
netsh int ipv4 set address name=%interface% source=dhcp
netsh int ipv4 set dnsservers name=%interface% source=dhcp

echo Waiting for IP to stabilize...
timeout /t 5

echo Getting current IP of %interface%
ipconfig > %temp%\ipconfig.txt
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "IPv4" ^| find /v "127.0"') do set _IP=%%a
set IP=%_IP:~1%
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "Subnet" ^| find /v "127.0"') do set _IP=%%a
set MASK=%_IP:~1%
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "Default" ^| find /v "127.0" ^| find /v "::" ') do set _IP=%%a
set GATE=%_IP:~1%
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "DNS Servers" ^| find /v "127.0"') do set _IP=%%a
set DNS1=%_IP:~1%

echo Setting IP Address, Subnet Mask and Default Gateway...
echo (IP %IP%, mask %MASK%, gw %GATE%)
netsh int ipv4 set address name=%interface% static %IP% %MASK% %GATE% gwmetric=1

timeout /t 5
echo Setting Primary DNS (%DNS1%)...
netsh int ipv4 set dnsserver name=%interface% static %DNS1% primary

echo Adding secondary IP...
netsh int ipv4 add address %interface% %extra_ip% %extra_mask%

timeout /t 5
echo.
echo New IP configuration:
ipconfig /all

del %temp\ipconfig.txt

Você só precisa executar isso uma vez por período de seu contrato (ou após uma reinicialização). Portanto, se a sua concessão for de 10 dias, você poderá definir isso no agendador de tarefas para as três da manhã de domingo e depois de cada reinício. Se o seu computador estiver sempre desligado à noite, será necessário apenas após o reinício.

    
por 22.11.2013 / 14:01
3

Uma solução alternativa seria executar uma VM na mesma máquina e adicionar um IP estático a essa VM. Isso essencialmente fornecerá um adaptador virtual no host, mas para a rede 10.x.v.z.

A configuração de rede personalizada semelhante à que você está solicitando está bem documentada aqui .

    
por 22.11.2013 / 03:23
1

Que tal agendar um script para adicionar o endereço IP após a inicialização:

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0
    
por 22.11.2013 / 03:24
1

Finalmente, o DHCP e os IPs estáticos podem ser configurados para coexistir em uma NIC. Este recurso foi parar na Atualização dos Criadores do Windows 10 (1703).

Há uma nova propriedade chamada dhcpstaticipcoexistence no comando netsh interface ipv4 set interface , que pode ser definida como enabled e essa interface pode ser configurada com vários IPs estáticos junto com um IP configurado pelo DHCP. No entanto, isso deve ser feito com o comando netsh add address , que ainda não é possível por meio da GUI.

Pouca documentação foi publicada sobre a atualização para netsh e há pouca discussão sobre isso em toda a Internet (a pesquisa do Google dhcpstaticipcoexistence dá apenas 5 resultados no momento desta resposta) . Mas esse recurso é real.

    
por 16.09.2017 / 17:25
0

Eu usei o Win IP Config versão 2.7.2 de 2007 em execução no Windows 10. Defina sua NIC como DHCP, execute Win IP Config como uma administração (clique com o botão direito do mouse em vez de clicar duas vezes na opção). Em seguida, clique em IP + e digite o ipaddress estático desejado. Agora tenho um DHCP e dois endereços estáticos. Agora posso fazer meu desenvolvimento de sistema embarcado e acessar a Internet ao mesmo tempo com uma placa de rede!

    
por 25.10.2017 / 01:30
0

Obrigado Cecil, funciona, eis o que fiz:

  1. Descubra o nome da interface:

    interface netsh ipv4 interface de exibição

  2. Ativar a existência de coccstaticexistence:

    interface netsh ipv4 set interface interface="nome da interface" dhcpstaticipcoexistence = ativado

  3. Adicione um endereço IP estático à sua interface

    interface netsh ipv4 adiciona endereço "nome da interface" 192.168.x.xxx 255.255.255.0

  4. Use o comando 'ipconfig / all' para verificar se o endereço IP estático foi adicionado. Você não pode fazer isso a partir da GUI.

por 06.07.2018 / 17:07