目录
dhcp协议:
dhcp分配的过程:
在linux系统里搭建一个dhcp服务,给其他机器分配ip地址,具体步骤:
1.安装dhcp相关的软件包
2.拷贝样例文件到/etc/dhcp目录下
3.编辑配置文件
4.启动dhcp服务器
5.查看dhcp服务是否已启动
6.关闭防火墙
7.测试--使用一台服务器作为客户端
8.在dhcp服务器上查看给哪些客户机分配了ip地址
补充:linux中手工配置静态ip地址
1.进入网卡配置文件的目录
2.修改配置文件ifcfg-ens33,ens33是具体接口的名字
3.重新启动服务,让新的配置重新生效
dhcp协议:
动态主机配置协议,是应用层的协议,负责为客户机动态分配TCP/IP信息,包括ip地址、子网掩码、默认网关、首选DNS服务器等。dhcp只是在内网给部分电脑配置ip地址,一个局域网中有一个dhcp服务器就可以了。
相关疑问:
dhcp服务器是如何知道哪些ip地址分配出去了,哪些没有分配出去呢?
dhcp服务器会记录哪些ip地址分配出去了,哪些没有分配 --> 会有一个文件记录。
分配ip地址出去的时候,是否会检查ip地址是否冲突?
分配之前会先ping一个准备给别人的ip地址,看是否有回应。
dhcp分配的过程:
客户机请求ip地址(DHCPDiscover) -> 服务器相应请求(DHCPOffer) -> 客户机选择ip地址(DHCPRequest) -> 服务器确认租约(DHCPAck)
其中客户机发出的包都是广播包,服务器发出的包都是单播包。
在linux系统里搭建一个dhcp服务,给其他机器分配ip地址,具体步骤:
1.安装dhcp相关的软件包
[root@router ~]# yum install dhcp -y
2.拷贝样例文件到/etc/dhcp目录下
[root@router ~]# cd /etc/dhcp/
[root@router dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts #dhcpd6.conf是ipv6的配置文件,dhcpd.conf是ipv4的配置文件--主要配置文件
[root@router dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
3.编辑配置文件
[root@router dhcp]# vim /etc/dhcp/dhcpd.conf
log-facility local7;
# A slightly different configuration for an internal subnet.
subnet 192.168.188.0 netmask 255.255.255.0 {
range 192.168.188.210 192.168.188.240;
option domain-name-servers 114.114.114.114;
option routers 192.168.188.1;
default-lease-time 600;
max-lease-time 7200;
}
其中配置的主要含义:
log-facility local7:指定日志类型,采用的日志设备为本地设备
subnet 192.168.188.0 netmask 255.255.255.0:指定分配ip地址的网段号和子网掩码
range 192.168.188.210 192.168.188.240:指定分配地址池的范围,必须是上面指定网段号里面的ip
option domain-name-servers 114.114.114.114:指定dns服务器
option routers 192.168.188.1:指定网关
default-lease-time 600:最短租约时间为600s
max-lease-time 7200:最长租约时间为7200s
注意:dhcp服务器里的网关或者dns服务器配置错误,就会导致客户机上不了网
4.启动dhcp服务器
[root@router dhcp]# service dhcpd start
Redirecting to /bin/systemctl start dhcpd.service
5.查看dhcp服务是否已启动
[root@router dhcp]# ps aux|grep dhcpd #查看进程
dhcpd 4482 0.2 0.4 105988 8180 ? Ss 21:34 0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
[root@router dhcp]# netstat -anplut|grep dhcpd #查看端口
udp 0 0 0.0.0.0:67 0.0.0.0:* 4482/dhcpd
6.关闭防火墙
[root@router dhcp]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@router dhcp]# systemctl disable firewalld
7.测试--使用一台服务器作为客户端
[root@goweb ~]# dhclient -lf /var/lib/dhclient/dhclient.leases #将租约信息存入该文件
[root@goweb ~]# cat /var/lib/dhclient/dhclient.leases
lease {
interface "ens33";
fixed-address 192.168.188.210;
option subnet-mask 255.255.255.0;
option dhcp-lease-time 1800;
option dhcp-message-type 5;
option domain-name-servers 192.168.188.1;
option dhcp-server-identifier 192.168.188.254; #dhcp服务器的ip地址
option broadcast-address 192.168.188.255;
option domain-name "localdomain";
renew 4 2023/07/27 13:58:24;
rebind 4 2023/07/27 14:12:58;
expire 4 2023/07/27 14:16:43;
}
8.在dhcp服务器上查看给哪些客户机分配了ip地址
[root@router ~]# cat /var/lib/dhcpd/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.2.5
server-duid "\000\001\000\001,U,\360\000\014)\350\033\200";
lease 192.168.188.210 {
starts 4 2023/07/27 13:40:27;
ends 4 2023/07/27 13:50:27;
cltt 4 2023/07/27 13:40:27;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:e4:41:50; #物理地址
client-hostname "goweb"; #客户机主机名
}
补充:linux中手工配置静态ip地址
1.进入网卡配置文件的目录
[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/
2.修改配置文件ifcfg-ens33,ens33是具体接口的名字
[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
UUID="e605fdb1-4998-467b-b659-84e12fecab31"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.15.149
#NETMASK=255.255.255.0
PREFIX=24 4
GATEWAY=192.168.15.2
DNS1=114.114.114.114
DNS2=192.168.0.1
其中配置文件中主要配置的含义:
BOOTPROTO="none":none或static表示静态配置ip,dhcp表示动态获得ip地址,通过dhcp服务器分配
NAME="ens33":网卡的名字
UUID="e605fdb1-4998-467b-b659-84e12fecab31":网络连接的唯一标识,一个硬件会对应一个编号,这个编号会自动生成,不需要修改
DEVICE="ens33":设备的名字
ONBOOT="yes":yes表示开机的时候激活网络连接,no表示禁用这个网络连接
IPADDR=192.168.15.149:静态配置的ip地址
NETMASK=255.255.255.0:子网掩码
PREFIX=24:子网掩码的长度为24,与NETMASK只需要配置其中一个就可以了
GATEWAY=192.168.15.2:默认网关
DNS1=114.114.114.114:首选dns服务器
DNS2=192.168.0.1:备选dns服务器
3.重新启动服务,让新的配置重新生效
[root@localhost network-scripts]# service network restart
Restarting network (via systemctl): [ 确定 ]