DHCP工作原理:
DHCP又称动态主机配置协议,它工作分为三步:
1. 寻找 Server。当 DHCP 客户端第一次登录网路的时候,也就是客户发现本机上没有任何 IP 资料设定,它会向网路发出一个 DHCPDISCOVER 封包。因为客户端还不知道自己属于哪一个网路,所以封包的来源位址会为 0.0.0.0 ,而目的位址则为 255.255.255.255 ,然后再附上Dhcpdiscover 的信息,向网路进行广播。
2. 提供 IP 租用位址。当 DHCP 服务器监听到客户端发出的 Dhcpdiscover 广播后,它会从那些还没有租出的位址范围内,选择最前面的的空置 IP ,连同其它 TCP/IP 设定,回应给客户端一个 DHCPOFFER 封包。由于客户端在开始的时候还没有 IP 位址,所以在其 Dhcpdiscover 封包内会带有其 MAC 位址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器回应的Dhcpoffer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,Dhcpoffer 封包会包含一个租约期限的信息。
3. 接受 IP 租约。如果客户端收到网路上多台 DHCP 服务器的回应,只会挑选其中一个 Dhcpoffer 而已(通常是最先抵达的那个),并且会向网路发送一个Dhcprequest广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 位址。同时,客户端还会向网路发送一个 ARP 封包,查询网路上面有没有其它机器使用该 IP 位址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 Dhcpoffer ,并重新发送 Dhcpdiscover 信息。
LINUX系统配置DHCP服务器
案例一
(单作用域)
1.
- mkdir /mnt/cdrom
- mount /dev/cdrom /mnt/cdrom //挂载光盘镜像
- cd /mnt/cdrom/Server //进入服务安装目录
ll dhcp* //查看以dhcp开头的软件包
- -r--r--r-- 69 root root 896083 2008-12-01 dhcp-3.0.5-18.el5.i386.rpm //dhcp服务器主程序
- -r--r--r-- 79 root root 134641 2008-12-01 dhcp-devel-3.0.5-18.el5.i386.rpm//跟开发有关
- -r--r--r-- 69 root root 197418 2008-11-05 dhcpv6-1.0.10-16.el5.i386.rpm //ipv6的
- -r--r--r-- 69 root root 125998 2008-11-05 dhcpv6-client-1.0.10-16.el5.i386.rpm
2.
rpm -ivh dhcp-3.0.5-18.el5.i386.rpm //安装dhcp服务包
- warning: dhcp-3.0.5-18.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
- Preparing... ########################################### [100%]
- 1:dhcp ########################################### [100%]
rpm -ql dhcp |less //查看安装之后所形成的文件信息
- /etc/dhcpd.conf //服务器主配置文档
- /etc/rc.d/init.d/dhcpd //实现dhcp服务的控制脚本
- /etc/rc.d/init.d/dhcrelay //实现dhcp中继的控制脚本
- /usr/sbin/dhcpd //放置可执行应用程序名dhcpd
- /usr/sbin/dhcrelay
- /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample //配置脚本样例文件
- /var/lib/dhcpd/dhcpd.leases //表示租约
3.vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
- ddns-update-style interim; //dns记录动态更新
- ignore client-updates; //忽略客户端地址更新请求
- subnet 192.168.2.0 netmask 255.255.255.0 {
- option routers 192.168.3.254; //路由网关
- option subnet-mask 255.255.255.0; //子网掩码
- option domain-name "abc.com"; //设置dhs名称
- option domain-name-servers 222.88.88.88; //设置dns服务地址
- range dynamic-bootp 192.168.2.1 192.168.2.253; //设置地址池范围
- default-lease-time 21600; //默认租用时间
- max-lease-time 43200; //最大租用时间
4. service dhcpd start //启动dhcp服务
- 启动 dhcpd: [确定]
演示结果:
案例二(绑定客户端ip地址)
vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
- host ns {
- next-server marvin.redhat.com;
- hardware ethernet 00:0C:29:4D:88:4E192.168;
- fixed-address 192.168.2.99;
- }
案例三 ( 超级作用域)
vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
- ddns-update-style interim;
- ignore client-updates;
- shared-network zzdx{
- subnet 192.168.2.0 netmask 255.255.255.0 {
- option routers 192.168.2.254;
- option subnet-mask 255.255.255.0;
- option domain-name "abc.com";
- option domain-name-servers 222.88.88.88;
- option time-offset -18000;
- range dynamic-bootp 192.168.2.1 192.168.2.1;
- default-lease-time 21600;
- max-lease-time 43200;
- }
- subnet 192.168.3.0 netmask 255.255.255.0 {
- option routers 192.168.3.254;
- option subnet-mask 255.255.255.0;
- option domain-name "abc.com";
- option domain-name-servers 222.88.88.88;
- option time-offset -18000;
- range dynamic-bootp 192.168.3.1 192.168.3.1;
- default-lease-time 21600;
- max-lease-time 43200;
- }
- }
案例四 (dhcp中继)
在dhcp服务器上:
1.vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
- ddns-update-style interim;
- ignore client-updates;
- subnet 192.168.2.0 netmask 255.255.255.0 {}
- subnet 192.168.4.0 netmask 255.255.255.0 {
- option routers 192.168.4.254;
- option subnet-mask 255.255.255.0;
- option domain-name "bj.com";
- option domain-name-servers 222.88.88.88;
- option time-offset -18000;
- range dynamic-bootp 192.168.4.1 192.168.4.253;
- default-lease-time 21600;
- max-lease-time 43200;
- }
- subnet 192.168.3.0 netmask 255.255.255.0 {
- option routers 192.168.3.254;
- option subnet-mask 255.255.255.0;
- option domain-name "abc.com";
- option domain-name-servers 222.88.88.88;
- option time-offset -18000;
- range dynamic-bootp 192.168.3.1 192.168.3.253;
- default-lease-time 21600;
- max-lease-time 43200;
- }
2.配置ip地址和网关
在路由器上:
1.vim /etc/sysctl.conf//打开路由转换功能
net.ipv4.ip_forward = 1
2.sysctl -p //执行路由转换
net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax= 4294967295 kernel.shmall = 268435456
3.
mount /dev/cdrom /mnt/cdrom //挂载光盘镜像 cd /mnt/cdrom/Server //进入服务安装目录 rpm -ivh dhcp-3.0.5-18.el5.i386.rpm //安装dhcp服务包4.vim /etc/sysconfig/dhcrelay //配置dhcp中继
- INTERFACES="eth0 eth1 eth2"
- DHCPSERVERS="192.168.2.100"
5.service dhcrelay start //启动dhcp中继服务
- 启动 dhcrelay: [确定]
打开两个dhcp客户端,启用自动获取地址
演示结果:
客户端一
客户端二
转载于:https://blog.51cto.com/yz406/963595