首页 > 代码库 > DHCP在企业网络中的应用

DHCP在企业网络中的应用

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP3个端口,其中UDP67UDP68为正常的DHCP服务端口,分别作为DHCP ServerDHCP Client的服务端口

工作模式:

1.manual 

Mac 与ip地址捆绑,需要手工一个一个输入,但是地址利用率低。

  1. Automatic

dhcp server做地址池,只需要写出起始地址和结束地址,不需要一个一个输入。Dhcp client 连接后会被永久记录,造成地址利用率低。

  1. Dynamic

相比与第二种多了地址租期,地址利用率提高了。

拓扑图

DC967F65F4C544369B7A0847FE2DC7FE 

原理:

1 dhcpdiscover: 此为client开始DHCP过程中的第一个请求报文  
2 dhcpoffer : 此为server dhcpdiscover 报文的响应  
3 dhcprequst : 此为client dhcpoffer 报文的响应  
4 dhcpdeclient: client发现server 分配给它的IP地址无法使用,如 IP地址发生冲突时,将发出此报文让server禁止使用这次分配的IP地址。  
5 dhcpack : server对 dhcprequst 报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。  
6 dhcpnack : 此报文是serverclientdhcprequst报文的拒绝响应,client 收到此报文后,一般会重新开始DHCP过程。  
7 dhcprelease :此报文是 client主动释放IP地址,当server 收到此报文后就可以收回地址分配给其他的client.

Centos  dhcp配置方法

IP[root@wang ~]# mkdir /media/cdrom

[root@wang ~]# mount /dev/cdrom /media/cdrom  挂载光盘 

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@wang ~]# ll |grep dhcp   查找dhcp相关的包  

[root@wang ~]# cd /media/cdrom/Packages/

[root@wang Packages]# ll |grep dhcp

-r--r--r--. 2 root root   838344 Nov 25  2013 dhcp-4.1.1-38.P1.el6.centos.i686.rpm

-r--r--r--. 3 root root   145240 Nov 25  2013 dhcp-common-4.1.1-38.P1.el6.centos.i686.rpm

-r--r--r--. 2 root root   154624 Jul  3  2011 sblim-cmpi-dhcp-1.0-1.el6.i686.rpm

[root@wang Packages]# rpm -qlp dhcp-4.1.1-38.P1.el6.centos.i686.rpm  查找猜想的安装包内容进一步确认安装包是不是所需要的额

/usr/sbin/dhcpd

/usr/sbin/dhcrelay

/usr/share/doc/dhcp-4.1.1

/usr/share/doc/dhcp-4.1.1/3.0b1-lease-convert

/usr/share/doc/dhcp-4.1.1/IANA-arp-parameters

可以看出是所需要的

[root@wang Packages]# yum --disablerepo=\* --enablerepo=c6-media install dhcp-4.1.1-38.P1.el6.centos.i686.rpm -y  安装软件包

[root@wang Packages]# vim /etc/dhcp/dhcpd.conf

5A8507EA107E4B9DA2B4CC0D0987C36E 

D5090A318EA147FBBB04200FE4977F92 

:r  /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  在vim地行模式模式下读取例子文件

然后根据例子说明配置dhcp参数

subnet 192.168.2.0 netmask 255.255.255.0 {

    range 192.168.2.100 192.168.2.199;   //dhcp域范围

    option routers 192.168.2.1;       //dhcp 网关

    option domain-name-servers 1.1.1.1, 2.2.2.2;   //dhcp dns

    option domain-name "wang.com";    //dhcp 域名

 }

[root@wang Packages]# service dhcpd configtest  测试配置文件是否正确,如果不正确将会提示错误地方,进行修改即可

也可以在 /var/log/messages 文件中查询错误内容即

[root@wang Packages]# tail -f -n 20 /var/log/messages

[root@wang Packages]# iptables -L  查看防火墙规则,如果有的话需要将防火墙关闭

[root@wang Packages]# service iptables stop

[root@wang Packages]# setenforce 0   将控制规则设置为警告级别

然后打开客户机测试是否能够动态获取ip地址

F2E37D085FB946A79949B30AE6FFA40E 

将客户机设置为自动获取ip地址

D585EC04AD94489A85043F2F4610C5E3 

自动获取成功

在日志文件中可以看到相关的信息

Aug  9 17:09:08 wang dhcpd: DHCPOFFER on 192.168.2.100 to 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0:0

Aug  9 17:09:08 wang dhcpd: DHCPREQUEST for 192.168.2.100 (192.168.2.51) from 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0:0

Aug  9 17:09:08 wang dhcpd: DHCPACK on 192.168.2.100 to 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0:0

Aug  9 17:09:08 wang dhcpd: DHCPREQUEST for 192.168.2.100 (192.168.2.51) from 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0

Aug  9 17:09:08 wang dhcpd: DHCPACK on 192.168.2.100 to 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0

在客户端的命令行模式下查看域名

8BB8FB39D08C4E5AA90C1FB8281AE29F 

域名正确

如果需要排除地址,就需要分段进行设置作用域以达到排除的目的。

[root@wang ~]# vim /var/lib/dhcpd/dhcpd.leases    可以查看dhcp服务器分配的地址记录

如果需要绑定一个ip地址,需要修改

vim /etc/dhcp/dhcpd.conf

subnet 192.168.2.0 netmask 255.255.255.0 {

  range 192.168.2.100 192.168.2.149;    作用域设置

  range 192.168.2.151 192.168.2.199;

  option routers 192.168.2.1;

  option domain-name-servers 1.1.1.1, 2.2.2.2;

  option domain-name "wang.com";

host fantasia {

  hardware ethernet 00:0c:29:12:c1:b8;   绑定的mac地址

  fixed-address 192.168.2.150;       对应mac地址的ip

}

}

然后dhcp客户端重新获取ip地址

1A7EF79E674B4651A928B7DDF5AEBBBF 

703E1F908D4C4492ADC824C4798EE096 

获取192.168.2.50成功

 

Dhcp超级作用域配置方法

 

需求:将多个小的作用域绑定为一个大的作用域

比如讲192.168.1.0/24192.168.2.0/24的作用域绑定到一起

其他的都一样,就需要就配置文件修改

[root@wang Packages]# vim /etc/dhcp/dhcpd.conf

shared-network  chaoji{    超级作用域包括2个一般作用域

subnet 192.168.2.0 netmask 255.255.255.0 {

  range 192.168.2.100 192.168.2.100;

  option routers 192.168.2.254;

  option domain-name-servers 1.1.1.1, 2.2.2.2;

  option domain-name "wang.com";

}

subnet 192.168.3.0 netmask 255.255.255.0 {

  range 192.168.3.100 192.168.3.100;

  option routers 192.168.3.254;

  option domain-name-servers 1.1.1.1, 2.2.2.2;

  option domain-name "wang2.com";

}

}

因为我们需要试验,所以将作用域的ip地址设置为只有1

[root@wang Packages]# service dhcpd restart

然后进行测试

第一台客户端设置为自动获取ip

48B267E7C32746F7854DEA90ECAF1E1B 

2台客户端也设置为自动获取ip

7E57E64282B149B3A7299ECBCAF6DE8C 

分别获取了地址池的2个ip地址,试验成功!

DHCP 中继

如果有多个不同的vlan获取dhcp,则需要dhcp中继技术。

实现此技术既可以用虚拟机模拟实验,也可以用路由器,交换机实验。

用虚拟机模拟实验:

0B8E0F9E11CC47DA99EE099C812E02C3 

先配置dhcp服务器:

[root@wang ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 先编辑网卡,将网关设置为192.168.2.1

3D1B6266A6C24060B6BDABB6734DBD73添加一个网关即可

[root@wang ~]# service network restart  重启网络

[root@wang ~]# service iptables stop  关闭防火墙

[root@wang ~]setenforce 0   将控制规则设置为警告级别

[root@wang ~]# vim /etc/dhcp/dhcpd.conf   编辑dhcp配置文件

subnet 192.168.3.0 netmask 255.255.255.0 {

  range 192.168.3.2 192.168.3.254;

  option routers 192.168.3.1;

  option domain-name-servers 1.1.1.1, 2.2.2.2;

  option domain-name "vmnet2.com";

}

subnet 192.168.4.0 netmask 255.255.255.0 {

  range 192.168.4.2 192.168.4.254;

  option routers 192.168.4.1;

  option domain-name-servers 1.1.1.1, 2.2.2.2;

  option domain-name "vmnet3.com";

}

subnet 192.168.2.0 netmask 255.255.255.0 {

}           编辑2个作用域  网段分别是192.168.3.0/24   192.168.4.0/24  网关是dhcp中继服务器各个网卡的ip,然后必须有自己网段的空作用域才能开启dhcp

[root@wang ~]# service dhcpd restart

Starting dhcpd:                                            [  OK  ]

重启dhcp即可

再配置dhcp中继服务器:

windows server2003 实现:

55A6922A01594B76B3621FB44061BD58 

现在网络适配器里面添加2块网卡,一共3块网卡。

7F92BBC17C3D4DD6A78D5CF38C882BC5 

3块网卡上配置3个对应的ip地址:

731DF495350049EA9E74B6E43C9725D4 

2E9B196187E14FDFB37B4AE467F85F70 

进入路由和远程访问

5002751502984610B815BAE612079E29 

配置并启用路由和远程访问

71D216A0498149A9B6E773F9BE565C2B 

下一步

D4D45B39BB4A4ED59240137C14A21ED9 

自定义配置

8B5D13AB17894266BB31BB4E4C882EBF 

3DE5A13D86B443A5A3A6B5F73C046F1A 

完成

EC7B08B9407E4DB09739984D82D25F97 

右键常规→新增路由协议

04294059660E4F1C99EFA54C44F20E81 

选择DHCP中继代理程序

0B0E21CE6ED34AF78E8CB4158C56B95D 

右键dhcp中继代理→新增接口

然后添加vmnet2vmnet3

DC70CF5042B448F0929E1BCBA9FB73A0 

 

4DB1CFEF56B64D69BEAA0265BC7C317F 

右键dhcp中继服务器→属性

3DCC8EFB01EA403DBB4A03BA37F3C5FE 

添加dhcp server的ip地址

进行测试

再打开一台虚拟机,将网卡设置为vmnet2,然后自动获取ip地址

BAFBCE8AFAC64B66BF3F5231AD9123A8 

成功

然后将网卡设置为vmnet3,自动获取

803E1B574FC64F35A1F3550F565713AC 

成功

如果dhcp中继服务器设置为linux,而不用windows server 2003需要:

同样的将linux添加2个网卡,成为3个网卡,将ip地址分别设置为:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:C9:67:5B  

          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fec9:675b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:137 errors:0 dropped:0 overruns:0 frame:0

          TX packets:112 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:14169 (13.8 KiB)  TX bytes:17121 (16.7 KiB)

          Interrupt:19 Base address:0x2000 

 

eth1      Link encap:Ethernet  HWaddr 00:0C:29:C9:67:65  

          inet addr:192.168.3.1  Bcast:192.168.3.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fec9:6765/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1 errors:0 dropped:0 overruns:0 frame:0

          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:253 (253.0 b)  TX bytes:468 (468.0 b)

          Interrupt:19 Base address:0x2080 

 

eth2      Link encap:Ethernet  HWaddr 00:0C:29:C9:67:6F  

          inet addr:192.168.4.1  Bcast:192.168.4.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fec9:676f/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1 errors:0 dropped:0 overruns:0 frame:0

          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:253 (253.0 b)  TX bytes:468 (468.0 b)

          Interrupt:16 Base address:0x2400 

[root@station21 ~]# vim /etc/sysctl.conf   开启路由功能

0007F5C806054024AE572FE9238BF2D6 

net.ipv4.ip_forward = 0设置为1

需要安装相关的软件包

[root@station21 ~]# mkdir /media/cdrom

[root@station21 ~]# mount /dev/cdrom /media/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@station21 ~]# cd /media/cdrom/Packages/   挂载光盘

[root@station21 Packages]# yum --disablerepo=\* --enablerepo=c6-media install dhcp -y  安装软件包

[root@station21 Packages]# vim /etc/sysconfig/dhcrelay  进入dhcrelay配置dhcp中继

# DHCPv4 only

INTERFACES="eth2 eth1"   需要中继的网卡接口

# DHCPv4 only

DHCPSERVERS="192.168.2.50"  dhcp服务器的ip地址

[root@wang ~]# service iptables stop  关闭防火墙

[root@wang ~]setenforce 0   将控制规则设置为警告级别

[root@station21 Packages]# service dhcrelay start

Starting dhcrelay:                                         [  OK  ]开启dhcp中继

[root@station21 Packages]# netstat -tupln |grep dhc  查看端口,判断是否启动dhcp中继

测试:

开启一台虚拟机,网卡设置为vmnet2,设置为自动获取ip

F5CF882251714B94AC4FD2BE7838B6CA 

获取成功

再开启一台虚拟机,网卡设置为vmnet3,设置为自动获取ip

F4512AD67852453FA95050717D7CEF7B 

获取成功

如果用交换机路由器实验,则步骤为:

实验拓扑:

DAFA8283101A42D8B674E0A9F0A9D935 

路由器:

[Quidway]Int eth0/0/0.1

[r1-Ethernet0/0.1]ip add 192.168.2.1 24

[r1-Ethernet0/0.1]dhcp select relay 

[r1-Ethernet0/0.1]ip relay address 192.168.2.50

[r1-Ethernet0/0.1]Vlan-type dot1q vid 10

[r1-Ethernet0/0.1]int eth0/0.2

[r1-Ethernet0/0.2]ip address 192.168.3.1 24

[r1-Ethernet0/0.2]dhcp select relay 

[r1-Ethernet0/0.2]ip relay address 192.168.2.50

[r1-Ethernet0/0.2]vlan-type dot1q vid 20

[r1-Ethernet0/0.2]int eth0/0.3 

[r1-Ethernet0/0.3]ip address 192.168.4.1 24

[r1-Ethernet0/0.3]dhcp select relay 

[r1-Ethernet0/0.3]ip relay address 192.168.2.50

[r1-Ethernet0/0.3][r1-Ethernet0/0.2]vlan-type dot1q vid 30

 

交换机

interface Ethernet1/0/1

 port access vlan 10

#

interface Ethernet1/0/2

 port access vlan 20

#

interface Ethernet1/0/3

 port access vlan 30

interface Ethernet1/0/24

 port link-type trunk                     

 port trunk permit vlan all

测试

Linux Dhcp服务器插入交换机eth1/0/1

客户机插入eth1/0/2或者1/0/3测试

Dhcp服务器打开tail -f /var/log/message 查看过程

76F0AAAD5FAE4E379240CCC28109952F获取成功


DHCP在企业网络中的应用