我在使用Openwrt时手动分配了新的静态IP给我的电脑,但是在保存并应用后并没有立即生效,而且在我分别重启了电脑和路由器后仍然没有生效,为此我花了点时间找出了解决方法。

原因分析

在“DHCP/DNS->静态地址分配”中给电脑配置了静态地址不会立即生效,因为在此之前路由器已经通过DHCP分配了IP地址给电脑形成租约,在这个租约到期之前不会改变分配给电脑的IP。通常我们在Lan中设置租约时间为12h(小时),也就意味着要在12小时后电脑才会获取到我们设置的静态IP。

不过我们可以清空路由器上的旧租约,同时将电脑断网重连,以此来使电脑获得新IP地址。最简单的方法就是将路由器重启,既清空了旧租约,又使电脑重连。但是为什么我之前重启会不起作用呢?

说实话这锅还真不好甩,我的电脑是Win10系统,在我重启路由器后,系统并不是向路由器请求一份新的租约,而是拿着旧的租约想要更新续约。这里你可能认为是路由器就直接续约了,但我认为并不是,OpenWrt已经设定了静态地址,而电脑请求续约的IP不一样,结果是OpenWrt不会给续约,但也不会返回新的租约。

最终导致的结果就是电脑租约无法更新,但由于租约也没有到期,所以电脑继续使用旧的,而正好使用旧IP还能正常上网就一直沿用旧租约了。

解决方法

最简单的方法,设置的静态IP为原本DHCP获取到的IP地址,这样就不会存在不生效问题。但一定要更换IP的话,保证OpenWrt已重启,打开Windows命令行或者Power Shell,输入以下命令执行:

ipconfig /release
ipconfig /renew

第一条命令删除旧租约,这样就不会由于IP地址错误导致OpenWrt无法返回新合约,第二条命令就是手动更新租约。至此,解决了静态IP分配不生效的问题。