简介
动态主机设置协议(Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:
用于内部网络或网络服务供应商自动分配IP地址给用户
用于内部网络管理员作为对所有电脑作中央管理的手段
dhcp server: arp --> address resolving Protocol IP --> MAC (已经知道对方的ip,寻找ip对应的mac地址) rarp --> reverse arp MAC --> IP
工作流程:广播,全程使用udp,因无IP地址,不能点对点通信,只能使用广播
dhcp的前身:bootp –> boot protocol
DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用67/udp,客户端使用68/udp。 DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。 客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。 (1) Client:dhcp discover (2) Server: dhcp offer(IP/Netmask, GW, DNS Server, NTP Server, Wins Server, ...) (3) Client:dhcp request (4) Server:dhcp ack
lease time:租约期限;当续租成功的时候时间从当前延长为一个周期。
向dhcp续租请求续租的时刻:50%, 75%, 87.5%, 93.75%
当一直没有dhcp响应的时候要重新发起dhcp发现广播了,dhcp discover,…
续租:单播方式,因为有ip地址,可以点对点通信,这里不使用广播,
dhcp request
dhcp ack|nak
能够实现此功能的软件
dhcp (isc.org) - The dhcp package provides the ISC DHCP service and relay agent. dnsmasq (dns, dhcp) - Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server. It is designed to provide DNS and, optionally, DHCP, to a small network.
程序环境
dhcp server: /usr/sbin/dhcpd IPV4网络: /etc/dhcp/dhcpd.conf /usr/lib/systemd/system/dhcpd.service IPV6网络: /etc/dhcp/dhcpd6.conf /usr/lib/systemd/system/dhcpd6.service dhcrelay:通过中继来为其他的网络来提供dhcp服务,这里用不到 /usr/sbin/dhcrelay /usr/lib/systemd/system/dhcrelay.service
监听的地址和端口:
Server: 67/udp Client: 68/udp
配置文件:/etc/dhcp/dhcpd.conf
配置指令:
option选项:配置给客户端的相关信息
指令:定义dhcp server的工作特性
配置有级别之分:
全局配置
子网配置
主机配置
default-lease-time 600; #默认租约期限,单位:秒 max-lease-time 7200; #最大租约期限 option domain-name "search_domain.tld"; #搜索域,当ping www,会自动加上domain-name:andblog.cn, option domain-name-servers DNS_SERVER1, DNS_SERVER2, DNS_SERVER3; #dns地址,这里可以有三个, option routers GW1, GW2, ...; #配置给客户端的默认网关 option broadcast-address BROADCAST_ADDRESS; #配置给客户端的广播地址 下面这两个选项在自动化安装中有用 filename "/pxelinux.0"; #开始启动文件的名称,应用于无盘安装,可以是tftp的相对或绝对路径,告知客户端从TFTP根目录下载pxelinux.0文件 next-server IP; #This is the name of the server they should get it from #tftp服务器,可以和dhcp服务器不在同一机器上,一般是PXE网络使用此参数 subnet NETWORK netmask MASK { range START_IP END_IP; } 定义网络作用域,即一个子网,主要用于指明地址池;分配的地址从哪里到哪里。 host passacaglia { #定义主机作用域,每一个mac地址对应一个ip地址,是固定的。这里指定的ip要在上面设置的地址池之外的地址 hardware ethernet 0:0:c0:5d:bd:95; fixed-address IP_ADDR; }
查看dhcp地址分配情况:/var/lib/dhcpd/dhcpd.leases
其它指令:
filename:也可以向客户端指明引导文件名称; next-server:指明引导文件所在的服务器的主机IP; filename “pxelinux.0"; next-server 10.1.0.6; #这个要是一个tftp server
测试
测试用的dhcp主机:192.168.170.50
[root@localhost ~]#yi dhcp [root@localhost ~]#rpm -ql dhcp /etc/dhcp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd6.conf /etc/openldap/schema/dhcp.schema /etc/portreserve/dhcpd /etc/rc.d/init.d/dhcpd /etc/rc.d/init.d/dhcpd6 /etc/rc.d/init.d/dhcrelay /etc/rc.d/init.d/dhcrelay6 /etc/sysconfig/dhcpd /etc/sysconfig/dhcpd6 /etc/sysconfig/dhcrelay /etc/sysconfig/dhcrelay6 /usr/bin/omshell /usr/sbin/dhcpd /usr/sbin/dhcrelay
自带的配置文件里面是空的,这里使用示例配置文件
[root@localhost /etc/dhcp]#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.example dhcpd.conf cp: overwrite ‘dhcpd.conf’? y [root@localhost /etc/dhcp]#vim dhcpd.conf option domain-name "andblog.cn"; option domain-name-servers 114.114.114.114, 8.8.8.8, 4.4.4.4; option routers 192.168.170.2; default-lease-time 3600; max-lease-time 7200; subnet 192.168.170.0 netmask 255.255.255.0 { range 192.168.170.200 192.168.170.210; } 可以将后面的都注释掉,没有用了。
然后就可以启动服务了
[root@localhost /etc/dhcp]#service dhcpd start [root@localhost ~]#ss -unl State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:67 *:*
测试的时候可以将dhcpd服务器的防火墙关闭,便于测试
在本测试环境中,要关闭虚拟网络中的dhcp服务,不然会冲突
在本机添加一块网卡,并将网卡配置到同一网络中,将网卡配置文件改为dhcp方式获取IP地址
刚添加网卡就发现配置ip为:192.168.170.200了
文件/var/lib/dhcpd/dhcpd.leases,可以看到被租出去的IP地址和相关信息。
[root@master /var/lib/dhcpd]#cat dhcpd.leases # The format of this file is documented in the dhcpd.leases(5) manual page. # This lease file was written by isc-dhcp-4.1.1-P1 server-duid "\000\001\000\001!\0050T\000\014)\3578\333"; lease 192.168.170.200 { starts 5 2017/07/21 21:40:31; ends 5 2017/07/21 22:40:31; cltt 5 2017/07/21 21:40:31; binding state active; next binding state free; hardware ethernet 00:0c:29:ef:38:e5; }
文件/etc/sysconfig/dhcpd是指定DHCP服务器监听的网卡,如果只有一个网卡,一般不用设置 DHCPDARGS=eth0 或者是eth1 ,如果全部监听就不用管。
单独设置网卡ip地址
也可以设置某个mac地址对应的ip为固定的ip,这里的ip地址要在上面的地址池之外的地址。,这里的ip优先级较高。比如在配置文件中加入刚才添加的网卡eth1的mac地址
host后面的名字可以自己定义
获取mac地址的简单方法,如果主机在线,直接ping这个主机对应的ip,通过arp -n即可看到对应的mac,不用登陆即可
如果不能登录,直接bios设置网络启动,启动后,界面会看到 dhcp 寻找ip的界面,上面有mac地址
host abc { hardware ethernet 00:0C:29:EF:38:E5; fixed-address 192.168.170.60; filename "vmunix.passacaglia"; server-name "toccata.fugue.com"; } host abc [root@localhost /etc/dhcp]#service dhcpd start
服务端重启服务,在客户端重新请求ip就会是固定的地址。
ip地址为60
[root@master ~]#dhclient -d Internet Systems Consortium DHCP Client 4.1.1-P1 Copyright 2004-2010 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth1/00:0c:29:ef:38:e5 Sending on LPF/eth1/00:0c:29:ef:38:e5 Listening on LPF/eth0/00:0c:29:ef:38:db Sending on LPF/eth0/00:0c:29:ef:38:db Sending on Socket/fallback DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x14086d88) DHCPACK from 192.168.170.200 (xid=0x14086d88) bound to 192.168.170.201 -- renewal in 1350 seconds. DHCPREQUEST on eth1 to 255.255.255.255 port 67 (xid=0x3e480c60) DHCPACK from 192.168.170.200 (xid=0x3e480c60) bound to 192.168.170.60 -- renewal in 1492 seconds.
–
–
–
评论前必须登录!
注册