更改dhclient以重试获取IP地址


10

事实证明,树莓派并没有非常努力地使用dhcp获取IP地址,在电源故障期间,我的rpi的启动速度比dhcp服务器快,并且从未获得IP地址。在这种情况下,rpi似乎已启动,但是它没有获取IP地址,直到重新启动它,我才看不到来自dhcp的请求。

dhclient是这样运行的:

dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0

我找不到任何方法来更改dhclient的参数,-1参数可能是罪魁祸首。我如何使raspberrypi重试dhcp请求,直到得到答复?

编辑:这是关于Raspbian的“乳清”发行版。


1
wifi同样的问题。如果Wifi路由器在启动时打开,即使路由器重新启动,一切正常。但是,如果在启动覆盆子时关闭路由器,则永远不会获得IP。问候

我也有同样的问题。但是,我不知道dhclient如何运行。是否有一些配置或我需要为此做些事情?
康坎

Answers:


7

-1从命令行参数中删除,然后根据自己的喜好编辑timeoutretry/etc/dhclient.conf。您可以查看手册页(man dhclient.conf)了解更多详细信息。


问题是,如上所述,我找不到任何改变dhclient命令行的方法,它似乎神奇地以某种方式由ifupdown .deb包中的某些东西在启动时启动,因为某些东西解析了/ etc / network / interfaces
nos 2012年

@nos您需要找到网络初始化脚本。我不记得它在哪里。
Alex Chamberlain 2012年

@Alex Chamberlain证明用于启动dhclient的命令行在/ sbin / ifup二进制文件中进行了硬编码。因此,我目前正在寻找替代解决方案。
2012年

对于那个很抱歉。无论如何,那是什么发行版?奇怪的是,他们会将代码硬编码成二进制文件。解决方案的角度来看,你可以只添加几行rc.local中杀死现有dhclient的过程,然后开始自己的自定义ARGS等
Munkeh

Editet后-我使用rasbpian

1

/ etc / network / interfaces的内容是什么?

我假设有自动eth0,因为它在启动时会查询DHCP。

如果将其更改为allow_hotplug eth0怎么办?如果我正确理解的话,那应该对接口的更改做出反应(插入/移除的电缆)。

(所有这些只是我的有根据的猜测)。


这个技巧对我来说非常有效:它允许热插拔,并加快了启动时间。但是必须将其写为“ allow-hotplug eth0”。
user27164 2014年

0

Jeroen在此处提供了一种解决方法:https : //bugs.launchpad.net/raspbian/+bug/1125066

我已经设置了解决方法并重新启动-目前看来还可以。经过一段时间的测试,将确认问题是否在更新中得到解决。

解决方法如下:

一种解决方法是通过将/ sbin / dhclient重命名为/ sbin / dhclient-bin来创建包装脚本,但是将/ sbin / dhclient中下面的文本重命名,然后将其更改为777:

#!/bin/sh
/sbin/dhclient-bin -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
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.