网络服务之DHCP
DHCP是什么
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),由Internet工作任务小组设计开发,专门用于为TCP/IP网络中计算机自动分配TCP/IP参数的协议。
DHCP是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。 默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
DHCP采用C/S架构,C-client(客户机),S-server(服务器),客户机/服务器架构
DHCP服务采用传输层UDP协议,客户机使用UDP协议的68端口,服务器使用UDP的67端口。
DHCP的租约过程
- 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约;
- 客户机直接向提供租约的服务器发送
DHCP Request包,要求更新现有的地址租约。 - 当租约到期前,DHCP服务器还没有收到客户机的请求,就会释放该IP地址。
DHCP配置文件
DHCP服务的配置文件为/etc/dhcp/dhcpd.conf。
配置文件参数含义:
# 设置全局配置参数
option domain-name "example.org"; //指定默认域名
option domain-name-servers 202.106.0.20,202.106.148.1; //指定DNS服务器地址
default-lease-time 600; //默认租约600秒(10分钟)
max-lease-time 7200; //最大租约为7200秒(2小时)
ddns-update-style none; //禁用DNS动态更新
# subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.100.0 netmask 255.255.255.0 { //声明要分配的网段地址
range 192.168.100.128 192.168.100.200; //设置地址池
option routers 192.168.100.10; //指定默认网关地址
# host主机声明(给单机分配固定的IP地址)
host hgstname{ //指定需要分配固定IP地址的客户机名称
hardware ethernet 00:c0:c3:22:46:81; //指定该主机的MAC地址
fixed-address 192.168.4.100; //指定保留给该主机的IP地址
实验:设置DHCP服务器并分配地址
步骤1、Linux虚拟机关闭防火墙和selinux。
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
步骤2、安装 dhcp 软件包,并查看配置文件。
[root@localhost ~]# yum install dhcp -y //安装dhcp
[root@localhost ~]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf //dhcp的配置文件
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
步骤3将Linux虚拟机的网络模式改成仅主机模式
步骤4、编辑dhcp服务的配置文件/etc/dhcp/dhcpd.conf,设置网段(要和虚拟网络编辑器中的保持一致)、地址池、网关地址。之后重启dhcp服务。
# 将模板文件复制为配置文件
[root@localhost ~]# cd /usr/share/doc/dhcp-4.2.5/
[root@localhost dhcp-4.2.5]# ls
dhcpd6.conf.example dhcpd.conf.example ldap
[root@localhost dhcp-4.2.5]# cp dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
# 编辑dhcp配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
------------------------------------
27 subnet 192.168.137.0 netmask 255.255.255.0 { //设置子网IP、子网掩码
28 range 192.168.137.20 192.168.137.80; //设置地址池
29 option routers 192.168.137.10; //设置网关地址
30 }
host test { 定义静态分配IP
hardware ethernet 00:80:23:df:23:3d; 对应的mac
fixed-address 192.168.71.88; 对应的ip(在动态分配地址范围外)
}
# 重启dhcp服务
[root@localhost ~]# systemctl restart dhcpd //重启dhcp服务
[root@localhost ~]# systemctl status dhcpd //查看dhcp状态,已启动
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: active (running) since 三 2022-03-16 22:17:19 CST; 5s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 87982 (dhcpd)
Status: "Dispatching packets..."
CGroup: /system.slice/dhcpd.service
└─87982 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group ...
步骤5、修改客户端网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33,之后重启网络服务。
[root@localhost ~]# vim /sysconfig/net-scripts/ifcfg-ens33 //修改网卡配置文件
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl restart network //重启网络服务
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.137.100 netmask 255.255.255.0 broadcast 192.168.137.255
inet6 fe80::a5da:ff58:2c32:2b5f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:b5:ff txqueuelen 1000 (Ethernet)
RX packets 471514 bytes 311413414 (296.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 228702 bytes 61948898 (59.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
DHCP中继原理
当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置了VLAN,网络内配置了VLAN,VLAN能隔离广播,而DHCP协议使用广播。
DHCP服务器在VLAN 100中,就只有VLAN 100内的客户机能从此内获得IP地址。
两种解决办法:
-
为每个网段安装一台DHCP服务器,但这种方式存在资源上的浪费,而且不利于集中管理。
-
在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器获得IP地址。
网络服务之ftp
ftp的简介
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信 20端口用于建立数据连接,并传输文件数据 21端口用于建立控制连接,并传输FTP控制命令
ftp的数据连接模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间 随机
vsftpd的安装和配置
vsftpd安装
rpm -qc vsftpd //检查vsftpd安装包是否存在,存在即不需要安装
yum install -y vsftpd //yum 安装vsftpd
cd /etc/vsftpd
ls //切换到安装好vsftpd目录下查看文件
cp vsftpd.conf vsftpd.conf.bak //将vsftpd的配置文件进行备份
配置文件详解
anonymous_enable=YES:开启匿名用户访问。
local_enable=YES:启用本地系统用户访问。
write_enable=YES:本地系统用户写入权限。
local_umask=022:本地用户创建文件及目录默认权限掩码。
dirmessage_enable=YES:打印目录显示信息,通常用于用户第一次访问目录时,信息提示。xferlog_enable=YES:启用上传/下载日志记录。
connect_from_port_20=YES FTP:使用20端口进行数据传输。
xferlog_std_format=YES:日志文件将根据xferlog的标准格式写入。
listen=NO:Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES。
listen_ipv6=YES:启用IPv6监听。
pam_service_name=vsftpd:登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证。userlist_enable=YES:vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP。
Vsftpd匿名用户配置
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问。默认已开启
local_enable=YES #允许系统用户进行访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)。默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
让匿名用户拥有访问本机和各种权限
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES #允许删除、重命名、覆盖等操作。需添加
cd /var/ftp 这是匿名用户的默认根目录
echo 'hello world!' > test.txt
需要Vsftpd用户对/var/ftp/pub目录有写入权限,使用chown和chmod任意一种命令均可设置权限,具体设置命令如下:
chown - R ftp pub/
chmod o+ w pub/
重启vsftpd服务,关闭安全防护
[root@localhost vsftpd]#systemctl restart vsftpd
[root@localhost vsftpd]#systemctl stop firewalld
[root@localhost vsftpd]#setenforce 0
在电脑上CMD:
ftp 192.168.233.21
用户名:ftp,其他的会报错
密码直接回车
get test.txt
发送文件:
put test1.txt
存在的缺点:匿名用户权限过高,存在安全隐患
Vsftpd系统用户配置
设置本地用户验证访问ftp
设置本地用户可以访问ftp,禁止匿名用户登录
[root@localhost ftp]# useradd zhangsan
[root@localhost ftp]# echo '123' | passwd --stdin zhangsan
[root@localhost ftp]# useradd lisi
[root@localhost ftp]# echo '123' | passwd --stdin lisi
vim /etc/vsftpd/vsftpd.conf
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
ftp 192.168.233.21
zhangsan
123
OK
对本地用户访问切换目录进行限制
添加切换目录的限制配置 :
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
systemctl restart vsftpd
C:\Users\DING>ftp 192.168.233.21
连接到 192.168.233.21。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.233.21:(none)): zhangsan
331 Please specify the password.
密码:
230 Login successful.
ftp> cd /etc
550 Failed to change directory.
ftp>
除此之外还能修改ftp服务访问时,宿主家目录,让它的家目录成为我们指定的地方
修改 vsftpd.conf (在响应的版块添加即可,保存退出重启服务)
修改匿名用户、本地用户登录的默认根目录
anon_root=/var/www/html #anon_root 针对匿名用户
local_root=/var/www/html #local_root 针对系统用户
黑名单和白名单的使用
在安装vsftpd服务后,官方贴心的为我们在服务目录中提供了user_list (其中就是为了我们更好利用黑名单和白名单的手册)。
黑名单:在黑名单上标记的用户,是我们禁止访问的对象。
白名单:在白名单上标记的用户是我们允许访问的对象,从某种意义上来讲,白名单比黑名单的制定更为严格和安全。
黑名单的使用
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=YES #黑名单,禁止user_list名单上的用户进行访问
systemctl restart vsftpd
C:\Users\DING>ftp 192.168.233.21
连接到 192.168.233.21。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.233.21:(none)): zhangsan
530 Permission denied.
登录失败。
ftp> quit
221 Goodbye.
C:\Users\DING>ftp 192.168.233.21
连接到 192.168.233.21。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.233.21:(none)): lisi
331 Please specify the password.
密码:
230 Login successful.
ftp>
张三不能输入密码
也可以在windows输入文件同步:
ftp://lisi@192.168.233.21
lisi
123
rz 文件名 #下载指定文件到服务器
sz 文件名 #把服务器的文件下载到客户端
ftp总结
-
一定要关闭防火墙和selinux。
-
使用get从服务端下载文件时,用户ftp对该文件必须拥有r权限(即读取权限),否则无法下载。例如/etc/passswd 文件,普通用户没有读取权限,无法下载该文件。
-
get和put 不支持对目录文件进行下载和上传,必须先使用tar命令将目录进行归档压缩,之后才能下载或上传。
-
用户ftp对/var/ftp目录,不能拥有w权限,否则ftp用户不能登录访问。
-
ftp用户在/var/ftp/pub目录下上传文件时,必须对pub目录拥有wx权限(即写入和执行权限),否则上传文件会提示失败,不支持创建文件,因为没有写入权限。
-
put 上传文件时,不支持绝对路径,想要上传的文件必须在客户端的当前目录内。 例如当前是在/root目录下使用ftp连接服务端,想要上传/tmp/file01文件,必须先将file01复制到/root目录下,之后使用“put file01”或“put ./file01”命令删上传,不支持“put /tmp/file01"这种格式 。
。