昔我往矣

DHCP和DHCP中继

2012年05月6日

DHCP服务器
dhcp服务器可以为客户机提供ip地址、子网掩码、对应的广播地址、网络地址、缺省网关地址、dns服务器地址。

dhcp工作过程:

dhcp客户端 ------dhcp Discover------> dhcp服务器 (广播寻找dhcp服务器)
dhcp客户端 <----dhcp Offer- --------- dhcp服务器
dhcp客户端 ------dhcp Request-------> dhcp服务器(广播通知已接受一个ip地址)
dhcp客户端 <--dhcp Acknowledge------ dhcp服务(发送ip地址相关信息)

安装dhcp服务:

# rpm -ivh Packages/dhcp-4.1.1-12.P1.el6.i686.rpm 
# rpm -qa dhcp
dhcp-4.1.1-12.P1.el6.i686

配置文件:
安装好了以后,就该进行dhcp服务的配置了。在RHEL6中,dhcp的配置文件是/etc/dhcp/dhcpd.conf,默认的内容是如下三行,提示说参考/usr/share/doc/dhcp*/dhcpd.conf.sample文件进行配置。DHCP服务器的ip地址租约文件/var/lib/dhcp/dhcpd.leases

# dhcp Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.c</code>

配置项目大致如下:
1)subnet...设置子网声明,声明一个作用域
2)option subnet-mask...为客户端主机配置的子网掩码
3)option routers...为客户端主机配置默认的网关地址
4)option domain-name...为dhcp客户设置DNS域。(用于域环境,如:dhcp客户机为ABC,而这里设为XYZ.NET,那么客户机全名变ABC.XYZ.NET)
5)option domain-name-servers...为dhcp客户机配置DNS服务器IP地址
6)range dynamic-bootp...设置IP地址作用域
7)default-lease-time...默认租期(单位以秒算)
8)max-lease-time...dhcp客户端是长的地址租期
9)host 主机名 {hardware ethernet MAC地址;

    fixed-address IP地址;

} 主要用于地址保留

下面是一个dhcpd.conf的配置实例:

default-lease-time      21600;
max-lease-time  43200;  
subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers  192.168.1.1;
        option subnet-mask      255.255.255.0;
        
        option domain-name "lhzhi.com";
        option domain-name-servers      10.1.2.100;
        
        range dynamic-bootp     192.168.1.1     192.168.1.100;     
}

使用service dhcpd configtest检查配置文件的语法,然后启动dhcp服务。

# service dhcpd configtest
Syntax: OK
# service dhcpd start
正在启动 dhcpd:                                           [确定]

dhcp的客户端一般来说,没有设置ip地址的主机都会在局域网内广播信息寻找合适的dhcp服务器,所以,其实不用作很多的配置,重启客户端的网卡,应该就可以看到新获得的ip地址了吧。

DHCP中继服务器
在实际应用中,可能会遇到一个较大的物理网络中存在较多的子网,而且每个子网都需要动态的分配ip地址,如果在每一个子网中都配置一台dhcp服务器,那就显得太麻烦了,可以使用下面的dhcp中继来减少工作量。方法是在某个子网中配置一台dhcp服务器,然后在其余的子网中配置dhcp中继服务器,子网中的主机把都会dhcp请求发送给这一台中继服务器,中继服务器就与dhcp服务器联系,并将获得的ip地址转发给请求的主机。
下面就先搭建如下的实验拓扑图。

路由器转发配置
其中的“路由器”由一台具有两块网卡的RHEL6主机担任,开启它的数据包转发功能。首先在virtualbox的网络连接里面设置两个子网,innet和innet1,router的eth0属于innet,分配固定ip:192.168.1.1,router的eth1端口属于innet1,固定ip为192.168.100.1。然后,打开路由转发功能

# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

刷新配置sysctl -p使生效。设置完成后可以,可以使用两个网段间的主机执行ping命令,测试路由是否通畅,如果不能ping通,可先将防火墙关闭后,再做尝试。

DHCP服务器
另有一台机器在innet中,设ip地址为192.168.1.2,作为dhcp服务器,在之前配置的/etc/dhcp/dhcpd.conf中加入192.168.100.0网段的地址池。即如下的一段数据:

subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.1;
option domain-name "hello.com";
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.100.20 192.168.100.30;      
}
service dhcpd restart      #然后重启dhcp服务器:

DHCP中继服务器
在innet1中,放置三台主机,一台RHEL6作为dhcp中继服务器,配置ip为192.168.100.2。在其上安装dhcp服务的rpm软件包。

# rpm -ivh Packages/dhcp-4.1.1-12.P1.el6.i686.rpm 

然后对其/etc/sysconfig/dhcrelay文件做出配置,原文件内容如下:

# cat /etc/sysconfig/dhcrelay
# Command line options here
INTERFACES=""
DHCPSERVERS=""

将其修改为:

# Command line options here
INTERFACES="eth0"
DHCPSERVERS="192.168.1.2"

DHCPSERVERS="192.168.1.2"填写的是dhcp服务器的ip地址,INTERFACES="eth0"填写的是将dhcp请求从eth0端口转发给dhcp服务器。

启动dhcp中继服务:

# service dhcrelay start
正在启动 dhcrelay:                                        [确定]

注意:这里的服务名是dhcrelay。

客户端
在innet1中的另外两台主机,一台是RHEL的dhcp客户端,一台是windows xp的dhcp客户端。在RHEL的客户端中,使用service network restart 重新获取ip地址,在windows xp的主机中,在控制台中使用ipconfig /renew重新获取ip地址。可以在网络设置中可以随意的切换innet和innet1网络,重启,分别用来获取192.168.1.0网段的ip地址和192.168.100.0网段的ip地址。

当前暂无评论 »

添加新评论 »