第九章 常用服务器的搭建

第九章 常用服务器的搭建

1.配置FTP服务器

1.1.FTP简介

​ FTP(File Transfer Protocol,文件传送协议)是TCP/IP网络上两台计算机间传送文件的协议,FTP是在TCP/IP网络和Internet上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件、上传文件、创建或改变服务器上的目录。FTP服务一般运行在20和21两个端口。端口20用于在FTP客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向FTP服务器的入口。当数据通过数据流传输时,控制流处于空闲状态。

​ FTP的优点如下:

  1. 促进文件(计算机程序或数据)的共享;
  2. 鼓励间接或者隐式使用远程计算机;
  3. 向用户屏蔽不同主机中各种文件存储系统的细节;
  4. 能够可靠和高效的传输数据。

​ FTP的缺点如下:

  1. 密码和文件内容都是用明文传输,可能遭受窃听;
  2. 因为必须开放一个随机的端口来建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流浪。这个问题通过使用被动模式的FTP基本上得到了解决;
  3. 服务器可能会被告连接一个第三方计算机的保留端口。

​ 在FTP的使用中,有两个经常遇到的概念:下载(download)和上传(upload)。下载文件就是从远程主机复制文件到自己的计算机;上传文件就是从自己的计算机复制至远程主机。

1.2.安装FTP服务器

​ 在Ubuntu下常用的FTP服务器软件是vsftpd(very secure FTP daemon)。

  • 安装FTP服务器软件:
shell 复制代码
apt-get install vsftpd

​ 安装完成后,系统会在/etc/init.d目录下创建一个vsftpd的文件脚本,并会在系统的启动过程中自动运行vsftpd守护进程。在终端下,使用命令显示/etc/init.d/vsftpd文件内容,并可以使用pidof命令查看守护进程的PID

shell 复制代码
cat /etc/init.d/vsftpd
shell 复制代码
pidof vsftpd
  • vsftpd程序的启动、停止和重新启动:
shell 复制代码
service vsftpd start					# 启动vsftpd
service vsftpd stop 					# 停止vsftpd
service vsftpd restart					# 重启vsftpd

1.3.配置FTP服务器

​ vsftpd的配置文件是/etc/vsftpd.conf。在Shell终端下,可以通过cat命令查看vsftpd.conf的内容。常用的参数如下:

  • anonymous_enable:是否允许匿名用户登录
  • local_enable:是否允许系统用户登录
  • write_enable:是否允许使用任何可以修改文件系统的FTP命令
  • anon_upload_enable:是否允许匿名用户上传文件
  • anon_mkdir_write_enable:是否允许匿名用户创建新目录
  • idle_session_timeout:空闲连接超时时间
  • data_connection_timenout:数据传输超时时间

​ 安装vsftpd后,需要进行一些设置,才能利用FTP客户端正常使用FTP服务器,具体设置步骤如下:

  1. 为FTP服务器添加用户,使用以下命令添加一个myftp的用户:
shell 复制代码
sudo useradd -m myftp

​ 2.为myftp用户设置密码:

shell 复制代码
sudo passwd myftp

​ 3.在/home/myftp/目录中创建ftpdir目录,作为FTP的根目录:

shell 复制代码
cd /home/myftp
mkdir mtpdir

​ 4.修改vsftpd.conf文件,配置目录信息,并添加以下内容:

shell 复制代码
local_root=/home/myftp/ftpdir
allow_writeable_chroot=YES

​ 编辑方法是:将以上内容添加到下图位置,并删除chroot_locla_user=YES行首的#符号:

​ 5.启动FTP服务器:

shell 复制代码
service vsftpd start

​ 6.在/home/myftp/ftpdit目录中新建一个文件,或者复制一个文件,作为FTP服务器的共享文件,并修改/etc/vsftpd.conf权限:

shell 复制代码
touch /home/myftp/ftpdir/
chmod a+w /etc/vsftpd.conf

​ 7.在Mobaxterm中使用FTP连接方式连接FTP服务器(在连接配置界面中可以看到服务器的IP地址):

​ 输入密码后,我们就可以看到创建的共享文件了:

​ FTP功能介绍:

1.4.功能测试:

​ 点击上传和下载都能成功:

​ 如果出现553或550等报错信息,可以参考:

shell 复制代码
write_enable=YES 未修改
文件夹权限过低,chmod 777 /home/xxx
未指定文件夹,设置 local_root=/home/xxx

2.配置Samba服务器

2.1.SMB协议和Samba服务器简介

​ SMB(Server Message Block,服务器信息块)通信协议是微软公司和英特尔公司在1987年制定的,主要是作为微软网络的通信协议。SMB是会话层和表示层以及小部分应用层的协议。SMB使用了NetBIOs的API,该协议的增强版本是CIFS(普通Internet文件系统)。

​ 与其他标准的TCP/IP不同,SMB是一种复杂的协议,这是因为随着Windows计算机的开发,越来越多的功能被加入该协议中,很难区分哪些概念和功能应该属于Windows本身,哪些概念和功能应该属于SMB协议。其他网络协议由于是先有协议,再实现相关的软件,因此结构比较清晰、简洁;而SMB协议一直是与微软公司的操作系统混在一起进行开发的,因此协议中包含了大量的Windows系统中的概念。

​ 在Linux环境下,安装SMB协议的主要目的是为了和Windows系统进行文件和打印共享,它可以使Linux计算机出现在Windows计算机的网上邻居中,对于Windows用户而言,可以像使用Windows计算机一样使用Linux计算机进行文件和打印共享。

​ Samba是SMB协议的一种实现,早期Samba源自UNIX系统。Samba套件包括客户端、服务器等多个软件包。客户端软件包使得Linux用户也能与Windows服务器联网通信;服务器软件包使得Linux系统成为一个SMB/CIFS服务器,提供SMB服务和接口,实现Windows环境中的网络文件和打印共享。

​ 在Ubuntu系统中,需要单独安装Samba套件,它包括以下软件包:

  • Samba:服务器
  • samba-common:通用实用程序
  • samba-client:客户端
  • samba-doc:非PDF格式文档
  • samba-doc-pdf:PDF格式文档
  • system-config-samba:GNOME管理工具
  • swat:基于浏览器的管理工具
  • sabfs:SMB文件安装与卸载工具

2.2.安装Samba服务器

shell 复制代码
apt-get update							# 同步/etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引,以获取最新的软件包
apt-get upgrade							# 以最新版本更新软件包
apt-get dist-upgrade					# 根据依赖关系添加或删除包
apt-get install samba samba-common

2.3.配置和访问Samba服务器

  1. 在/home目录下创建一个用于共享的目录,命名为sharedir,并为这个目录设置权限,执行命令为:
shell 复制代码
mkdir /home/sharedir
chmod 777 /home/sharedir

​ 2.创建Samba服务器共享文件。在/home/sharedir下创建一个名为sharefile的文件,命令如下:

shell 复制代码
touch /home/sharedir/sharefile

​ 3.添加一个名为sabuser的Samba账号:

shell 复制代码
useradd smbuser
smbpasswd -a smbuser

​ 输入两次密码即可完成创建。

​ 4.编辑配置文件:

shell 复制代码
vim /etc/samba/smb.conf

# 在配置文件末尾添加如下内容:
[share]
path=/home/sharedir
availbale=yes
browseable=yes
public=yes
writable=yes

# 保存退出后,输入以下命令重启生效
service smbd restart

​ 5.在Windows系统中输入访问地址,即可实现对Ubuntu系统的访问。按Windows+R组合键在弹出的"运行"对话框中输入"\Ubuntu系统IP"地址即可看到共享文件夹share,双击进入即可看到sharefile:

3.配置DHCP服务器

3.1.DHCP简洁

​ DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,基于UDP协议工作。DHCP主要有两个用途:为内部网络或网络服务提供商自动分配IP地址;供用户或者内部网络管理员作为对所有计算机进行集中管理的手段。

​ DHCP的前身是BOOTP(Bootstrap Protocol,引导程序协议),但是BOOTP非常缺乏动态性,在有限的IP资源环境中,BOOTP会造成严重的资源浪费。与BOOTP相比,DHCP透过租约的概念,有效且动态分配客户端的TCP/IP设定。而且处于兼容考虑,DHCP也完全能满足BOOTP客户端的需求。DHCP的分配要求必须至少一台DHCP服务器工作在网络中,他会监听网络的DHCP请求,并与客户端协商TCP/IP的设定环境。

​ DHCP的工作流程包含如下6个阶段:

  1. 发现阶段:及DHCP客户端虚招DHCP服务器的阶段。由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP discover信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络中每台安装TCP/IP的主机都会接收到这种广播,但只有DHCP服务器才会做出响应。
  2. 提供阶段:即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover信息的DHCP服务器会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户端,向客户端发送一个包含出租的IP地址和其他设置的DHCP offer(提供)信息。
  3. 选择阶段:即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多态DHCP服务器向客户端发送DHCP offer信息,则客户端只接收第一个收到的DHCP offer信息,然后它就以广播方式回答一个DHCP request(请求)信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。这样是为了通知所有的DHCP服务器,它选择了某台服务器所提供的IP地址。
  4. 确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到客户端回答的DHCP request信息之后,它变相客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack(确认)信息,告诉DHCP客户端可以使用它所提供的IP地址。然后DHCP客户端将其TCP/IP与网卡绑定,另外,除DHCP客户端选中的服务器外,其他DHCP服务器都将收回准备提供的IP地址。
  5. 重新登录:以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover信息了,二十直接发送包含前一次所分配的IP地址的DHCP request信息。当DHCP服务器收到这一信息后,他会尝试让客户端继续使用原来的IP地址,并回答一个DHCP ack信息。如果此IP地址已无法再分配给原来的客户端,则服务器向客户端回答一个DHCP nack(否认)信息。当原来的DHCP客户端收到DHCP nack信息后,它就必须重新发送DHCP discover信息来请求新的IP地址。
  6. 更新租约:DHCP服务器向客户端出租的IP地址一般都有一个租期,期满则服务器便会收回出租的IP地址。如果DHCP客户端要演唱IP租期,则必须更新IP租约。DHCP客户端启动时以及IP租期过半时,DHCP客户端都会自动向DHCP服务器发发送更新其IP租约信息。

3.2.安装和配置DHCP服务器

​ 安装DHCP服务器使用如下命令:

shell 复制代码
apt-get install isc-dhcp-server -y

​ 配置DHCP服务器:

shell 复制代码
vim /etc/dhcp/dhcpd.conf

​ 进行如下修改:

1.修改指定域名的行:

shell 复制代码
option domain-name "域名"

2.修改指定域名服务器的主机名或IP

shell 复制代码
option domain-name-servers 192.168.75.128

3.修改以下两行,指定默认租约时间:

shell 复制代码
default-lease-time 600;
max-lease-time 7200;

4.取消该行注释:

shell 复制代码
# authoritatice;

5.滚动到末尾进行如下修改,以满足用户的网络需求:

shell 复制代码
#shared-network 224-29 {
   subnet 192.168.75.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
     option routers 192.168.75.254;
#  }
#  pool {
#    allow members of "foo";
     range 192.168.75.100 192.168.75.200;
#  }
#  pool {
#    deny members of "foo";
     range 192.168.75.100 192.168.75.200;
#  }
#}

6.保存退出,重启DHCP服务器:

shell 复制代码
systemctl restart isc-dhcp-server.service

​ 此时,网络内部的客户端都将从新配置的服务器获取DHCP地址,如果想查找DHCP服务器提供了哪些IP地址,可以输入以下命令进行查看:

shell 复制代码
dhcp-lease-list
相关推荐
Avan_菜菜9 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB1 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
zzzzzz3103 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz6 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信