在Linux上实现DHCP的最快方法

在Linux上实现DHCP的最快方法,linux,networking,network-protocols,dhcp,Linux,Networking,Network Protocols,Dhcp,动机:我在没有网络管理工具的情况下运行wpa_supplicant,因为我不想在旧的DHCP租约工作时强制新的DHCP租约。这样,如果DHCP租约尚未到期,我可以很快进入旧网络(只要wpa_supplicant建立较低的网络层) 问题:但是当DHCP租约到期时,或者如果我的IP地址来自另一个网络,我确实需要调用DHCP。我目前使用dhclient,但dhcpcd是这里的另一个选项。问题是,即使这些DHCP客户端在后台运行,它们也不会自动意识到我需要一个新的IP地址,因为我有一个旧的、无效的IP地

动机:我在没有网络管理工具的情况下运行wpa_supplicant,因为我不想在旧的DHCP租约工作时强制新的DHCP租约。这样,如果DHCP租约尚未到期,我可以很快进入旧网络(只要wpa_supplicant建立较低的网络层)

问题:但是当DHCP租约到期时,或者如果我的IP地址来自另一个网络,我确实需要调用DHCP。我目前使用dhclient,但dhcpcd是这里的另一个选项。问题是,即使这些DHCP客户端在后台运行,它们也不会自动意识到我需要一个新的IP地址,因为我有一个旧的、无效的IP地址

问题:有没有办法快速确定我是否需要DHCP?例如,作为对wpa_请求者的反应,或作为联系标准网关并实现连接不可用的响应。我可以轻松运行
sudo dhclient wlan0
,它会在一秒钟内给我地址。但在必要时,我能做些什么来自动化这个过程呢

发出不必要的DHCP请求不是不可能的,但是向DHCP服务器发送洪水是不可能的


详细问题:对于那些直接使用wpa_supplicant的用户,您如何使用DHCP?

在连接到新网络时再次运行dhcpcd。如果你有一个现有的租约,它应该很快得到确认

如果您反对每次键入“dhclient”或“dhcpcd”,您可以使用shell脚本将其自动化。它可能看起来像

#!/bin/sh
dhcpcd wlan0 &
wpa_supplicant -d -c/etc/wpa_supplicant.conf -iwlan0

dhcpcd会说它正在“等待运营商”,直到wpa_supplicant打开无线链接。

每当我连接到新网络时,我都在运行dhclient(但可能是dhcpcd)。我希望这是自动的,所以我不必每次都键入“给我一个DHCP地址”。但这并不是以每秒向DHCP服务器请求一个新IP地址为代价的。我编辑了我的答案,以显示一个可能用于连接到无线网络的脚本。也许您可以使用网络管理器的工具来确定链接是否打开。当您返回网络时续订DHCP租约有什么错?真的有那么慢吗?问题是:我的学校在年初的时候实际上没有多少wifi NAT地址!所以拥有DHCP租约是件好事。实际上,我只知道NetworkManager有时比普通wpa_supplicant慢几秒钟,我不知道它是否是DHCP,但我想我可以快速推断我是否需要它(例如,通过发送需要IP地址的数据包)。每当我在连接到无线路由器后运行dhcpcd连接到无线路由器时,我通常得到相同的IP地址回来。因此,我认为这是确认现有租约,而不是提供新租约。所以如果你已经有租约,我不认为你会因为重新谈判而失去它。