FreeBSD DHCP设置主机名(重启后为空主机名)

时间:2020-01-09 10:38:39  来源:igfitidea点击:

问题描述:
FreeBSD 7.2服务器,在引导过程结束后,我在/etc/rc.conf中设置了主机名,我用hostname命令检查了主机名,但得到空行。
用hostname设置hostname效果很好,但是重启后主机名仍然为空。
我怀疑这与DHCP设置有关。
如何使用DHCP设置主机名?

解决方法:
动态主机配置协议(DHCP)是设备(DHCP客户端)用来获取用于在Internet协议网络中操作的配置信息的网络应用协议。

dhclient实用程序提供了一种通过静态分配地址来使用DHCP,BOOTP或在这些协议失败的情况下配置网络接口的方法。

此问题表明您的DHCP服务器根本没有发送回主机名。
要解决此问题,请将您的dhcp服务器配置为发送回主机名,或者将dhcp客户端配置为在笔记本电脑本身上设置主机名。

dhclient脚本

从手册页:

dhclient会不时调用DHCP客户端网络配置脚本。

DHCP客户端使用此脚本在请求地址之前设置每个接口的初始配置,在提供地址后对其进行测试,并在获取租约后设置接口的最终配置。
如果未获取任何租约,则该脚本将用于测试预定义的租约(如果有),并且在无法识别有效租约的情况下也调用一次。

如下更新您的/etc/rc.conf:

hostname=""

使用文本编辑器创建一个名为/etc/dhclient-enter-hooks的文件:

# vi /etc/dhclient-enter-hooks

追加以下代码:

#!/bin/sh
check_hostname(){
hostname laptop.theitroad.com
}

保存并关闭文件。
设置权限:

# chmod +x /etc/dhclient-enter-hooks

现在,您可以重新启动笔记本电脑或仅请求dhcp租约:

# dhclient iface

示例dhclient.conf

这是dhcp客户端的示例/etc/dhclient.conf文件:

timeout 60;
	   retry 60;
	   reboot 10;
	   select-timeout 5;
	   initial-interval 2;
	   

	   interface "ep0" {
	       send host-name "laptop.theitroad.com";
	       send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
	       send dhcp-lease-time 3600;
	       supersede domain-name "theitroad.com r.theitroad.com r.vsnl.theitroad.com";
	       prepend domain-name-servers 127.0.0.1;
	       request subnet-mask, broadcast-address, time-offset, routers,
		       domain-name, domain-name-servers, host-name;
	       require subnet-mask, domain-name-servers;
	       script "/etc/dhclient-script";
	       media "media 10baseT/UTP", "media 10base2/BNC";
	   }

	   alias {
	     interface "ep0";
	     fixed-address 192.5.5.213;
	     option subnet-mask 255.255.255.255;
	   }

有关更多信息,请参见dhclient,dhclient.conf和dhclient-script手册页。