DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口。
工作模式:
1.manual
Mac 与ip地址捆绑,需要手工一个一个输入,但是地址利用率低。
Automatic
在dhcp server做地址池,只需要写出起始地址和结束地址,不需要一个一个输入。Dhcp client 连接后会被永久记录,造成地址利用率低。
Dynamic
相比与第二种多了地址租期,地址利用率提高了。
拓扑图
原理:
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 : 此报文是server对client的dhcprequst报文的拒绝响应,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
: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地址
将客户机设置为自动获取ip地址
自动获取成功
在日志文件中可以看到相关的信息
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
在客户端的命令行模式下查看域名
域名正确
如果需要排除地址,就需要分段进行设置作用域以达到排除的目的。
[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地址
获取192.168.2.50成功
Dhcp超级作用域配置方法
需求:将多个小的作用域绑定为一个大的作用域
比如讲192.168.1.0/24和192.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:
第2台客户端也设置为自动获取ip
分别获取了地址池的2个ip地址,试验成功!
DHCP 中继
如果有多个不同的vlan获取dhcp,则需要dhcp中继技术。
实现此技术既可以用虚拟机模拟实验,也可以用路由器,交换机实验。
用虚拟机模拟实验:
先配置dhcp服务器:
[root@wang ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 先编辑网卡,将网关设置为192.168.2.1
添加一个网关即可
[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 实现:
现在网络适配器里面添加2块网卡,一共3块网卡。
在3块网卡上配置3个对应的ip地址:
进入路由和远程访问
配置并启用路由和远程访问
下一步
自定义配置
完成
右键常规→新增路由协议
选择DHCP中继代理程序
右键dhcp中继代理→新增接口
然后添加vmnet2和vmnet3
右键dhcp中继服务器→属性
添加dhcp server的ip地址
进行测试
再打开一台虚拟机,将网卡设置为vmnet2,然后自动获取ip地址
成功
然后将网卡设置为vmnet3,自动获取
成功
如果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 开启路由功能
将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
获取成功
再开启一台虚拟机,网卡设置为vmnet3,设置为自动获取ip:
获取成功
如果用交换机路由器实验,则步骤为:
实验拓扑:
路由器:
[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 查看过程
获取成功
原文地址:http://whhhj.blog.51cto.com/9289395/1568891