第九章 常用服务器的搭建
1.配置FTP服务器
1.1.FTP简介
FTP(File Transfer Protocol,文件传送协议)是TCP/IP网络上两台计算机间传送文件的协议,FTP是在TCP/IP网络和Internet上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件、上传文件、创建或改变服务器上的目录。FTP服务一般运行在20和21两个端口。端口20用于在FTP客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向FTP服务器的入口。当数据通过数据流传输时,控制流处于空闲状态。
FTP的优点如下:
- 促进文件(计算机程序或数据)的共享;
- 鼓励间接或者隐式使用远程计算机;
- 向用户屏蔽不同主机中各种文件存储系统的细节;
- 能够可靠和高效的传输数据。
FTP的缺点如下:
- 密码和文件内容都是用明文传输,可能遭受窃听;
- 因为必须开放一个随机的端口来建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流浪。这个问题通过使用被动模式的FTP基本上得到了解决;
- 服务器可能会被告连接一个第三方计算机的保留端口。
在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服务器,具体设置步骤如下:
- 为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服务器
- 在/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个阶段:
- 发现阶段:及DHCP客户端虚招DHCP服务器的阶段。由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP discover信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络中每台安装TCP/IP的主机都会接收到这种广播,但只有DHCP服务器才会做出响应。
- 提供阶段:即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover信息的DHCP服务器会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户端,向客户端发送一个包含出租的IP地址和其他设置的DHCP offer(提供)信息。
- 选择阶段:即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多态DHCP服务器向客户端发送DHCP offer信息,则客户端只接收第一个收到的DHCP offer信息,然后它就以广播方式回答一个DHCP request(请求)信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。这样是为了通知所有的DHCP服务器,它选择了某台服务器所提供的IP地址。
- 确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到客户端回答的DHCP request信息之后,它变相客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack(确认)信息,告诉DHCP客户端可以使用它所提供的IP地址。然后DHCP客户端将其TCP/IP与网卡绑定,另外,除DHCP客户端选中的服务器外,其他DHCP服务器都将收回准备提供的IP地址。
- 重新登录:以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover信息了,二十直接发送包含前一次所分配的IP地址的DHCP request信息。当DHCP服务器收到这一信息后,他会尝试让客户端继续使用原来的IP地址,并回答一个DHCP ack信息。如果此IP地址已无法再分配给原来的客户端,则服务器向客户端回答一个DHCP nack(否认)信息。当原来的DHCP客户端收到DHCP nack信息后,它就必须重新发送DHCP discover信息来请求新的IP地址。
- 更新租约: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