将静态IP别名添加到Windows 8(及更高版本)上的DHCP接口


16

我有一台Windows 8机器,只有一个以太网端口。它需要使用DHCP 也需要一个静态IP。每个IP位于不同的子网中,每个IP都具有不同的不兼容目的。

这台计算机必须使用DHCP,因为站点网络管理员说这是获得192.168.x.y地址的唯一受支持的方法。他的网络方案在该子网中没有静态IP块,或者他不会将其中一个分配给该计算机。

我不能冒险静态使用DHCP分配的IP,押注租约到期后不会重新分配它。那将使我能够利用Windows的功能为该接口分配多个静态IP,但这是生产服务器,因此我不能冒险在数小时或数天后退出网络。

我意识到有些DHCP服务器可以让您设置静态MAC到IP的分配,因此,我的计算机的DHCP IP不会被重新分配,但是由于我不知道有DHCP服务器会发布两个不同的IP地址,每个IP地址在不同的子网中,所以在这里帮助。(如果有这样的DHCP服务器,我的客户端可能不会使用它,并且如果我询问也不会切换到它。)

由于无法完全使用DHCP来完成此操作,因此我需要一个静态IP,因为该计算机还充当10.x.y.z子网的服务器。本地网络管理员已经给了我在计划一个静态IP,但它是不够的,因为我也需要跟在192.168.x.y网络侧。

我在这里知道类似的问题。我再次询问是因为:

  1. Windows 7是最新版本时提出了另一个问题。也许微软用了两年多的时间来解决Windows 8网络堆栈实施中的这一弱点?

    (是的,缺点:Linux允许同时具有DHCP和静态IP的网络接口。TCP/ IP并没有阻止Microsoft允许的接口。他们只需要编写允许的代码即可。)

  2. 似乎Windows 8中的网络配置GUI与Windows 7具有相同的限制,但是也许有一些低级的技巧可以让我们为DHCP接口分配静态IP别名?

Answers:


13

最后,可以将DHCP和静态IP配置为在一个NIC上共存。此功能已登陆Windows 10 Creators Update(1703)。

dhcpstaticipcoexistencenetsh interface ipv4 set interface命令中有一个新属性,可以将其设置为,enabled并且可以使用多个静态IP以及DHCP配置的IP配置该接口。但是,这必须通过netsh add address命令完成,尚无法通过GUI进行。

很少有关于该更新的文档发布netsh,整个互联网上对此的讨论也很少(在此回答时,Google搜索dhcpstaticipcoexistence仅给出5条结果)。但是这个功能是真实的。


5
这个答案对我来说非常有用,因为它可以在重新启动后正常工作,并且似乎是一个不错的第一方解决方案。包括要使用的命令示例将是不错的选择。这个答案非常接近给出示例命令,但是我不得不去Google找出确切的语法。我的最后命令是netsh interface ipv4 set interface interface="Ethernet" dhcpstaticipcoexistence=enablednetsh interface ipv4 add address "Ethernet" 192.168.1.200 255.255.255.0
jljtgr

13

以下是基于Windows 10的新dhcpstaticipcoexistence功能提供的Cecil建议所需的确切命令:

  1. 找出接口名称:

    netsh interface ipv4 show interface
    
  2. 启用dhcpstaticipcoexistence:

    netsh interface ipv4 set interface interface="interface name" dhcpstaticipcoexistence=enabled
    
  3. 在界面中添加一个静态IP地址

    netsh interface ipv4 add address "interface name" 192.168.x.xxx 255.255.255.0
    
  4. 使用命令“ ipconfig / all”来验证是否添加了静态IP地址。您无法从GUI执行此操作。


6

我写了一个小的批处理文件。您可以进行测试以查看它是否适合您的情况。(在这里工作正常)

  • 它将您的接口设置回DHCP。
  • 之后,它将提取IP,子网掩码,默认网关和第一个DNS服务器。这是困难的一点。特别是如果您有多个接口。如果它不起作用,我们需要在这里摆弄些东西才能使其起作用。
  • 如果您也想要第二个DNS,则应在此处添加它(但我看上去并没有那么远,因为一个DNS现在就可以了)。
  • 它将在界面上将这些设置设置为“静态”。
  • 之后,您可以10.x.y.z毫无问题地将地址添加到您的界面中。

这是脚本:

@回声关闭
设置interface =“ Ethernet 2”
设置extra_ip = 10.0.0.33
设置extra_mask = 255.255.248.0

回显设置%interface%回到DHCP
netsh int ipv4设置地址名称=%interface%源= dhcp
netsh int ipv4设置dnsservers名称=%interface%源= dhcp

echo等待IP稳定...
超时/ t 5

echo获取%interface%的当前IP
ipconfig>%temp%\ ipconfig.txt
对于/ f“ tokens = 2 delims =:” %% a in('type%temp%\ ipconfig.txt ^ | find“ IPv4” ^ | find / v“ 127.0”')设置_IP = %% a
设置IP =%_ IP:〜1%
对于/ f“ tokens = 2 delims =:” in %% a('type%temp%\ ipconfig.txt ^ | find“ Subnet” ^ | find / v“ 127.0”')设置_IP = %% a
设置MASK =%_ IP:〜1%
对于/ f“ tokens = 2 delims =:” %% a in('type%temp%\ ipconfig.txt ^ | find“ Default” ^ | find / v“ 127.0” ^ | find / v“ ::”')设置_IP = %% a
设置GATE =%_ IP:〜1%
对于/ f“ tokens = 2 delims =:”中的%% a('type%temp%\ ipconfig.txt ^ |找到“ DNS服务器” ^ |找到/ v“ 127.0”')做_IP = %% a
设置DNS1 =%_ IP:〜1%

echo设置IP地址,子网掩码和默认网关...
回声(IP%IP%,掩码%MASK%,gw%GATE%)
netsh int ipv4设置地址名称=%interface%静态%IP%%MASK%%GATE%gwmetric = 1

超时/ t 5
echo设置主DNS(%DNS1%)...
netsh int ipv4设置dnsserver名称=%interface%静态%DNS1%主要

echo正在添加辅助IP ...
netsh int ipv4添加地址%interface%%extra_ip%%extra_mask%

超时/ t 5
回声。
echo新IP配置:
ipconfig /全部

删除%temp \ ipconfig.txt

您只需要在租约期限内(或重新启动后)运行一次。因此,如果租期为10天,则可以在星期日和每次重新启动后的凌晨3点在任务计划程序中进行设置。如果您的计算机在晚上始终关闭,则仅在重新启动后才需要。


3

一种解决方法是在同一台计算机上运行VM,然后向该VM添加静态IP。这实际上将在主机上为10.xvz网络提供一个虚拟适配器。

与您所要求的类似的自定义网络配置在这里已备妥


虚拟机的想法是用大锤狩猎蝴蝶。添加虚拟机系统并为Windows许可使用虚拟机会很复杂,并且可能比仅在计算机上添加第二个NIC更为昂贵。我只需要10.x.y.z地址即可提供单个程序。
沃伦·杨

这就是为什么我以“可能的一种解决方法”作为答案的开头。添加VM当然可以。多宿主很明显;但是话又说回来,您的想法将从根本上改变最初的问题。祝你好运
Fergus

1

如何计划启动后添加IP地址的脚本:

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0

好主意,但我有信心将适配器从DHCP中删除。
弗格斯(Fergus)

我测试了它,@Fergus是正确的:话说netsh interface ipv4 show address在此之后只给出了静态IP。DHCP IP不存在。
沃伦·杨

糟糕,是的,我现在还记得。选择是获取当前IP,然后再添加两者。在活跃使用中,DHCP租约不太可能不会被续期(有一个宽限期可以避免这种情况),因此它仅在启动时起作用。
保罗

@Paul:如果我只是使用来添加DHCP地址netsh,那不是将其设置为静态IP,那么Windows的堆栈将不会继续向DHCP服务器发送DHCP租约续约吗?当初始租约时间到时,DHCP服务器将可以自由地重新分配该地址。
沃伦·杨

@WarrenYoung您获得多长时间的租约?(ipconfig /all对我来说,距离路由器10天)。因此,如果在租约到期之前重新启动计算机,那应该不是问题。否则,您可以在这些行上方添加ipconfig /releaseipconfig /renew并将其安排为在凌晨3点运行(当没有人在计算机后面时)。
瑞克(Rik)2013年

0

我使用Windows 10上运行的2007年的Win IP Config版本2.7.2,将您的NIC设置为DHCP,以管理身份运行Win IP Config(右键单击图标,而不是双击该选项)。然后单击IP +,然后输入所需的静态ipaddress。我现在有一个DHCP和两个静态地址。现在,我可以进行嵌入式系统开发并使用一个NIC同时访问Internet!


这看起来是这样...... shaddy ....
paquetp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.