FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造。开源工作组成员包括博彦科技、华为、深证通、神州数码、四方精创、腾讯、微众银行、亦笔科技和越秀金科等金链盟成员机构。

代码仓库:https://github.com/FISCO-BCOS

作者语

区块链网络由多个互相连接的节点构成,每个节点又与客户端浏览器监控工具等相连;理清各种网络端口的存在,达成网络畅通的同时又保证安全是建立区块链网络的基础。

同时,在搭链的过程中有一些热点问题,比如为什么节点开了这么多端口?或者为什么网络不通?节点无法连接?没有共识出块?正所谓"通则不痛",网络畅通才能链接一切

本期文章讲的就是网络端口互通这点事,作者从FISCO BCOS的网络端口、FISCO BCOS 2.0的典型网络配置、设计网络安全组的一些策略等角度进行了解析。

Part 1、FISCO BCOS 2.0网络的三类端口

FISCO BCOS 2.0的网络包括P2P端口、RPC端口、Channel端口。

1. P2P端口

P2P端口,用于区块链节点之间的互联,包括机构内的多个节点,以及多机构间节点和节点的互联。如果其他节点在机构外,那么这个连接要监听公网地址,或者监听内网,且由连接公网的网关(如nginx)转发网络连接。

节点之间的连接会由联盟链的准入机制控制,节点之间连接依赖节点证书验证,以排除未经许可的危险连接。这个链路上的数据通过SSL方式加密,采用高强度密钥,可以有效的保护通信安全。

P2P网络详细设计参见:https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/design/p2p/p2p.html

网络安全和准入控制参见:https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/design/security_control/index.html

2. Channel端口

Channel端口,控制台和客户端SDK连接Channel端口,互相之间要通过证书认证,只有经过认证的客户端才能向节点发起请求,通信数据也是采用SSL方式加密。Channel端口使用了TCP的长连接,用心跳包检测和保持存活,通信效率较高,支持AMOP协议的点对点通信,功能相当灵活强大。

Channel端口应只监听内网IP地址,供机构内其他的应用服务器通过SDK连接,不应监听外网地址或接受公网的连接,以免发生不必要的安全的问题,也不要只监听本地地址(127.0.0.1或localhost),否则其他应用服务器将无法连接到节点上。

SDK文档参见:https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/sdk/sdk.html

AMOP协议参见:https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/manual/amop_protocol.html

3. RPC端口

RPC是客户端与区块链系统交互的一套协议和接口,用户通过RPC接口可查询区块链相关信息(如块高、区块、节点连接等)和发送交易。

RPC端口接受JSON-RPC格式的请求,格式比较直观清晰,采用CURL、JavaScript、Python、Go等语言都可以组装JSON格式的请求,发送到节点来处理。当然发送交易时,要在客户端实现交易签名。要注意的是,RPC连接没有做证书验证,且网络传输默认是明文的,安全性相对不高,建议只监听内网端口,用于监控、运营管理,状态查询等内部的工作流程上。目前监控脚本,区块链浏览器连接的是RPC端口。

文档参见:https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/design/rpc.html

Part 2、一个FISCO BCOS 2.0的典型网络配置

FISCO BCOS 2.0一个典型网络配置如下所示,可以看到RPC和Channel端口共用一个IP,P2P连接单独监听一个IP,即一个区块链节点使用2个IP和3个端口。

节点下的config.ini文件:

[rpc]
listen_ip=127.0.0.1
channel_listen_port=20200
jsonrpc_listen_port=8545
[p2p]
listen_ip=0.0.0.0listen_port=30300

Part 3、几种计算机的典型网络地址

1.特殊地址:0.0.0.0,表示监听本机所有的地址,包括本地、内网、公网(如有)地址,也就是全面放开,来者不拒。除非为了方便且确信安全,一般不应监听这个地址。

2.本机地址:127.0.0.1(有的配置可以写成localhost),只有同在本机上的其他进程才能连接到这个地址,其他机器一律连不过来。FISCO BCOS有的示例脚本为了安全和简易起见,默认写的是这个地址,包括build_chain脚本默认配置等。用户有时会发现其他机器运行客户端程序连不过来,大概率是这个原因,或者也可以检查下网络策略是否开通了互联,建议可以用系统的 telnet 【ip】【port】命令来先快速检测下是否能联通。

3、内网地址:通常192.168.xxx.xxx, 172.xxx.xxx.xxx,10.xxx.xxx.xxx开头的地址是内网地址,如监听这个地址,则只有同一局域网的其他机器可以访问它。

4、外网地址:暴露在互联网上的公网地址,或者可以从机构外部网络访问的地址,总之是外部服务器能连接的就是外部地址。

Part 4、设计网络安全组的一些策略

在不同的网络拓扑上,可能牵涉这样的情况:服务器虽然可以访问外网,但是是由网关、路由器、NAT转发的,这时就需要了解具体的网络结构,进行配置了。如监听一个内网地址,把这个内网地址和监听的端口配置到转发器上,同样也可以接收来自外网的连接。

在网络安全方面,需要仔细的设计网络安全组策略,IP和端口黑白名单,精确的进行双向的连接控制。包括不限于以下策略:

1、设置外部IP白名单,只有这些外部IP(一般是建立了联盟的其他机构)能连接过来;

2、设置IP黑名单,拒绝某些特定IP的连接,而不用等它连接到节点才进行准入控制判断;

3、控制RPC端口,(如8545端口)只对本机开放,其他内网外网服务器都连不到这个端口;

4、控制Channel端口,只对某一个内网网段或某几个IP开放,把自己的应用部署到开放的网段或IP对应的服务器上,内网其他应用不能访问区块链节点;

5但凡有外网端口,建议设置防DDoS的措施,避免频繁连接、海量并发连接攻击。

Part 5、总结

网友问答

Q:节点间采用P2P通讯,同时采用SSL认证,每个节点如何获取和验证链接节点的公钥证书、预置根证书和证书链?节点跟其他节点通讯时,哪方做Server,哪方做Client?

A:在创建链的时候,就分配了链的根证书;每个节点跟其他节点通讯时,互为Server Client。

Q:外网IP建议布防DDoS攻击,这是一种标准的中心化的防御逻辑。区块链的实现逻辑是去中心化,攻击单个节点是否变得没有意义?机构能不能布置更多的节点?

A:关于DDoS的问题,对联盟链来说,一个机构一般部署两个节点,要是被攻击可能是会影响该机构的业务,但不至于影响全网。机构可以布置多个节点,比如4个、5个或者10个。


了解更多干货内容,请关注FISCO BCOS开源社区公众号,访问FISCO BCOS代码仓库可下载项目所有源代码:https://github.com/FISCO-BCOS/FISCO-BCOS,欢迎点击页面右上角star收藏,获取最新版本。

我们鼓励机构成员、开发者等社区伙伴参与开源共建事业,有你在一起,会更了不起。多样参与方式:

1 进入微信社群,随时随地与圈内最活跃、最顶尖的团队畅聊技术话题(进群请添加小助手微信,微信ID:fiscobcosfan);

2 订阅我们的公众号:“FISCO BCOS开源社区”,我们为你准备了开发资料库、最新FISCO BCOS动态、活动、大赛等信息;

3 来Meetup与开发团队面对面交流,FISCO BCOS正在全国举办巡回Meetup,深圳、北京、上海、成都……欢迎您公众号在菜单栏【找活动】中找到附近的Meetup,前往结识技术大咖,畅聊硬核技术;

4 参与代码贡献,您可以在Github提交Issue进行问题交流,欢迎向FISCO BCOS提交Pull Request,包括但不限于文档修改、修复发现的bug、提交新的功能特性。

代码贡献指引:

https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md

联盟链FISCO BCOS网络端口讲解相关推荐

  1. 联盟链FISCO BCOS权限控制一览

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  2. 公告 | 联盟链FISCO BCOS v2.0.0-rc3 发布

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  3. 区块链 fisco bcos 2.72 在多机器上部署多个docker节点 ubuntu

    一.安装 1. 安装依赖 安装curl.openssl: sudo apt-get update sudo apt install -y curl openssl 2. 安装docker: (1)安装 ...

  4. 区块链 Fisco bcos 智能合约(19)-区块链性能腾飞:基于DAG的并行交易执行引擎PTE

    在区块链世界中,交易是组成事务的基本单元. 交易吞吐量很大程度上能限制或拓宽区块链业务的适用场景,愈高的吞吐量,意味着区块链能够支持愈广的适用范围和愈大的用户规模. 当前,反映交易吞吐量的TPS(Tr ...

  5. 区块链 Fisco bcos 智能合约(22)-全面的性能分析工具

    前 言 We should forget about small efficiencies, say about 97% of the time: premature optimization is ...

  6. 搭建FISCO BCOS联盟链节点

    搭建FISCO BCOS联盟链 FISCO BCOS是由国内企业主导研发.对外开源.安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源: 在本地mac电脑上部署 ...

  7. 区块链底层平台FISCO BCOS的证书机制

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  8. 基于JavaSDK调用FISCO BCOS 区块链

    基于https://fisco-bcos-documentation.readthedocs.io文档开发 起因:需要将文件的sha256Hex哈希值存于搭建的FISCO BCOS 区块链中并验证文件 ...

  9. 联盟链战国:五大巨头横向对比

    联盟链是目前区块链落地实践的热点,也是大家对"杀手级应用"期望最大的区块链部署形态.联盟链的诞生源于对区块链技术的"反思",是对比特币.以太坊所体现的技术特点与 ...

最新文章

  1. 怎么跑都不累?自然医学揭秘微生物组提升运动表现
  2. 面向对象编程(一)——面向对象和面向过程
  3. raft论文 中文 pdf_八篇论文总结BERT+KG:预训练模型与知识图谱相结合的研究进展...
  4. phpcms如何给已有的模块添加新功能?
  5. c语言如何用fscanf将字符串读取,在c语言中如何将文本内容 赋给一个 字符串
  6. 深度学习(二十二)——ESPCN, FSRCNN, VESPCN, SRGAN, DemosaicNet, MemNet, RDN, ShuffleSeg
  7. Kubernetes 日志查询分析实践
  8. python序列模式的关联算法_关联算法
  9. 塔罗牌第五张是什么牌_埃及塔罗牌之第五张牌的细节、释义与改动
  10. Simple:Press
  11. Django最新版(1.10.5)在SAE上面部署流程
  12. 【树形dp】VK Cup 2012 Round 1 D. Distance in Tree
  13. 教育中的“产出/产能平衡”原则
  14. Java-idea-eclipse-快捷键【mac,win】
  15. 客户管理软件系统源码
  16. 航模舵机控制原理详解
  17. 让IPFS星际文件系统永久保存你的数据
  18. n分频器 verilog_verilog 语言实现任意分频
  19. 重磅!首届倍增科学技术研究院高级研究员研讨会胜利召开
  20. 计算机主板复位电路的组成,主板复位电路图解 - 主板知识

热门文章

  1. 学校官网首页 2页网页设计(HTML+CSS+JavaScript)
  2. 程序员圈 内的 鄙视链
  3. Win10永久禁用驱动程序强制签名
  4. Sharding JDBC(四) 分片策略一:标准分片策略StandardShardingStrategy
  5. 嵌入式开发<单片机软件调试>
  6. NBIOT 设备接入ONENET平台
  7. 在vue组件内单独引入css
  8. go语言读取json文件的方法
  9. 原生js实现跑马灯效果,鼠标放下可以停止跑动
  10. PTA团体天梯赛汇总