我在使用 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 分配不生效的问题。