配置Linux系统实现dhcp功能
1、背景及原理
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。
2、环境模拟
克隆两台或三台Linux机器,第一台命名为dhcpd作为dhcp服务端,第二台和第三台分别命名为dhcp-client1和dhcp-client2作为dhcp客户端
3、配置dhcpd服务端
3.1 修改dhcpd服务端的网卡配置文件
eth0 ip 192.168.214.210 网关192.168.214.2(同VMware网关地址)
eth1 ip 192.168.1.1
3.2 清空网卡相关信息
克隆的机器除了修改网卡配置文件(去掉网卡UUID和MAC地址)之外还需要执行命令
> /etc/udev/rules.d/70-persistent-net.rules 清空网卡信息文件
3.3 重启机器查看ip并检查能否与外网建立通信
3.4 安装配置dhcp服务
执行命令yum install dhcp –y安装dhcp服务相关软件
3.5 修改dhcp的配置文件
cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |grep -Ev '^$|#'
查看示例,过滤掉注释和空行
截取红框部分内容,并修改为此处需要的配置,将配置写入 /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 { #网段和子网掩码
range 192.168.1.100 192.168.1.254; #可自动获取的IP地址范围
option domain-name-servers 223.5.5.5; #dns服务器名称
option routers 192.168.1.1; #网关地址
option broadcast-address 192.168.1.255; #广播地址
default-lease-time 600; #默认租约期限,单位秒
max-lease-time 7200; #最长租约期限,单位秒
}
3.6 启动dhcpd服务
4、获取dhcp并检验
4.1 在dhcp-client1上重启网络服务
在dhcpd上进行tcpdump指定网卡eth1,指定默认dhcp服务端端口67进行抓包
包含获取到ip的机器的mac地址,获取时间,通信记录等内容
4.2 服务端cat /var/lib/dhcpd/dhcpd.leases查看dhcp缓存
客户端也可cat /var/lib/dhclient/dhclient-eth0.leases查看dhcp缓存
4.3 在dhcp-client1上重启网络服务
通过Windows平台的wireshark抓取名为bootp的包,可以看到相关dhcp信息
第一个包是客户端向dhcp服务器请求分配IP、dns、默认网关和子网掩码
第二个包是服务端回应客户端请求
第三个包是客户端询问服务端是否确认该请求信息
第四个包是服务端回应客户端的确认信息
4.4 此时dhcp-client并不能连接外网,需要在dhcp服务端(dhcpd)做如下配置
修改配置开启ip转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl –p 加载内核参数
此时可以ping通192.168.214.210
配置iptables转发规则nat
iptables –F
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
此时可以ping通外网
5、通过dhcp获取固定分配的ip
若想给某一主机分配固定的IP地址,前提是知道要分配IP地址主机的网卡mac地址(物理地址)和主机名,也能固定为主机分配一个ip地址
5.1 cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |grep -Ev '^$|#'查看示例
修改为此处需要的配置,利用ifconfig查看网卡mac地址
host dhcp-client{
hardware ethernet 00:0C:29:E4:81:9A;
fixed-address 192.168.1.199;
}
5.2 将此内容追加到/etc/dhcp/dhcpd.conf文件中
5.3 /etc/init.d/dhcpd restart 重启dhcp服务
5.4 在dhcp-client1上重启网络服务,查看ip,可以发现已经成功重新获取到新指定的ip地址
博主原创文章,转载请务必注明出处