第九章 常用服务器的搭建

第九章 常用服务器的搭建

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
相关推荐
追风赶月、44 分钟前
【Linux】线程概念与线程控制
linux·运维·服务器
CP-DD1 小时前
Docker 容器化开发 应用
运维·docker·容器
努力的悟空2 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
旦沐已成舟3 小时前
DevOps-Jenkins-新手入门级
服务器
周末不下雨4 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
软件技术员4 小时前
Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
服务器·网络协议·ssl
耗同学一米八4 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
一条晒干的咸魚5 小时前
【Web前端】创建我的第一个 Web 表单
服务器·前端·javascript·json·对象·表单
东华果汁哥5 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
肖永威6 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos