Docker配置双栈网络引起的IPV6不通问题排查及解决

问题现象

云主机配置了Docker双栈网络后,ipv6网络异常,无法ping通ipv6网关。

排查过程

检查IPV6路由

ip -6 route

可见系统缺失默认路由。通过抓包可发现,系统未发rs(Router Advertisement)报文,导致接收不到ra通告,无法生成路由。
检查系统内核参数,发现如下配置:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.eth0.forwarding=1
net.ipv6.conf.eth1.forwarding=1
net.ipv6.conf.all.accept_ra=1
net.ipv6.conf.default.accept_ra=1
net.ipv6.conf.eth0.accept_ra=1
net.ipv6.conf.eth1.accept_ra=1

forwarding作用是开启ipv6路由转发,默认是0关闭,容器化环境中,主机相当于路由器,会默认开启该参数。
accept_ra参数,0表示不接受RA,1表示forwarding是关闭时就接受,2表示无论forwarding是否关闭,主机都接受RA。

解决办法

修改内核参数为:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.eth0.forwarding=1
net.ipv6.conf.eth1.forwarding=1
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.eth0.accept_ra=2
net.ipv6.conf.eth1.accept_ra=2

你可能感兴趣的:(docker,网络,ipv6)