1. 实验目的
- FTP、NFS、DHCP、Samba、DNS服务器的自动安装与自动配置
- 配置远程目标主机的SSH免密root登录,安装脚本、配置文件可以从工作主机(执行启动脚本所在的主机)上通过scp或rsync方式拷贝或同步到远程目标主机,然后再借助SSH的远程命令执行功能实现远程控制安装和配置
2. 实验环境
- host: ubuntu 18.04.4 wsl
- server:ubuntu 18.04.4 server
192.168.50.129
3. 实验原理
3.1. FTP
FTP是 File Transfer Protocol (文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet 上的控制文件的双向传输。同时,它也是一个应用程序( Application )
FTP的默认端口是20,21
FTP的端口号20、21的区别一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定。
- FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
- FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
3.2. vsftpd
vsftpd 是“ very secure FTP daemon ”的缩写,安全性是它的一个最大的特点。 vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux 、 BSD 、 Solaris 、HP UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。
3.2.1. 匿名登录
在FTP服务器中,匿名用户的用户名和密码都是ftp ;这个用户可以在您的操作系统中的 /etc/passwd 中能找得到;可能有类似下面的一行;
1 ftp:x:14:50:FTP User:/var/ftp:/sbin/> nologin
3.3. NFS
网络文件系统(英语:Network File System,缩写作 NFS)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
NFS一般用来存储共享视频,图片等静态数据。
当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。
既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了

3.4. Samba
Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件
4. 实验内容
4.1. 配置工作主机远程SSH免密登录到目标主机(假设未开启root免密)
1 | ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa |

1 | sudo ssh host@192.168.50.129 |
4.2. FTP
4.2.1. vsftpd安装
1 | sudo systemctl status vsftpd |
4.2.2. 配置一个提供匿名访问的FTP服务器,匿名访问者可以访问1个目录且仅拥有该目录及其所有子目录的只读访问权限
1 | d="/etc/vsftpd.conf" |

4.2.3. 配置一个支持用户名和密码方式访问的账号,该账号继承匿名访问者所有权限,且拥有对另1个独立目录及其子目录完整读写(包括创建目录、修改文件、删除文件等)权限,(该账号仅可用于FTP服务访问,不能用于系统shell登录)
1 | usr="ftpusr" |

4.3. NFS
4.3.1. 在1台Linux上(目标主机T)配置NFS服务,另1台电脑上(工作主机W)配置NFS客户端挂载2个权限不同的共享目录,分别对应只读访问和读写访问权限
服务器端
1 | sudo apt install -y nfs-kernel-server -y |
客户端
1 | sudo apt install nfs-common -y |

4.4. DHCP
4.4.1. 2台虚拟机使用Internal网络模式连接,其中一台虚拟机上(目标主机T)配置DHCP服务,另一台服务器(工作主机W)作为DHCP客户端,从该DHCP服务器获取网络地址配置
服务器
1 | sudo apt install isc-dhcp-server -y |
客户端
1 | cat<<EOF >> 50-cloud-init.yaml |


4.5. Samba
1 | sudo apt install samba -y |


- 若要read-only:
read only = yes
4.6. DNS
4.6.1. 基于上述Internal网络模式连接的虚拟机实验环境,在DHCP服务器上(目标主机T)配置DNS服务,使得另一台作为DNS客户端的主机可以通过该DNS服务器进行DNS查询
服务器端
1 | sudo apt install bind9 -y |
客户端
1 | sudo apt install resolvconf -y |
