情况如下:
我有一台具有单个以太网接口和单个 MAC 地址的电脑。
在我的路由器(带有库存软件的 Linksys E4200)上,我将 DHCP 保留设置为该接口的 MAC 地址,指示它始终提供特定的 IP。
通常情况下,这可以正常工作。但是,这台计算机同时运行 Linux(Ubuntu 18.04)和 Windows 10。启动 Windows 后,一切都按预期运行,并且我有正确的 IP。但是,在启动时后退进入 Linux,网络“旋转”很久,无法连接。运行journalctl -xe
显示许多副本:
Apr 17 23:38:41 <snip> dhclient[2030]: DHCPDISCOVER on enp3s0 to 255.255.255.255 port 67 interval 20 (xid=0x40fd6476)
尤其是以下这段对话:
Apr 17 23:40:29 chase-lx dhclient[3456]: DHCPREQUEST of 192.168.1.105 on enp3s0 to 255.255.255.255 port 67 (xid=0x242aef01)
Apr 17 23:40:29 chase-lx dhclient[3456]: DHCPNAK from 192.168.1.1 (xid=0x1ef2a24)
果然,为了确认,查看路由器管理界面上的日志显示:
Wed, 17 Apr 2019 23:40:28 sending NAK to <the mac address>
因此,路由器明确地拒绝 DHCP 请求并有效地拒绝履行 DHCP 保留。
为什么路由器会这样做 - 如果 DHCP 请求来自同一接口,它怎么能区分“不同的机器”发出的 DHCP 请求呢?更重要的是,我有没有办法配置我的路由器不是做这个?
目前修复的一个方法是用另一台电脑进入管理界面,从DHCP客户端表中删除对应IP/MAC地址的条目,删除后,处于limbo状态的机器就可以连接成功了。