文章目录
DHCP原理
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络协议,用于自动为TCP/IP网络中的计算机分配IP地址、子网掩码、默认网关、DNS服务器地址等配置信息。它的设计初衷是简化网络管理,降低手动配置IP地址的复杂性和错误率。
一、DHCP概述
- 起源与发展:DHCP的前身是BOOTP协议(Bootstrap Protocol),BOOTP被创建出来为连接到网络中的设备自动分配地址,后来被DHCP取代。DHCP由Internet工作任务小组设计开发,是一个应用层协议,使用UDP的67(DHCP Server)和68(DHCP Client)端口进行通信。
- 主要功能:DHCP主要分配的参数包括IP地址、子网掩码、广播地址、默认的网关地址、DNS服务器地址等,还可以提供PXE引导设置(如TFTP服务器地址、引导文件名)。
二、DHCP的工作原理
DHCP采用C/S(客户端/服务器)模式,其工作原理主要包括以下几个步骤:
- DHCP Discover(发现):
- 当DHCP客户机启动时,如果还没有配置IP地址,它会以广播方式发送一个DHCP Discover报文,请求DHCP服务器分配IP地址。
- DHCP Offer(提供):
- 当DHCP服务器接收到DHCP Discover报文后,它会在自己的IP地址池中查找是否有合法的IP地址可以提供给客户机。如果有,DHCP服务器会向客户机发送一个包含IP地址及其他相关配置信息的DHCP Offer报文。
- DHCP Request(请求):
- 客户机从接收到的多个DHCP Offer报文中选择一个(通常是第一个),并向该DHCP服务器发送DHCP Request报文,请求正式分配该IP地址。
- DHCP ACK(确认):
- DHCP服务器在收到DHCP Request报文后,会发送一个DHCP ACK报文给客户机,确认IP地址的分配。客户机在收到DHCP ACK报文后,会配置自己的IP地址及其他相关参数,完成TCP/IP的初始化。
- 总结:
- 发现阶段(DHCP Discover):客户端广播DHCP Discover报文,请求IP地址配置。
- 提供阶段(DHCP Offer):DHCP服务器收到请求后,通过DHCP Offer报文分配一个IP地址给客户端。
- 请求阶段(DHCP Request):客户端选择接受DHCP Offer中的IP地址,并发送DHCP Request报文确认。
- 确认阶段(DHCP Acknowledge):DHCP服务器发送DHCP Ack报文,确认客户端已获得分配的IP地址和配置信息。
三、DHCP的分配方式
DHCP支持三种IP地址分配方式:
- 自动分配:DHCP服务器为客户机分配一个永久的IP地址,直到客户机被显式释放或租约到期。
- 手动分配:由DHCP服务器管理员专门指定IP地址给客户机。
- 动态分配:DHCP服务器在一定期限内将IP地址租给客户机使用,租期结束后客户机必须续租或停用该地址。
四、DHCP的租约
DHCP通过租约机制来实现IP地址的动态分配和回收。客户机在获得IP地址后,会进入一个租约期。在租约期内,客户机可以正常使用该IP地址。当租约期达到50%(T1)时,客户机会自动向DHCP服务器发送续租请求。如果租约期达到87.5%(T2)时 仍未收到服务器的响应,客户机会再次发送续租请求。如果最终租约期结束且未成功续租,客户机将释放IP地址,并可能重新执行DHCP发现过程以获取新的IP地址。
五、DHCP的应用场景
DHCP服务器在网络中扮演着重要角色,广泛应用于各种网络环境,包括家庭网络、办公网络、公共场所网络以及租赁公司网络等。使用DHCP服务器可以极大地简化网络管理工作,提高网络配置的效率和准确性。
综上所述,DHCP通过自动分配和回收IP地址等配置信息,简化了网络管理的复杂性,提高了网络的灵活性和可扩展性。
FTP原理
FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上进行文件传输的标准协议。其原理主要基于客户端/服务器(C/S)模型,通过TCP(传输控制协议)连接实现数据的可靠传输。
一、FTP概述
- 定义:FTP是一种用于在计算机网络上传输文件的协议,它允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。
- 工作层次:FTP工作在OSI模型的第七层(应用层),TCP模型的第四层,使用TCP传输而不是UDP,确保数据传输的可靠性和面向连接性。
二、FTP的工作原理
- 连接建立:
- 客户端向FTP服务器发出连接请求,同时客户端系统动态打开一个大于1024的端口(如1031)等候服务器连接。
- FTP服务器在端口21侦听到该请求后,会在客户端的1031端口和服务器的21端口之间建立起一个FTP会话连接(控制连接)。
- 数据传输:
- 当需要传输数据时,FTP客户端再动态打开一个大于1024的端口(如1032)连接到服务器的20端口,并在这两个端口之间进行数据的传输(数据连接)。
- 数据传输完毕后,FTP客户端将断开与FTP服务器的连接,客户端上动态分配的端口将自动释放掉。
- 命令与响应:
- FTP采用两条TCP连接的方式工作:一条是控制连接,用于传送控制信息(命令和响应);另一条是数据连接,用于数据传送。这种将命令和数据分开传送的思想大大提高了FTP的效率。
- 用户交互:
- 用户通过FTP客户端软件与FTP服务器进行交互,可以执行文件的上传、下载、删除、重命名等操作。
- 用户并不真正登录到自己想要存取的计算机上成为完全用户,而是通过FTP程序访问远程资源。
三、FTP的连接模式
FTP支持两种连接模式:主动模式(Active FTP)和被动模式(Passive FTP)。
- 主动模式:FTP服务器主动连接客户端的数据端口。在这种模式下,FTP服务器使用其TCP 20端口向客户端的随机端口(大于1024)发送数据。由于大多数防火墙不允许外部发起的连接,因此主动模式在通过防火墙时可能会受到限制。
- 被动模式:客户端主动连接FTP服务器的数据端口。在这种模式下,FTP服务器会打开一个大于1024的端口进行监听,并通知客户端该端口号。客户端随后连接到该端口以接收数据。被动模式通常用于防火墙后的FTP客户访问外界FTP服务器。
四、FTP的应用
FTP广泛应用于各种网络环境,包括企业内网、互联网等。它允许用户在不同计算机之间高效地传输文件,支持断点续传、目录管理等功能。同时,FTP也是许多网站和服务器用于提供文件下载服务的主要方式之一。
综上所述,FTP通过其独特的客户端/服务器模型和两条TCP连接的方式,实现了文件在网络上的高效、可靠传输。
配置实例
DHCP配置实例
以下是整理完整DHCP配置实例过程,适用于CentOS 7作为DHCP服务器,以及CentOS 7和Windows 10作为DHCP客户端的场景。
DHCP服务器配置(CentOS 7)
1. 环境准备
- 确保所有虚拟机使用VMware的“仅主机模式”(Vmnet2)网络。
- 关闭VMware的虚拟网络编辑器中的DHCP服务。
- 确定Vmnet2的IP地址范围(例如:192.168.65.0/24)。
- 关闭CentOS 7服务器的防火墙和SELinux。
systemctl stop firewalld
setenforce 0
2. 安装DHCP服务
yum install -y dhcp
3. 配置网络接口
确保DHCP服务器的网络接口(如ens33)配置为静态IP,但不需要设置网关(因为DHCP服务器将作为网关)。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 示例配置
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.65.2
NETMASK=255.255.255.0
DEVICE=ens33
重启网络服务以应用更改。
systemctl restart network
4. 配置DHCP服务
编辑DHCP配置文件。
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
在配置文件中,设置子网和地址池。
subnet 192.168.65.0 netmask 255.255.255.0 {
range 192.168.65.10 192.168.65.50;
option routers 192.168.65.2;
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
5. 启动DHCP服务
systemctl start dhcpd
systemctl enable dhcpd
systemctl status dhcpd
DHCP客户端配置
CentOS 7 客户端
- 将网络接口配置为DHCP。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改为
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=ens33
重启网络服务。
systemctl restart network
ifconfig ens33
Windows 10 客户端
- 在Windows 10上,通常网络接口默认配置为自动获取IP地址(DHCP)。
- 如果不是,可以在“网络和Internet”设置中找到网络适配器,并设置为“自动获取IP地址”。
验证
- 在DHCP客户端上,使用
ipconfig
(Windows)或ifconfig
(Linux)命令查看分配的IP地址。 - 在DHCP服务器上,查看
/var/lib/dhcpd/dhcpd.leases
文件以确认租约信息。
FTP应用实例
vsftpd 安装
# 检查vsftpd安装包是否存在
rpm -qc vsftpd
# 如果不存在,则通过yum安装vsftpd
yum install -y vsftpd
# 切换到vsftpd配置文件目录
cd /etc/vsftpd
ls
# 备份vsftpd配置文件
cp vsftpd.conf vsftpd.conf.bak
vsftpd 配置
初始全局配置
编辑vsftpd.conf
文件以进行基本配置。
vim /etc/vsftpd/vsftpd.conf
在文件中设置以下参数(如果它们已被注释,可以取消注释并修改):
anonymous_enable=YES # 允许匿名用户访问
local_enable=YES # 允许系统用户访问
write_enable=YES # 允许文件写入(上传)
anon_umask=022 # 匿名用户上传文件的umask值
匿名用户高级配置
为匿名用户提供更多权限。
anon_upload_enable=YES # 允许匿名用户上传文件
anon_mkdir_write_enable=YES # 允许匿名用户创建目录
anon_other_write_enable=YES # 允许匿名用户删除、重命名文件
注意: 这些设置提供了较高的匿名用户权限,可能带来安全风险。
重启vsftpd服务
systemctl restart vsftpd
关闭防火墙和SELinux(可选,出于安全考虑,在生产环境中还请遵照具体情况决定)
systemctl stop firewalld
setenforce 0
设置匿名用户根目录权限
chmod 777 /var/ftp/pub/
echo 'hello world!' > /var/ftp/pub/test.txt
匿名访问测试
使用Windows的FTP客户端连接到FTP服务器,并进行测试。
本地用户验证访问配置
禁用匿名访问并启用本地用户访问
# 添加本地用户
useradd zhangsan
echo '123' | passwd --stdin zhangsan
useradd lisi
echo '123' | passwd --stdin lisi
# 修改vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
anonymous_enable=NO
write_enable=YES
local_umask=077
限制本地用户访问目录
chroot_local_user=YES
allow_writeable_chroot=YES
修改本地用户和匿名用户的默认根目录
# 对于匿名用户
anon_root=/var/www/tml
# 对于本地用户
local_root=/var/www/html
黑名单和白名单
黑名单
userlist_enable=YES
userlist_deny=YES
在/etc/vsftpd/user_list
文件中添加要禁止的用户名。
白名单
userlist_enable=YES
userlist_deny=NO
在/etc/vsftpd/user_list
文件中添加允许访问的用户名。
允许root用户访问(如果需要)
编辑/etc/vsftpd/ftpusers
文件,注释掉root
行(或删除该行)。
验证配置
重启vsftpd服务,并再次使用FTP客户端测试所有配置是否按预期工作。
systemctl restart vsftpd
其他安全性考虑
- 不要在生产环境中给予匿名用户过多权限。
- 定期检查FTP日志以识别任何可疑活动。
- 考虑使用更安全的认证机制,如SFTP(通过SSH)。