一、DHCP
1. DHCP概述
DHCP(动态主机配置协议)是一种网络管理协议,用于自动分配IP地址给网络中的设备。在Linux系统中,DHCP服务允许用户自动管理IP地址,而不用手动为每个设备分配静态IP地址。
DHCP服务采取C/S架构,也就是客户端/服务端架构;C指Client、客户端,S指Server,服务端。客户端是某种功能的使用者,服务端是某种功能的提供者。对应在DHCP中,客户端是请求IP地址,服务端是分配IP地址。
DHCP使用的是UDP协议,服务端端口是UDP/67,客户端端口是UDP/68。
与手动分配IP地址相比,DHCP具有以下优点:
- 减少配置和部署设备的时间。
- 降低配置网络的错误发生率。
- 集中管理IP的分配。
- 提高了IP地址的使用率。
2. DHCP的工作原理
- 客户端初始化时,以广播的形式发送一个discover报文,询问网络当中的DHCP服务端。
- 服务端收到客户端发送的报文后,会回复给客户端一个包含分配的IP地址和其他网络信息的offer报文。
- 客户端接收第一个到达的offer报文,然后发送request报文。
- 服务端收到request报文后,会回复一个ACK报文给客户端,报文中包括分配的IP地址和租期等相关信息。
- 客户端收到ACK报文,使用服务端使用的IP地址。
当租期过去一半的时候,客户端会发送一个包含之前分配的IP地址等信息的request报文给服务端,从而请求续约。服务端收到报文后,如果同意续约会发送一个ACK报文。如果服务器没有回应,则会继续使用原有IP直到到期;而如果服务端一直没收到续约请求,则会在到期后将分配的IP地址释放回地址池。
租期到期后,客户端下线。此时客户端不会再广播查找服务端,而是直接发送一个request报文给原分配IP地址的服务端来请求IP地址。
3. DHCP配置实验
3.1 Ubuntu系统
-
在DHCP服务端安装DHCP服务。
apt -y install isc-dhcp-server
-
编辑DHCP配置文件/etc/dhcp/dhcpd.conf,在文件中设置服务端的的IP地址池。具体配置内容如下:
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.20 192.168.1.21; option routers 192.168.1.254; }
- subnet 192.168.1.0:子网网段。
- netmask 255.255.255.0:子网掩码。
- range 192.168.1.20 192.168.1.21:地址池IP的范围,分别是起始IP、终止IP。
- option routers 192.168.1.254:默认网关。
-
保存配置文件后,重启DHCP服务。
systemctl restart isc-dhcp-server
-
修改客户端的网卡配置文件,启用DHCP分配。如果原先设置了静态IP,就需要将IP地址注释或删除。
network: ethernets: ens33: dhcp4: true
-
保存网卡配置文件后,重启网络服务。
systemctl restart systemd-networkd
-
查看客户端的IP。
ip a
-
还可以通过查看服务端日志文件,来查看DHCP的IP地址分配过程。
tail -f /var/log/syslog
3.2 CentOS系统
-
关闭防火墙和安全防护。
systemctl stop firewalld setenforce 0
-
安装DHCP服务。
yum -y install dhcp
-
复制DHCP配置文件模板。
cp -f /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
-
编辑DHCP配置文件/etc/dhcp/dhcpd.conf,在文件中设置服务端的的IP地址池。具体配置内容如下:
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.11; option routers 192.168.1.254; }
- subnet 192.168.1.0:子网网段。
- netmask 255.255.255.0:子网掩码。
- range 192.168.1.10 192.168.1.11:地址池IP的范围,分别是起始IP、终止IP。
- option routers 192.168.1.254:默认网关。
-
保存配置文件后,重启DHCP服务。
systemctl restart dhcpd
-
修改客户端的网卡配置文件,启用DHCP分配。如果原先设置了静态IP,就需要将IP地址注释或删除。
BOOTPROTO=dhcp
-
保存网卡配置文件后,重启网络服务。
systemctl restart network
-
查看客户端的IP。
ip a
-
还可以通过查看服务端日志文件,来查看DHCP的IP地址分配过程。
tail -f /var/log/messages
二、FTP
1. FTP概述
FTP(File Transfer Protocol、文件传输协议),它是一种用于在网络上进行文件传输的协议。FTP主要用于在客户端和服务器之间传输计算机文件,用户可以通过FTP协议进行文件的上传、下载和管理。和DHCP协议相同,也是C/S架构。FTP有两个端口:TCP/20端口和TCP/21端口;TCP/20端口由于传输数据,TCP/21端口由于控制连接。
FTP数据连接的方式有两种,主动模式和被动模式。被动模式下,服务端打开一个端口等待客户端连接;而主动模式下,客户端打开一个端口等待服务端连接。
2. 黑名单和白名单
黑名单(Blacklist)和白名单(Whitelist)是两种常用的访问控制列表,用于确定哪些用户、IP地址等实体被允许或禁止执行某些操作或访问某些资源。在实际使用中,出于保护数据安全的目的,主要是采用白名单策略,也就是拒绝大部分、允许少部分。
FTP的黑名单和白名单是用于控制用户对FTP服务器访问权限的两种列表。黑名单是一个包含被禁止访问FTP服务器的用户的列表。当FTP服务器配置为使用黑名单时,列表中的用户将无法登录到FTP服务器。白名单是一个包含被允许访问FTP服务器的用户的列表。当FTP服务器配置为使用白名单时,只有列表中的用户可以登录到FTP服务器。下面是以fsftpd服务为例的FTP黑名单和白名单配置流程。
- 黑名单配置:
- 配置文件vsftpd.conf中的userlist_enable设置为YES。
- 设置userlist_deny=YES以启用黑名单。
- 在user_list文件中添加需要禁止的用户名。
- 重启FTP服务以应用更改。
- 白名单配置:
- 配置文件vsftpd.conf中的userlist_enable设置为YES。
- 设置userlist_deny=NO以启用白名单。
- 在user_list文件中添加需要允许的用户名。
- 重启FTP服务以应用更改。
3. FTP配置实验
-
下载vsftp,vsftp是一款基于ftp协议的开源软件。
apt -y install vsftpd
-
编辑vsftp的配置文件/etc/vsftpd.conf,修改文件的以下内容。
listen=YES listen_ipv6=NO anonymous_enable=YES write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES
- listen=YES:设置为YES表示vsftpd基于IPv4协议在端口21上监听连接。
- listen_ipv6=YES:表明不基于IPv6协议监听连接,和IPv4一起开启会导致冲突,从而使得FTP服务无法正常启动。
- anonymous_enable=YES:允许FTP匿名用户访问。
- write_enable=YES:允许用户(包括匿名用户)上传文件到FTP服务器
- anon_upload_enable=YES:允许匿名用户上传文件。
- anon_mkdir_write_enable=YES:允许匿名用户创建新目录。
-
保存文件后,重启vsftpd服务。
systemctl restart vsftpd
-
在/srv/ftp目录下创建一个public目录,设置目录权限为777。
mkdir /srv/ftp/pblic chmod -R 777 /srv/ftp/pblic
- 安装完FTP服务后,会自动创建一个/srv/ftp目录和一个ftp用户。/srv/ftp目录是默认的ftp根目录,ftp用户也就是匿名用户。
- 要想实现匿名用户登录,还需要在ftp目录下创建一个拥有可写权限的目录。匿名用户的根目录不允许写,即使是匿名用户也不能直接在ftp目录下写入,所以需要创建一个子目录。
-
打开其他主机的终端,比如WIndows系统的CMD界面。输入下面的命令,使用匿名用户登录,进行ftp连接。
C:\Users\31093>ftp 192.168.1.128 连接到 192.168.1.128。 220 (vsFTPd 3.0.5) 200 Always in UTF8 mode. 用户(192.168.1.128:(none)): ftp 331 Please specify the password. 密码: 230 Login successful. ftp>
-
要想设置FTP的白名单,还需要在vsftp服务的配置文件中写入以下内容:
userlist_file=/etc/vsftpd.userlist userlist_enable=YES userlist_deny=NO
- userlist_file=/etc/vsftpd.userlist:设置用户名单文件的路径。
- userlist_enable=YES:启用用户名单。
- userlist_deny=NO:启用白名单。
在设置的用户名单文件中加入白名单用户。
ljj
配置完成后,重新启动服务。
systemctl restart vsftpd
查看登录效果,白名单设置成功。
C:\Users\31093>ftp 192.168.1.128 连接到 192.168.1.128。 220 (vsFTPd 3.0.5) 200 Always in UTF8 mode. 用户(192.168.1.128:(none)): ljj 331 Please specify the password. 密码: 230 Login successful. ftp> quit 221 Goodbye. C:\Users\31093>ftp 192.168.1.128 连接到 192.168.1.128。 220 (vsFTPd 3.0.5) 200 Always in UTF8 mode. 用户(192.168.1.128:(none)): ftp 530 Permission denied. 登录失败。 ftp>
-
要设置黑名单,就是将配置文件中的userlist_deny属性值修改为YES。在用户名单加入的用户名,就是黑名单拒绝访问的用户。