这是我的 /etc/dhcp3/dhclient.conf:
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu;
timeout 60;
alias {
interface "eth0";
fixed-address 192.168.1.222;
}
lease {
interface "eth0";
fixed-address 192.168.1.222;
option subnet-mask 255.255.255.0;
option broadcast-address 255.255.255.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.254;
}
当我运行“dhclient eth0”时,我得到了这个:
There is already a pid file /var/run/dhclient.pid with pid 6511
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
wmaster0: unknown hardware address type 801
wmaster0: unknown hardware address type 801
Listening on LPF/eth0/00:1c:25:97:82:20
Sending on LPF/eth0/00:1c:25:97:82:20
Sending on Socket/fallback
DHCPREQUEST of 192.168.1.27 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.27 from 192.168.1.254
bound to 192.168.1.27 -- renewal in 1468 seconds.
我使用 strace 来确保 dhclient 确实在读取该 conf 文件。为什么它不关注我的“fixed-address 192.168.1.222”行?为什么它改为为 192.168.1.27 执行 DHCPREQUEST?
正如 Zoredache 正确指出的那样:固定地址设置仅适用于仅在 DHCP 服务器不响应时才有效的租约定义。请参阅“租赁声明”部分下的http://linux.die.net/man/5/dhclient.conf 。
你想要的是
这记录在 dhcp-options 的联机帮助页中:http: //linux.die.net/man/5/dhcp-options并符合http://www.rfc-editor.org/rfc上提供的 DHCP 选项 RFC /rfc2132.txt
但请注意:我最近遇到 dhclient3 没有使用此配置获取 IP,因为请求的地址已被占用。服务器用 DHCPNAK 回复请求,一段时间后客户端会放弃。我曾预计,如果请求的地址不可用,DHCP 客户端最终会以另一个地址结束。
我使用这种方法是为了确保我始终知道我的服务器的地址,而无需求助于 dyndns.com 之类的东西,结果却没有连接。
Reject 用于拒绝来自具有特定地址的服务器的报价。它不会拒绝服务器提供的地址。
仅当 DHCP 服务器没有响应时,才使用定义的租约。
如果你想要一个特定的地址,你可能应该在服务器上设置一个预订。
您是否真的检查过它是否可以通过您指定的 ip 访问(早在 2010 年,我知道......)?
我刚才犯了那个错误。
即使您有 dhclient-output 也是预期的
那是因为那是一个
alias
, 就像该接口的附加 IP 地址一样;该接口仍然获得 dhcp 分配的 ip。关于
lease
其他的都是正确的,除非 dhcp 失败,否则基本上它会被忽略。