目录
一、了解DHCP服务
1.定义
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)
- 由Internet工作任务小组设计开发。
- 专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。
2.使用DHCP的好处
- 减少管理员的工作量
- 避免输入错误的可能
- 避免IP地址冲突
- 当更改IP地址段时,不需要重新配置每个用户的IP地址
- 提高了IP地址的利用率
- 方便客户端的配置
3.DHCP的分配方式
- 自动分配:分配到一个IP地址后永久使用
- 手动分配:由DHCP服务器管理员专门指定IP地址
- 动态分配:使用完后释放该IP,供其他客户机使用
4.DHCP可分配的地址信息
可分配的地址信息主要包括:
- 网卡的IP地址、子网掩码
- 对应的网络地址、广播地址
- 默认网关地址
- DNS服务器
二、DCHP的租约过程
1.租约过程
客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程
分为四个步骤:
- 客户端在网络中搜索服务器
- 服务器向客户端响应服务
- 客户端向目标服务器发出服务请求
- 服务器向客户端提供服务
1.1 客户机请求IP地址
- 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法地址
- 此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器
1.2 服务器响应
- DHCP服务器收到来自客户机请求IP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机
- 如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则DHCP Offer消息
1.3 客户机选择IP地址
- DHCP客户机从接受到的第一个DHCP Offer消息中提取IP地址,并且回复一个DHCP Request报文,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
1.4 服务器确定租约
- DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息
- 当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP的初始化
1.5 重新登录
- DHCP客户机每次重新登录网络是,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Discover请求信息
1.6 更新租约
- 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约
- 客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约
三、DHCP场景应用实验
1.实验环境
3台机器:
- CentOS 7-1 :DHCP服务端 (为了实验方便,将此IP定义为该网段的网关)
- CentOS 7-2 :DHCP客户端
- Windows 10 :DHCP客户端
网络环境:
- 均VMnet2(仅主机)模式
- 关闭虚拟编辑中的DHCP
- 确定VMnet2的IP地址段
系统环境:
- 安装dhcp软件包
- 机器均关闭防火墙与核心服务
2.操作步骤
1.修改CentOS 7-1 服务端的网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
...
BOOTPROTO=static #静态IP
......
IPADDR=192.168.10.2 #VMnet2网段的网关地址,此处拟定网段为192.168.10.0/24
NETMASK=255.255.255.0
systemctl restart network #重启网卡
2.编辑dhcp全局配置文件,设置好对应的网络池
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vi /etc/dhcp/dhcpd.conf
......
subnet 192.168.10.0 netmask 255.255.255.0{ #DHCP网段
range 192.168.10.10 192.168.10.30; #DHCP地址池
option routers 192.168.10.2; #服务端地址
}
......
3.重启网卡,启用dhcp服务
systemctl restart network
systemctl restart dhcpd
systemctl status dhcpd
4.打开CentOS 7-2 客户端,并修改网卡配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
......
BOOTPROTO=dhcp #改为动态获取IP
......
5.刷新网卡,通过DHCP获取IP
systemctl restart network
ifconfig ens33
......
ens33......
inet:192.168.10.10...... #查看是否自动获取了IP地址
......
6.在CentOS 7-1 服务端中查看租约
less /var/lib/dhcpd/dhcpd.lease
四、vsftp场景应用实验
1.实验环境
2台机器(均为同一网段):
- CentOS 7-1
- Windows 10
网络环境:
- 均VMnet2(仅主机)模式
- 关闭虚拟编辑中的DHCP
- 均为同一网段
系统环境:
- 安装vsftpd软件包
- 机器均关闭防火墙与核心服务
2.操作步骤
2.1 配置匿名访问
1.配置vsftpd.conf配置文件
vim /etc/vsftpd/vsftpd.conf
......
#初始化全局配置
anonymous_enable=YES #开放匿名用户访问(默认已开启)
local_enable=YES #允许系统用户进行访问
write_enable=YES #开放服务器的写权限(默认已开启)
anon_unmak=022 #设置匿名用户的反掩码
#让匿名用户访问本机并拥有各种权限
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录
anon_other_write_enable=YES #允许删除、重命名、覆盖等操作
......
systemctl restart vsftpd #重启vsftpd服务
chmod 777 /var/ftp/pub #设置ftp共享文件的权限
2.匿名访问测试
cd /var/ftp/pub
echo 'hello world!' > test.txt
- 在Windows 10 系统打开开始菜单,输入cmd 命令打开命令提示符:
#建立ftp连接
ftp 192.168.10.2
#匿名访问,用户名为ftp,密码为空,直接回车即可完成登录
ftp> pwd #匿名访问ftp的根目录为Linux系统的/var/ftp/目录
ftp> ls #查看当前目录
ftp> cd pub #切换到pub目录
250 Directory successfully changed.
ftp> ls
ftp> get test.txt #获取目录中的文件下载到电脑
ftp> ls
ftp> put test2.txt #上传文件到CentOS 7-1
2.2 配置本地用户访问ftp,禁止匿名用户登录
1.配置vsftpd.conf配置文件
useradd zhangsan #添加用户
echo '123' | passwd --stdin zhangsan #修改密码
useradd lisi
echo '123' | passwd --stdin lisi
vim /etc/vsftpd/vsftpd.conf
......
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限
systemctl restart vsftpd #重启vsftpd服务
2.测试
- Window10 cmd输入:
ftp 192.168.10.2
name:ftp #匿名用户
#访问拒绝
ftp 192.168.10.2
name:zhangsan
passwd:123
#访问成功
2.3 对本地用户访问切换目录进行限制
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
systemctl restart vsftpd
2.4 修改匿名用户、本地登录的默认目录
anon_root=/var/www/html #修改匿名用户的默认目录
local_root=/var/www/html #修改本地用户的默认目录
2.5 黑名单、白名单的使用
- 在安装vsftpd服务后,官方贴心的为我们在服务目录中提供了user_list (其中就是为了我们更好利用黑名单和白名单的手册)
- 黑名单:在黑名单上标记的用户,是我们禁止访问的对象。
- 白名单:在白名单上标记的用户是我们允许访问的对象,白名单比黑名单的制定更为严格和安全
名单文件:/etc/vsftpd/user_list
若欲修改名单,在user_list中增删用户名即可
vim /etc/vsftpd/vsftpd.conf
......
#黑名单
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=YES #默认为YES,为黑名单,禁止user_list名单里的用户进行访问
白名单
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=NO #NO为白名单,仅允许user_list名单里的用户访问。