Linux中DHCP配置指南指南(配实验步骤与注释)

Linux中DHCP配置指南指南

一、DHCP基础概念

  1. 功能
    • 动态分配IP地址、子网掩码、网关、DNS等网络参数
    • 适用场景:
      • IP地址资源不足的子网(如ISP)
      • 设备位置频繁变动的网络(如移动办公)
  2. 核心术语
    • 端口 :服务端 UDP 67,客户端 UDP 68(IPv6使用 546
    • 组件:DHCP服务器、客户端、中继代理(路由器)
    • 管理单元:作用域(Subnet)、地址池、租约、保留地址

二、DHCP工作流程(DORA四阶段)

1. Discover(发现阶段)
  • 客户端 :广播发送 DHCP Discover 报文
  • 目的:寻找可用DHCP服务器
  • 报文特点:包含客户端MAC地址
2. Offer(提供阶段)
  • 服务器 :响应 DHCP Offer 报文(广播)
  • 内容
    1. IP地址
    2. 子网掩码
    3. DNS
    4. 租期时间
    5. 服务器标识
3. Request(请求阶段)
  • 客户端 :广播 DHCP Request 报文
  • 作用
    1. 接受特定服务器的Offer
    2. 续租时直接发送(跳过Discover/Offer)
4. Acknowledge(确认阶段)
  • 服务器 :发送 DHCP ACK 确认分配(广播)
  • 客户端:收到后激活网络配置
  • 异常 :若收到 DHCP NAK,客户端需重启流程

跨网段通信

中继代理通过 giaddr 字段传递客户端网关信息,实现跨子网IP分配


三、DHCP服务搭建

1. 搭建服务器环境

bash 复制代码
vim /etc/yum.repos.d/server.repo		# 搭建本地yum仓库
	[aa]
	name=aa1
	baseurl=file:///mnt
	enabled=1
	gpgcheck=0

mount /dev/cdrom /mnt/					# 挂载镜像
yum -y install dhcp						# 下载 DHCP

2. 服务器配置文件

  1. 编辑主配置文件

    bash 复制代码
    cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    # -4.2.5 为下载的DHCP版本
    
    vim  /etc/dhcp/dhcpd.conf			# 编辑主配置文件
    	subnet 172.16.30.0 netmask 255.255.255.0 {				# 定义子网和子网掩码
      	range 172.16.30.50 172.16.30.100;						# 定义地址池
      	#option domain-name-servers ns1.internal.example.org;	# 定义 DNS 服务器
      	#option domain-name "internal.example.org";				# 定义域
      	option routers 172.16.30.1;								# 定义网关
      	#option broadcast-address 10.5.5.31;					# 定义广播地址
      	default-lease-time 600;									# 默认租约时间
      	max-lease-time 7200;									# 最大租约时间
    	}
    
    host desktop30 {							# 为特定的 mac 主机定义固定的 IP 地址
      hardware ethernet 00:0c:29:0d:1c:a5;		# 主机的 mac 地址
      fixed-address 172.16.30.60;				# 提供的 IP 地址
    }
  2. 重启服务并设置下次启动生效

    bash 复制代码
    systemctl restart dhcpd						# 重启服务
    systemctl enable dhcpd						# 下次开机自启
  3. 关闭防火墙

    bash 复制代码
    systemctl stop firewalld					# 关闭防火墙 
    systemctl disable firewalld					# 禁用防火墙
  4. 设置 seLinux

    bash 复制代码
    setenforce 0								# 临时改成 permissive 模式
    vim /etc/selinux/config						# 进入配置文件,改成 disabled 模式
    	SELINUX=disabled

3. 客户端配置

  1. 配置客户端网卡文件

    bash 复制代码
    vim /etc/sysconfig/network-scripts/ifcfg-ens33		# 配置网卡
    	BOOTPROTO=dhcp
    	ONBOOT=yes
    
    systemctl restart network					# 重启服务
    1. 查看客户端 IP
    bash 复制代码
    ip a

四、DHCP中继服务搭建

1. 服务器配置文件

下载dhcp(同上)

  1. 编辑主配置文件

    bash 复制代码
    cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    # -4.2.5 为下载的DHCP版本
    
    vim  /etc/dhcp/dhcpd.conf			# 编辑主配置文件
    	subnet 192.168.100.0 netmask 255.255.255.0 {			# 自身网段
    	}
    	# A slightly different configuration for an internal subnet.
    	subnet 192.168.200.0 netmask 255.255.255.0 {			# 定义子网和子网掩码
      	range 192.168.200.50 192.168.200.100;					# 定义地址池
      	option routers 192.168.200.254;							# 定义网关
      	default-lease-time 600;									# 默认租约时间
      	max-lease-time 7200;									# 最大租约时间
    	}
  2. 重启服务并设置下次启动生效(同上)

  3. 关闭防火墙(同上)

  4. 设置 seLinux(同上)

3. 中继配置

下载dhcp(同上)

  1. 开启ip转发

    bash 复制代码
    vim /etc/sysctl.conf
    	net.ipv4.ip_forward = 1
    
    sysctl -p /etc/sysctl.conf
  2. 配置网卡

    bash 复制代码
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    bash 复制代码
    vim /etc/sysconfig/network-scripts/ifcfg-ens36
  3. 开启dhcp中继

    bash 复制代码
    dhcrelay 192.168.100.10

客户端配置

  1. 配置客户端网卡文件

    bash 复制代码
    vim /etc/sysconfig/network-scripts/ifcfg-ens33		# 配置网卡
    	BOOTPROTO=dhcp
    	ONBOOT=yes
    
    systemctl restart network					# 重启服务
  2. 查看客户端 IP

    bash 复制代码
    ip a
相关推荐
cpsvps_net9 分钟前
容器安全扫描工具在海外云服务器环境的集成方法
运维·服务器·安全
crushqqi23 分钟前
【跨服务器的数据自动化下载--安装公钥,免密下载】
服务器·python·自动化
m0_7471245328 分钟前
视频输入输出模块介绍和示例
linux·音视频
qq_4639448631 分钟前
如何将新建的Anaconda虚拟环境导入Juputer内核中?
linux·windows·python
skywalk81631 小时前
vagrant和itamae怎么配合使用? (放弃)
运维·前端·ruby·vagrant
先天打工圣体的男人1 小时前
Linux环境gitlab多种部署方式及具体使用
运维·git·gitlab
岚天start1 小时前
iptables -L 显示无目标链规则,但是iptables-save显示仍存在链规则原因分析
linux·服务器·网络·iptables·nat·filter·mangle
七七7221 小时前
Xshell连接虚拟机密码错误解决方法
linux
孙克旭_2 小时前
day073-Jenkins消息通知与pipline流水线
linux·运维·jenkins
mohesashou2 小时前
云原生作业(nginx)
运维·nginx