烦恼一般都是想太多了。

0%

开启主机对IPv6的支持

事情的是经过是,摩尔互联的节点客户端,无法启动。返回的错误是 address famliy not support,根据这个原因我推测,应该是绑定套接字的时候,不支持这个协议族,而查看了一下 ip addr,有ipv4地址,但是没有链路层地址和ipv6地址。

原理

从 TCP/IP 协议详解上了解到,ipV6地址,其实应该是每个接口都会有,而且每个接口可能会有几个。有链路本地地址,子网的,全局的IPV6地址,而我这个一个都没有,肯定是系统给禁止了。于是我们就来把他找出来吧。

strace ./mol_node 就能看出点端倪了。

配置文件

模块加载

内核协议栈要支持IpV6,首先要加载 ipv6模块。在文件中 /etc/modprobe.d/disable_ipv6.conf 中有类似字样:

alias ipv6 off
options ipv6 disable=1

看名字就能知道,我们需要把 off 改为 on, 1 改为0.

这样才会加载进来模块。

网络支持

文件 /etc/sysconfig/network
中,NETWORKING_IPV6=no 改为 NETWORKING_IPV6=yes

系统配置

/etc/sysctl.conf 把下列选项都改为1:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

重启了之后,一看。果然可以了。