第十三章、DHCP原理与配置
1、DHCP工作原理
1.1 DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)
1.2 由Internet工作任务小组设计开发
1.3 专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议
1.4 使用DHCP的好处
1.4.1 减少管理员工作量
1.4.2 避免输入错误的可能
1.4.3避免IP地址冲突
1.4.4 当更改IP地址段时,不需要重新配置每个用户的IP地址
1.4.5 提高IP地址的利用率
1.4.6 方便客户端的配置
1.5 DHCP的分配方式
1.5.1 自动分配:分配到一个IP地址后永久使用
1.5.2 手动分配:由DHCP服务器管理员指定专门IP地址
1.5.3 动态分配:使用完后释放该IP,供其他客户机使用——地址池
1.6 DHCP作为用应用层协议,它依靠并且使用着传输层中udp协议。对于DHCP中分为客户端,和服务端。客户端用的端口为68,服务端的端口为67
2、DHCP的租约过程
2.1 客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程
2.2 分为四个步骤
2.2.1 客户端在网络中搜索服务器
2.2.2 服务器向客户端响应服务
2.2.3 客户端向目标服务器发出服务请求
2.2.4 服务器向客户端提供服务
2.3 客户机请求IP地址
2.3.1 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
2.3.2 此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器
2.4 服务器响应
2.4.1 DHCP服务器收到来自客户机请求IP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机
2.4.2如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则DHCP Offer消息
2.5 客户机选择IP地址
2.5.1 DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
2.6 服务器确定租约
2.6.1 DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息
2.6.2 当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP的初始化
2.7 重新登录
2.7.1 DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息
2.8 更新租约
2.8.1 当DHCP服务器向客户机出租的IP地址租期达到50%时就需要更新租约
2.8.2 客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约
3、使用DHCP动态配置主机地址
3.1 DHCP服务
3.1.1 为大量客户机自动分配地址,提供集中管理
3.1.2 减轻管理和维护成本、提高网络配置效率
3.2 可分配的地址信息主要包括
3.2.1 网卡的IP地址、子网掩码
3.2.2 对应的网络地址、广播地址
3.2.3 默认网关地址
3.2.4 DNS服务器地址
4、安装DHCP服务器
4.1 实验环境:
3台机器
centos 7-1 DHCP 服务端 192.168.65.2 (为了实验方便,将此IP定义为该网段的网关)
centos 7-2 DHCP 客户端 自动分配
windows 10 DHCP 客户端 自动分配
4.2 网络环境:
4.2.1 Vmnet2(仅主机模式)——三台机器都是.
4.2.2 Vmware workstation 的虚拟网络编辑器中的DHCP功能必须关闭
4.2.3 确定好Vmnet2 仅主机模式的IP地址段是多少
4.2.4 注意 DHCP服务端的网卡信息的配置(GATEWAY 不要写)
4.3 系统环境:
4.3.1 先安装好DHCP服务,再行修改网络配置(nat-Vmnet2)
4.3.2 或者,修改完网络配置后,配置本地YUM仓库,再行安装DHCP
4.3.3 每台机器,关闭防火墙、核心防护
4.4 操作步骤
4.4.1配置本地yum仓库
[root@xiaolei yum.repos.d]# mount /dev/sr0 /mnt/ ###挂载
/dev/sr0 is already mounted on /mnt
[root@xiaolei yum.repos.d]# df -hT
………………
/dev/sr0 iso9660 4.4G 4.4G 0 100% /mnt
[root@xiaolei yum.repos.d]# ls
bak CentOS-aliyun-lhr.repo epel-aliyun.repo repobak
[root@xiaolei yum.repos.d]# mv *.repo repobak/
[root@xiaolei yum.repos.d]# ls
bak repobak
[root@xiaolei yum.repos.d]# touch local.repo ###创建本地yum源
[root@xiaolei yum.repos.d]# ls
bak local.repo repobak
[root@xiaolei yum.repos.d]# vi local.repo ###编辑yum仓库
[root@xiaolei yum.repos.d]# cat local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@xiaolei yum.repos.d]# yum clean all ###清理yum缓存
[root@xiaolei yum.repos.d]# yum makecache fast ###重新建立缓存
Metadata Cache Created
4.4.2 关闭防火墙和核心防护
[root@xiaolei yum.repos.d]# systemctl stop firewalld
[root@xiaolei yum.repos.d]# setenforce 0
4.4.3 安装dhcp
[root@xiaolei yum.repos.d]# yum install -y dhcp
4.4.4 编辑 dchp全局配置文件,设置好对应的网络池
[root@xiaolei ~]# cd /usr/share/doc/
[root@xiaolei doc]# ls
…………
dhcp-4.2.5
[root@xiaolei doc]# cd dhcp-4.2.5/ ###进入到这个目录
[root@xiaolei dhcp-4.2.5]# ls
dhcpd6.conf.example dhcpd.conf.example ldap ###里面有dhcpd配置模版
[root@xiaolei dhcp-4.2.5]# less dhcpd.conf.example
[root@xiaolei dhcp-4.2.5]# cp /usr/share/doc/dhcp-4.2.5/dhcpd. conf.example /etc/dhcp/dhcpd.conf ###将模版复制并替换并改名为dhcp.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@xiaolei dhcp-4.2.5]# cd
[root@xiaolei ~]# cd /etc/dhcp/
[root@xiaolei dhcp]# ls
dhclient.d dhcpd6.conf scripts
dhclient-exit-hooks.d dhcpd.conf
[root@xiaolei dhcp]# cp dhcpd.conf /etc/dhcp/dhcpd.conf.bak ###创建一个备份
[root@xiaolei dhcp]# ls
dhclient.d dhcpd6.conf dhcpd.conf.bak
dhclient-exit-hooks.d dhcpd.conf scripts
[root@xiaolei dhcp]# vim /etc/dhcp/dhcpd.conf ###编辑dhcpcd
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
###4yy复制上面4行p进行粘贴
subnet 192.168.88.0 netmask 255.255.255.0 {
range 192.168.88.10 192.168.88.20;
option routers 192.168.88.2;
} ###设置好网段、子网掩码、IP地址池范 围,路由选项指向网关
4.4.5 重启网卡、dhcp,重新启用dhcp服务
[root@xiaolei dhcp]# systemctl restart network
[root@xiaolei dhcp]# systemctl restart dhcpd
[root@xiaolei dhcp]# systemctl status dhcpd
4.4.6 新开一台虚拟机进行仅主机操作(Vmnet2仅主机模式)
4.4.7 刷新网卡,通过DHCP获取IP
4.4.8新开一台win10虚拟机进行仅主机操作(Vmnet2仅主机模式)
关闭防火墙更改网络适配器选项——禁用——启用刷新一下,勾选自动获得IP地址
打开终端
4.4.9 查看租约
[root@xiaolei ~]# less /var/lib/dhcpd/dhcpd.leases
lease 192.168.88.10 {
starts 4 2024/08/15 17:35:01;
ends 4 2024/08/15 17:45:01;
cltt 4 2024/08/15 17:35:01;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:c5:8e:11;
client-hostname "xiaowang";
}
lease 192.168.88.11 {
starts 4 2024/08/15 17:38:13;
ends 4 2024/08/15 17:48:13;
cltt 4 2024/08/15 17:38:13;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:9d:fe:1b;
uid "\001\000\014)\235\376\033";
client-hostname "DESKTOP-P7DU5U2";
}
5、FTP网络服务
5.1 FTP概述
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application),基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
5.2 VSFTP
5.2.1 FTP服务器默认使用TCP协议的20、21端口与客户端进行通信
5.2.2 20端口用于建立数据连接,并传输文件数据
5.2.3 21端口用于建立控制连接,并传输FTP控制指令
5.3 FTP的数据连接模式——默认为被动模式
5.3.1 主动模式——服务器主动发起数据连接
在主动模式下,FTP客户端首先与FTP服务器的默认端口(通常是端口21)建立控制连接。当需要进行数据传输时,客户端会随机选择一个未使用的端口(通常是大于1024的端口)作为源端口,然后告知服务器使用该端口进行数据连接。服务器通过控制连接将数据连接请求发送到客户端的指定端口,建立数据连接并进行数据传输。
5.3.2 被动模式——服务器被动等待数据连接
在被动模式下,FTP客户端首先与FTP服务器的默认端口(通常是端口21)建立控制连接。当需要进行数据传输时,服务器会随机选择一个未使用的端口(通常是大于1024的端口)作为源端口,并将该端口告知客户端。客户端通过控制连接向服务器指定的端口发起数据连接,建立数据连接并进行数据传输。
主动模式和被动模式在数据连接的建立方式上有所区别,主要涉及客户端和服务器之间数据连接的建立和传输。在网络环境复杂或存在防火墙的情况下,被动模式通常更容易穿越防火墙,因此在实际应用中被广泛使用。
6、安装配置vsftpd步骤
6.1 检查vsftpd安装包是否存在,存在即不需要安装
[root@xiaolei ~]# rpm -qa vsftpd
6.2 安装vsftpd软件包
[root@xiaolei ~]# yum install -y vsftpd
6.3 切换到安装好vsftpd目录下查看文件
[root@xiaolei ~]# cd /etc/vsftpd/
[root@xiaolei vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
6.4 将vsftpd的配置文件进行备份
[root@xiaolei vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@xiaolei vsftpd]# ls
ftpusers vsftpd.conf vsftpd_conf_migrate.sh
user_list vsftpd.conf.bak
6.5 vsftpd初始化全局配置
[root@xiaolei ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问。默认已开启
local_enable=YES #允许系统用户进行访问(useradd zhangsan)
write_enable=YES #开放服务器的写权限(若要上传,必须开启)。默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
6.6 让匿名用户拥有访问本机和各种权限
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释,x删除#
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES #允许删除、重命名、覆盖等操作。需添加
6.7 重启vsftpd服务,关闭安全防护
[root@xiaolei ~]# systemctl restart vsftpd
[root@xiaolei ~]# systemctl stop firewalld
[root@xiaolei ~]# setenforce 0
6.8 赋予匿名访问权限
[root@xiaolei pub]# chmod 777 /var/ftp/pub/ ###这是匿名用户的默认根目录
6.9 匿名用户的默认根目录下创建一个文件
[root@xiaolei pub]# echo 'hello word'>test.txt
[root@xiaolei pub]# ls
test.txt
[root@xiaolei pub]# cat test.txt
hello word
6.10 匿名访问测试
在Windows系统打开win+R,输入cmd 命令打开命令提示符
ftp 192.168.88.2 #建立ftp连接
#匿名访问,用户名为ftp,密码为空,直接回车即可完成登录
ftp> pwd #匿名访问ftp的根目录为Linux系统的/var/ftp/目录
ftp> ls #查看当前目录
ftp> cd pub #切换到pub目录
ftp> get test.txt #下载文件到当前Windows本地目录
ftp> cd pub
250 Directory successfully changed.
ftp> ls
ftp> get test.txt #获取目录中的文件下载到电脑
ftp> put test4.txt #下载文件到服务端本地目录
[root@xiaolei pub]# ls
test1.txt test.txt
[root@xiaolei pub]# cat test1.txt
hello[root@xiaolei pub]#
6.11 匿名用户权限过高,存在安全隐患,设置本地用户验证访问ftp,禁止匿名用户登录
6.11.1 创建本地用户并设置密码
[root@xiaolei ftp]# useradd zhangsan
[root@xiaolei ftp]# useradd lisi
[root@xiaolei ftp]# echo ‘123123’ | passwd --stdin zhangsan
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
[root@xiaolei ftp]# echo ‘123123’ | passwd --stdin lisi
Changing password for user lisi.
passwd: all authentication tokens updated successfully.
6.11.2 编辑本地用户访问配置
[root@xiaolei ~]# vi /etc/vsftpd/vsftpd.conf
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
6.11.3 对本地用户访问切换目录进行限制
添加、切换目录的限制配置 :
[root@xiaolei ~]# vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将访问禁锢在用户的宿主目录中 取消注释即可
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
systemctl restart vsftpd #重启配置
6.11.4 黑名单和白名单的使用
在安装vsftpd服务后,官方贴心的为我们在服务目录中提供了user_list ,(其中就是为了我们更好利用黑名单和白名单的手册)。
黑名单:在黑名单上标记的用户,是我们禁止访问的对象。
白名单:在白名单上标记的用户是我们允许访问的对象,白名单比黑名单的制定更为严格和安全。
黑名单
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=YES #默认为YES,为黑名单,禁止user_list名单上的用户进行访问
白名单
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=NO #设置白名单,仅允许user_list用户列表文件的用户访问。
要想使用root用户,需要把ftpusers里面的root用户注销掉即可
[root@xiaolei ~]# cd /etc/vsftpd/
[root@xiaolei vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@xiaolei vsftpd]# cat user_list
[root@xiaolei vsftpd]# vim /etc/vsftpd/user_list
news
uucp
operator
games
nobody
zhangsan ###zhangsan加入白名单
[root@xiaolei vsftpd]# systemctl restart vsftpd
7、补充 :vlan作用、网络相关查询指令
7.1 vlan的作用
隔离广播域
方便管理
帮助合理使用IP
7.2 网络相关查询指令
ifconfig
traceroot
nslookup
nmap
netstat
ping
tcpdump