第九章 常用服务器的搭建

2023-09-22 11:02:18

第九章 常用服务器的搭建

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服务器软件:
apt-get install vsftpd

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

cat /etc/init.d/vsftpd
pidof vsftpd

  • vsftpd程序的启动、停止和重新启动:
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的用户:
sudo useradd -m myftp

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

sudo passwd myftp

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

cd /home/myftp
mkdir mtpdir

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

local_root=/home/myftp/ftpdir
allow_writeable_chroot=YES

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

​ 5.启动FTP服务器:

service vsftpd start

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

touch /home/myftp/ftpdir/
chmod a+w /etc/vsftpd.conf

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

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

​ FTP功能介绍:

1.4.功能测试:

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

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

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服务器

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,并为这个目录设置权限,执行命令为:
mkdir /home/sharedir
chmod 777 /home/sharedir

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

touch /home/sharedir/sharefile

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

useradd smbuser
smbpasswd -a smbuser

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

​ 4.编辑配置文件:

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:

image-20230921105530729

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服务器使用如下命令:

apt-get install isc-dhcp-server -y

​ 配置DHCP服务器:

vim /etc/dhcp/dhcpd.conf

​ 进行如下修改:

1.修改指定域名的行:

option domain-name "域名"

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

option domain-name-servers 192.168.75.128

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

default-lease-time 600;
max-lease-time 7200;

4.取消该行注释:

# authoritatice;

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

#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服务器:

systemctl restart isc-dhcp-server.service

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

dhcp-lease-list
更多推荐

MYSQL--索引

目录一、索引的概念:二、索引的作用:三、索引的缺点:四、创建索引的原则依据:五、索引的分类和创建:1.普通索引:2.唯一索引:3.主键索引:4.组合索引:5.全文索引:六、查看删除索引:1.查看索引:2.删除索引:一、索引的概念:索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于

SpringSecurity 初始化解析

文章目录前言加载SpringSecurity配置解析配置SpringSecurity解析器security:http解析FilterChainProxy的注册过程创建SpringSecurity过滤器总结前言通过上文分析知道了SpringSecurity对一个请求的具体处理流程。不知道大家是否跟我一样都有几个疑问:Fi

已知我有一个表格里有编号状态和名称的列,如何转换为目标样式?

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤此臣所以报先帝而忠陛下之职分也。大家好,我是皮皮。一、前言前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python自动化办公的问题,一起来看看吧。请教一下PANDA库的问题:已知我有一个表格里

字符串(字符数组)的各种操作功能

利用C语言编程平台以及所学的编程知识,完成以下工作:采用菜单形成,通过菜单项(1;2;3;......)等选择方式,分别实现以下对字符串(字符数组)的各种操作功能:初始化字符串(字符数组)A[],B[],C[]等,并键盘录入,要求字符串(字符数组)以’\0’为结束标志;调用自己编写的函数intlength(CharA[

JS基础语法

JS是一门面向对象的编程语言,运行在客户端的脚本语言,可以基于Node.js进行服务器端编程JS的作用:表单动态校验网页特效服务端开发浏览器执行JS:浏览器分为两部分:渲染引擎和JS引擎渲染引擎用来解析HTML和CSS,如chrome浏览器的Blink/Webkit,Firefox的Gecko。JS引擎用来读取网页的J

每日一练 | 华为认证真题练习Day1

Day1华为认证中级考试真题1、IP报文中用Tos字段进行QOS标记,Tos字段中是使用前6bit来标记DSCP的。A.正确​B.错误2、传统的丢包策略采用尾部丢弃(Tail-Drop)的方法,这种丢弃方法会导致TCP全局同步现场。A.正确B.错误3、下列选项中,属于AgileController的业务编排的亮点的是:

JavaScript函数this指向

一、this的指向规则1.this到底指向什么呢?我们先来看一个让人困惑的问题:定义一个函数,我们采用三种不同的方式对它进行调用,它产生了三种不同的结果//定义函数functionfoo(name){console.log("foo函数:",this)}//1.方式一:直接调用//foo()//2.方式二:通过对象调起

Revopoint的3D输出格式及转换工具

在CES展会期间,许多参观者向我们询问与我们的3D扫描仪相关的问题。最常见的问题包括我们的扫描仪导出的文件格式,以及该文件是否与3D打印机兼容?因此,我们决定回答这些问题,并在本文中对常见的3D文件格式进行一些简要介绍。计算机文件记录和存储数据,包括文本、图片、视频、计算机程序或其他类型的数据。就3D文件而言,顾名思义

代理IP在各种业务情境中的应用和优势

随着现代互联网的迅速发展,代理IP已成为一种广泛应用于各行业的网络技术。特别是在数据采集、网站建设、安全维护等领域,代理IP的应用越来越受到重视。那么,具体有哪些业务会使用到代理IP呢?我们一起来看一看。1.网络爬虫和数据采集网络爬虫和数据采集是代理IP的主要应用场景之一。大规模数据采集由于需要频繁对目标网站发送请求,

Docker快速入门到项目部署,docker自定义镜像

https://blog.csdn.net/m0_67184231/article/details/1331495792.3.自定义镜像前面我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢?2.3.1.镜像结构要想自己构建镜像,必须先了解镜像的结构。之前我们说过,镜像之所以能

使用Jaeger进行分布式跟踪:学习如何在服务网格中使用Jaeger来监控和分析请求的跟踪信息

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

热文推荐