美文网首页
iptables 阻止Docker部署的区块链节点同步

iptables 阻止Docker部署的区块链节点同步

作者: UULU | 来源:发表于2019-03-19 18:58 被阅读0次

相关术语

热钱包:在线区块链节点,保持区块同步,负责获取链上最新数据、及广播交易等需要互联网的操作
冷钱包:离线区块链节点,禁止区块同步,负责生成账号、私钥、交易的签名等安全性要求高的操作

需求来源

在开发区块链相关后端服务时,我们需要额外部署一个离线节点,最直接的办法是关闭外网,但是有时我们不得不下载或安装些软件,可是临时开网,会触发同步功能运行。

有没有更好的办法呢?

  • 首先要是 btc、ethereum 支持离线模式运行最好了,但是网上查到的 nat=none 或者 maxpeer=0 启动参数实测并不管用。
  • 接下来研究了 docker 容器的网络 network 模式,也没有符合要求的。
  • 最后只得通过配置防火墙实现了。

解决办法

要注意 docker 服务启动时会创建自己的 iptables Chain,所以系统的 iptables 配置对 docker 不会生效。

解决办法参加见 docker 官方文档 Docker and iptables

All of Docker’s iptables rules are added to the DOCKER chain. Do not manipulate this table manually. If you need to add rules which load before Docker’s rules, add them to the DOCKER-USER chain. These rules are loaded before any rules Docker creates automatically.

也就是说我们可以通过在防火墙里配置 DOCKER-USER chain,只允许容器访问局域网,来达到阻止同步的目的

最终实施

# 配置防火墙文件
$ vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:FILTERS - [0:0]
:DOCKER-USER - [0:0]

-F INPUT
-F DOCKER-USER
-F FILTERS

-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -j FILTERS

-A DOCKER-USER -j FILTERS

-A FILTERS -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FILTERS -m state --state NEW -s 192.168.0.0/16 -j ACCEPT
-A FILTERS -m state --state NEW -d 192.168.0.0/16 -j ACCEPT
-A FILTERS -j REJECT --reject-with icmp-host-prohibited

COMMIT
# 重启防火墙
$ systemctl restart iptables

# 重启Docker
$ systemctl restart docker

相关文章

网友评论

      本文标题:iptables 阻止Docker部署的区块链节点同步

      本文链接:https://www.haomeiwen.com/subject/buwnmqtx.html