认识存储网络:手动搭建 IPFS 环境以及简单应用的开发
一、实验背景
IPFS是一个点对点的分布式文件系统,将所有的计算设备与相同的文件系统连接起来。在某些方面,IPFS类似于Web,但IPFS可以被视为一个单一的比特流群,在Git存储库中交换对象。换句话说,IPFS提供了一个具有内容寻址的超链接的高吞吐量的内容寻址块存储模型,形成了一个通用的Merkle DAG,在此基础上人们可以构建版本化的文件系统、区块链,甚至是永久的Web。IPFS结合了分布式散列表、激励块交换和自我认证的名称空间。IPFS没有单点故障,节点之间不需要相互信任。
二、 实验目标
(1)学会远程操作的基本工具使用。
(2)学习搭建 IPFS 分布式私有网络,体会 P2P 网络架构。
(3)学习使用 IPFS 常用命令进行相关操作。
三、实验流程与记录
实验1 远程登录服务器
打开虚拟机,启动两台Ubuntu系统,安装网络工具包后查看远程服务器的IP地址:
可以看到ubuntu1的IP地址为192.168.110.130,ubuntu2的IP地址为192.168.110.131。
安装SSH服务后,检查得知安装成功:
然后在Windows系统下,打开安装好的PuTTY工具,分别登录两台远程服务器:
根据显示的信息可以得知远程登录成功。
实验 2 依赖环境安装
安装Go语言和Git后,检查Go语言和Git的版本:
实验 3 安装 IPFS
在两台服务器上分别安装IPFS:
实验4 IPFS初始化
在两台服务器中执行初始化命令,可以查询到两台服务器的身份标识:
实验 5 私有网络的共享密钥生成
在ubuntu1上利用go-ipfs-swarm-key-gen 工具生成共享密钥key,并将生成的密钥key复制到ubuntu2相同的目录下:
实验 6 移除默认的 Bootstrap 节点
在两台服务器上移除默认的Bootstrap节点:
实验 7 启动节点服务
在ubuntu1上启动节点服务:
查看节点ID:
在ubuntu2中添加节点ubuntu1:
ubuntu2启动节点服务:
两台服务器的节点服务均启动成功。
实验 8 测试数据抓包
(1)通过 IPFS 命令与网络交互,完成以下任务。
① 查看引导节点列表,并查看已连接的其他 IPFS 节点。
首先在两台服务器上分别使用命令$ipfs bootstrap list
查看节点引导列表。
在ubuntu1上查看引导节点列表,可以看到节点列表为空:
然后在ubuntu2上查看引导节点列表,可以看到显示了在ubuntu1上部署的IPFS节点:
再在两台服务器上分别使用$ipfs swarm peers
命令查看已连接的其他IPFS节点:
根据IP地址和节点ID信息可知两台服务器之间已经正确建立了P2P连接。
② 在本地节点添加目录,并查看本地存储的所有文件。
在ubuntu1上新建ipfstest文件夹,并在其中添加hello.txt和world.txt文件,然后将ipfstest文件夹挂载至IPFS网络中:
在ubuntu1上查询节点中ipfstest文件目录中的内容:
在ubuntu2上查询节点中ipfstest文件目录中的内容:
可以看到目录内容显示正确,ipfstest文件目录已经成功挂载到了IPFS网络中。
在两台服务器上分别使用命令$ipfs pin ls
查看本地固定存储的IPFS对象。$ipfs pin ls
命令用于列出当前节点上所有已固定的 IPFS 对象。 固定是指将对象保留在本地节点上,以便在需要时可以快速访问。 固定的对象不会被垃圾回收器删除,因此它们可以在本地节点上保留很长时间。可以看到在ubuntu1上本地固定存储的IPFS对象中出现了上述节点的ID。
③ 在本地节点中下载和删除文件。
在ubuntu2上使用$ipfs get
命令从上述IPFS节点中下载ipfstest目录至本地:
然后在本地打开下载的文件目录,查看其中的文件内容,发现文件内容与上传时相同:
接下来在ubuntu1上使用命令$ipfs pin rm
命令删除IPFS网络上挂载的ipfstest文件目录:
再使用命令$ipfs pin ls
进行查看,可以看到刚才显示的文件Hash值已消失。
然后在两服务器上分别执行$ipfs repo gc
命令进行垃圾回收:
此时再在ubuntu2上执行$ipfs get
命令下载此前上传到IPFS节点中的ipfstest文件,发现无响应,说明此前步骤删除ipfstest目录成功:
(2)在主机上是用 Wireshark 抓取以下测试的数据包。
首先在Ubuntu1中建立一个文件ipfs.txt,并添加到IPFS网络中:
上传过程的抓包结果如下:
可以看到,192.168.110.1和192.168.110.130之间使用SSH协议传输加密数据包。
然后在ubuntu2中,利用文件的Hash值,读取ipfs.txt文件:
读取过程的抓包结果如下:
可以看到,192.168.110.1和192.168.110.131之间使用SSH协议传输加密后的数据包。
至此,私有网络搭建完成。
标签:IPFS,ubuntu1,手动,ipfs,服务器,节点,ipfstest,搭建 From: https://www.cnblogs.com/Silverplan/p/17977306