Linux高级篇–DHCP服务
一、 DHCP服务
- 网络配置
静态指定
动态获取: bootp:boot protocol MAC与IP一一静态对应
dhcp:增强的bootp,动态 - DHCP: (Dynamic Host Configuration Protocol)
动态主机配置协议
局域网协议,UDP协议 - 主要用途:
用于内部网络和网络服务供应商自动分配IP地址给用户
用于内部网络管理员作为对所有电脑作集中管理的手段 - 使用场景
自动化安装系统
解决IPV4资源不足问题 - DHCP共有八种报文
DHCP DISCOVER:客户端到服务器
DHCP OFFER :服务器到客户端
DHCP REQUEST:客户端到服务器
DHCP ACK :服务器到客户端
DHCP NAK:服务器到客户端,通知用户无法分配合适的IP地址
DHCP DECLINE :客户端到服务器,指示地址已被使用
DHCP RELEASE:客户端到服务器,放弃网络地址和取消剩余的租约时间
DHCP INFORM:客户端到服务器,客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,极少用到
DHCP工作原理
- DHCP工作原理四步骤:
discover:主机启动时,向网络中发送请求报文,寻找网络中是否存在DHCP服务器,如果存在,请求获取ip地址
offer:dhcp服务器提供ip地址给客户端,同时把该地址打上标签:该地址已被占用
request:客户端根据先到先得的规则,获取ip地址;并发送报文通知所有网络自己所获取的地址
ack:确认客户端获取的ip地址,并把该ip地址的相关信息(掩码,网关,租期等)发送给客户端 - 续租
50% :租赁时间达到50%时来续租,刚向DHCP服务器发向新的DHCPREQUEST请求。如果dhcp服务没有拒绝的理由,则回应DHCPACK信息。当DHCP客户端收到该应答信息后,就重新开始新的租用周期
87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机会再发送一次广播请求
如果网络中没有DHCP服务器,获取不到地址时,windows系统将会给自己分配一个地址:169.254.x.x
dhcp工作原理是基于广播实现的,如果client和server之间存在路由器(即跨网段),可以利用中继代理dhcrelay agent实现
DHCP服务简介
- 同网段多DHCP服务
DHCP服务必须基于本地
先到先得的原则 - 跨网段
RFC 1542 Compliant Routers
dhcrelay: 中继 - 相关协议
Arp
rarp
DHCP实现
- Linux DHCP协议的实现程序:dhcp, dnsmasq(dhcp,dns)
- Dhcp Server
/usr/sbin/dhcpd
/etc/dhcp/dhcpd.conf --> /etc/rc.d/init.d/dhcpd
/etc/dhcp/dhcpd6.conf–> /etc/rc.d/init.d/dhcpd6
/usr/sbin/dhcrelay
/etc/rc.d/init.d/dhcrelay
dhcp server:67/udp
dhcp client: 68/udp
dhcpv6 client:546/udp - Dhcp client
dhclient
自动获取的IP信息: /var/lib/dhclient
DHCP配置文件
- dhcpd.conf:
帮助参考:man 5 dhcpd.conf
全局配置
subnet {
…
}
host {
} - 地址分配记录
/var/lib/dhcpd/dhcpd.leases
注意:该服务配置文件/etc/dhcp/dhcpd.conf默认为空,无法启动,需要根据范例文件/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example手动创建配置文件,即复制该文件到/etc/dhcp/目录下重命名为dhcpd.conf
示例:
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com"; 指定域名
option domain-name-servers 192.168.0.1,8.8.8.8; 指定dns地址
default-lease-time 86400;
max-lease-time 86400;
subnet 192.168.32.0 netmask 255.255.255.0 { 指定分配的子网网段
range 192.168.32.10 192.168.32.100; 指定dhcp地址池
option routers 192.168.32.100; 制定网管
}
- 其它配置选项:
filename: 指明引导文件名称
next-server:提供引导文件的服务器IP地址
示例:
filename "pxelinux.0";
next-server 192.168.32.128;
- 检查语法
service dhcpd configtest
知识扩展1:搭建dhcp服务
如何配置DHCP服务器
注意:实验时不要使用桥接模式,使用仅主机模式,停用vmware中DHCP服务器即可
dhcp服务器地址必须是静态地址
做实验时,配置一个网卡即可
/etc/dhcp/dhcpd.conf dhcp主配置文件,默认为空,参考范例文件
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example dhcp范例文件
/usr/sbin/dhcpd dhcp主程序
/usr/sbin/dhcrelay dhcp代理
/var/lib/dhcpd dhcp数据库文件
搭建dhcp服务
必须要先给本网卡所在网络分配地址,再给远程网络分配地址
配置/etc/dhcp/dhcpd.conf文件
7 option domain-name "magedu.org"; 配置域名
8 option domain-name-servers 114.114.114.114,1.1.1.1; dns地址,一般情况下为ip地址,而不是域名;配置该项使客户端获取ip地址的同时,能够获取dns地址
9
10 default-lease-time 86400; 默认租期为600秒,根据使用场景更改租期时间
11 max-lease-time 86400; 最大租期时间,默认要大于等于默认租期;一般情况下最大租期时间是无效的,只有在特殊情况下才会生效
27 subnet 192.168.32.0 netmask 255.255.255.0 {
28 range 192.168.32.10 192.168.32.100;
29 option routers 192.168.32.100;
30 }
如果这一项没有更改,dhcp服务无法启动;因为没有为主机网卡所在网段提供服务,系统认为这样是不合理的,因此要对该项进行更改。
只需添加本地网卡所在网段即可,无需添加任何定义。
另外要在该网段内添加分配的地址池范围,否则,仍然无法提供dhcp服务
配置完毕,重启dhcp服务
systemctl restart dhcpd
用同一网段的主机设置为dhcp获取地址进行测试
知识扩展2:可以把dns写入到subnet里,而且优先级高于option domain-name-servers设置的dns
vim /etc/dhcp/dhcpd.conf
27 subnet 192.168.32.0 netmask 255.255.255.0 {
28 range 192.168.32.10 192.168.32.100;
29 option routers 192.168.32.100;
30 option domain-name-servers 8.8.8.8;
31 }
option domain-name-servers 114.114.114.114,1.1.1.1
[root@centos6 ~]#cat /etc/resolv.conf 查看获取的dns地址;
generated by /sbin/dhclient-script
search magedu.org
nameserver 8.8.8.8
如果其他主机不是从192.168.32.0网段获取ip地址,则option domain-name-servers 114.114.114.114,1.1.1.1会生效
知识扩展3:获取固定的ip地址:ip地址绑定mac地址
vim /etc/dhcp/dhcpd.conf
78 host fantasia {
79 hardware ethernet 00:0c:29:ca:4f:3d; 主机mac地址
80 fixed-address 192.168.32.20; 主机ip地址
81 }
测试:把拥有00:0c:29:ca:4f:3d该mac地址的主机设置为dhcp自动获取地址,查看是否获取的地址为绑定mac的ip地址