实验 1 远程登录服务器

两台服务器选择了腾讯云服务器的台Ubuntu-20.04-LTS-x64系统,默认具备SSH服务。

本实验中使用vscode进行远程操作,打开两个终端分别登录两台远程服务器

![image-20221027192005244](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027192005244.png)

![image-20221027192059321](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027192059321.png)

可以看到远程登录成功

实验 2 依赖环境安装

  • 编辑器使用系统自带的nano编辑器

  • go语言安装

    执行命令

    wget -4 -c https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz

    解压到/usr/local,加入环境变量

    export PATH=$PATH:/usr/local/go/bin

    使其生效

    source ~/.profile

    验证

    ![image-20221027192937752](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027192937752.png)

  • apt 安装git

    ![image-20221027193017823](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027193017823.png)

实验 3 安装 IPFS

下载压缩包go-ipfs_v0.4.17_linux-amd64.tar.gz,通过以下命令上传到服务器

scp /E:/go-ipfs_v0.4.17_linux-amd64.tar.gz ubuntu@serverIP:/home/ubuntu/

传输后解压并将文件复制到/usr/bin目录下

 sudo tar -zxvf go-ipfs_v0.4.17_linux-amd64.tar.gz -C ~/IPFS/
cp ~/IPFS/go-ipfs/ipfs /usr/bin

在两个服务器中都执行该过程

实验 4 IPFS 初始化

在两台服务器中执行初始化命令:

ipfs init

初始化成功

Ubuntu1

![image-20221027195952977](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027195952977.png)

Ubuntu2

![image-20221027200139134](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027200139134.png)

实验 5 私有网络的共享密钥生成

在Ubuntu1中下载工具

go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen

进入下载目录

cd ~/go/src/github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen

执行如下命令,生成可执行文件 ipfs-swarm-key-gen:

go build

生成key

./ipfs-swarm-key-gen > ~/.ipfs/swarm.key

将上述生成的密钥 key 复制到 Ubuntu2 相同的目录下:

scp ~/.ipfs/swarm.key ubuntu2@ubuntu2 IP:~/.ipfs/

在Ubuntu2中查看

![image-20221027200749007](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027200749007.png)

实验 6 移除默认的 Bootstrap 节点

在两台服务器上都进行操作: ipfs bootstrap rm –all 移除默认节点

实验 7 启动节点服务

在ubuntu@VM-0-9中查看节点ID并启动节点服务

![image-20221027202058662](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027202058662.png)

在ubuntu@VM-0-4中添加节点ubuntu@VM-0-9并启动节点服务

![image-20221027202149402](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027202149402.png)

这里使用的连接ip为腾讯云内网ip,固定不变,方便管理

实验 8 测试数据抓包

(1) 通过 IPFS 命令与网络交互,完成以下任务。

① 查看引导节点列表,并查看已连接的其他 IPFS 节点。

在ubuntu@VM-0-4中用ipfs bootstrap list命令查看引导节点

![image-20221027202846482](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027202846482.png)

使用 ipfs swarm peers 查看连接的节点

![image-20221027203013314](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027203013314.png)

![image-20221027203031756](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027203031756.png)

② 在本地节点添加目录,并查看本地存储的所有文件。

查阅命令在本地对文件操作如下

![image-20221027203612069](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027203612069.png)

![image-20221027203624144](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027203624144.png)

查看文件内容

![image-20221027203721633](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027203721633.png)

③ 在本地节点中==下载==和删除文件。

建立文件添加到IPFS网络

![image-20221027204209792](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027204209792.png)

另一台服务器中,利用文件的 Hash 值,读取 ipfs.txt。

![image-20221027204250702](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027204250702.png)

本地下载文件

![image-20221103144627406](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221103144627406.png)

查看已下载的文件

![image-20221103144911074](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221103144911074.png)

删除文件

![image-20221027203915859](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027203915859.png)

(2)抓取测试的数据包。

用Wireshark一直报错,不知道为什么,没有解决…

用Ubuntu自带的端口监听软件TCPDump抓包:

在ubuntu@VM-0-4执行完ipfs add后抓取到数据包

![image-20221027204801578](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027204801578.png)

在ubuntu@VM-0-9执行完ipfs cat hashvalue后抓取到数据包

![image-20221027204951023](选做三:认识存储网络:手动搭建 IPFS 环境以及简单应用的开发/image-20221027204951023.png)