virtualbox主机网络管理 未能创建_公链开发实战:本地环境准备之virtualbox篇

本来想先写几篇关于各个公链在本地开发的环境配置,但是我还是觉着应该先写下最基础的环境配置,工欲善其事必先利其器,先提升一下对于virtualbox的掌握,在本地搭建开发环境模拟生产环境是很有必要的,尤其是对于区块链开发者尤为重要,因为往往需要模拟多台机器进行交互;

可能很多人会说没有必要,因为比如:

bitcoin core有regtest模式,所以可以跑单节点;

ETH有ganache和truffle dev可以模拟用软件模拟私链;

EOS可以用docker composer开启多个docker instance来交互;

但是对于一个完整的项目来说,链上操作只是其中一部分,我们肯定还需要很多链下操作的部分, 除非你的项目是纯粹运行在链上,一般纯粹在链上的项目往往也是要在几条不同的链之间交互,比如ETH和IPFS,开发环境也是需要多个节点的,再比如hyperledger也是要运行peer节点,orderer节点等多个节点,这里我还是主要说通常需要链下操作的情况,比如传统db,web api等。

这里的演示的宿主机器是windows,然后, virtualbox 版本6.0,

通常的要求就是数据库和后台服务运行在内网,然后区块链节点和网站程序等可以跟外网沟通,当然也会跟内网沟通。

下图是virtualbox的几种网络模式的能力对比:

1bafb834ca1d89062a2ce988ac8ad917.png

> 摘自virtualbox文档:Host-only networking is particularly useful for preconfigured virtual appliances, where multiple virtual machines are shipped together and designed to cooperate. For example, one virtual machine may contain a web server and a second one a database, and since they are intended to talk to each other, the appliance can instruct Oracle VM VirtualBox to set up a host-only network for the two. A second, bridged, network would then connect the web server to the outside world to serve data to, but the outside world cannot connect to the database.

所以我们选择如下配置: * vb1 运行数据库和后台服务: host-only模式 * vb2 运行区块链节点和网站服务: bridged 模式和 host-only模式

我们预期的结果是:

宿主机器可以跟vb1和vb2通信,通过ssh(默认端口 22, 对于windows用户本人墙裂推荐 winscp,太好用了!), vb1 可以跟vb2通信,也可以跟宿主机器通信 vb2 可以跟一切通信,包括vb2/宿主机/外网

1. 搭建

首先在virtualbox创建一个hostonly adpter,

File=>host network manager

8347ce94bb5cd0490280f05fc42c0893.png 8902534c5c3e407724d1dccd4d5f36a8.png 59bf73eb45b98e3eb94e6f1c7cacf995.png 3f72911d28c3dc3c29bd110c70e0a172.png e6c8b54076f15c8f5095c66374a65cb8.png 4bc919d51fd621e63570c90534fa533c.png

如上图所示,有时候dhcp server莫名其妙的不工作,无法给bridged模式分配ip,具体原因我没有深入研究,这个问题可以手动修复: `dhclient eth0` 或者可以设置静态的ip ``` vim /etc/network/interfaces auto lo iface lo inet loopback

auto eth0 iface eth0 inet static address yourip netmask 255.255.255.0 gateway your gateway ```

9e176bcd27746cfd060d85360d17ff63.png

2. 常用命令

``` ifconfig ip route show route -n cat /etc/network/interfaces /etc/init.d/networking restart service network-manager restart ifdown eth0 ifup eth0 dhclient eth0 Ifconfig eth0 [ip] netmask 255.255.255.0 up route add default gw [gateway] eth0 ip route add default via [gateway] dev eth0 ```

3. 更多探索

1) 我们甚至可以将vb2变成一个router,这样可以做很多有意思的事情,比如可以监控vb1的各种数据包

2) 有时候我们会遇到磁盘空间不足的情况,比如我就遇到过因为运行了多个docker导致磁盘空间不足,还有区块链节点同步数据导致空间不足,如果你不想重新来过一遍的话,可以选择下面的方式进行resize: * 安装os前resize,一步即可: `VBoxVBoxManage.exe modifyhd your.vdi --resize [targetsize]`

* 安装os之后resize,略微麻烦,亲测可用: 先用上面的步骤扩展vdi大小,然后再使用gparted进行分区扩展, 具体参考http://derekmolloy.ie/resize-a-virtualbox-disk/

主要参考资料: https://www.virtualbox.org/manual/ch06.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值