帮助中心

DNS污染处理

常见问题

香港高防IP

常见问题

新加坡高防服务器

产品简介 操作指南 常见问题

新加坡云服务器

产品简介 操作指南 常见问题

香港服务器租用

产品简介 操作指南 常见问题

香港高防服务器

产品简介 操作指南 常见问题

域名服务

域名服务

Linux下解决IPV6模块加载失败方法

时间 : 2023-03-10 10:31:34
编辑 : 华纳云

同事一个SUSE Linux Enterprise Server 11 SP3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载。

主要检查内容:

ipv6地址是否存在

 ifconfig |grep inet6

没有默认inet6地址

ipv6模块是否存在

# modinfo -n ipv6    

/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.ko    

# modinfo -n ipv6_lib    

/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko

系统是否加载IPv6相关模块

lsmod |grep ipv6    

# lsmod |grep ipv6   

 ipv6_lib              341467  0

只有ipv6_lib模块,没有主模块ipv6

从上面信息得知,ipv6模块是存在的,只是加载出现了问题,由此想到可能是配置导致的。

首先检查模块的依赖关系是否正确:

# cat /lib/modules/`uname -r`/modules.dep |grep -w ipv6.ko:   

/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.ko: /lib/modules/3.0.101

-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko

没有问题

其次检查modprobe配置,是否屏蔽了ipv6模块加载:

# cat /etc/modprobe.conf |grep -i ipv6   

 alias sit0 ipv6

最后检查了/etc/modprobe.d/目录下文件

发现一个50-ipv6.conf文件,内容如下:

# cat /etc/modprobe.d/50-ipv6.conf   

 install ipv6 /bin/true

这句话是什么含义呢?通过modprobe.conf(5)文档,有如下内容:

https://www.hncloud.com/uploads/UEditorImages/202303/10/0fcc0a88d83ca29b38f690b427bb8676.jpg

比较长,关键的第一句我们来解释一下: This is the most powerful primitive: it tells modprobe to run your command instead of inserting the module in the kernel as normal. 这句话的意思是它让modprobe命令执行命令行里的command命令,而不是一般情况下去加载指定的内核模块。

该怎么理解这句话呢?我们通过两个命令的执行来说明:

# modprobe -v -n ipv6    

insmod /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko   

 install /bin/true

-n –dry-run –show 表明不做真正的插入模块的操作 -v: 打印有关程序所做事情的信息 所以上述输出表明modprobe只做了加载ipv6_lib.ko模块和install /bin/true的动作, 而没有做加载ipv6.ko模块

# modprobe --show-depends ipv6    

insmod /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko   

 install /bin/true

–show-depends 只列出模块依赖关系,以insmod开头; install命令也不做实际的加载操作,只列出要做的加载动作 从以上信息可以看出,也不会做ipv6.ko模块加载。

去掉/bin/true之后,重新执行modprobe ipv6命令后检查模块加载情况:

# modprobe -v ipv6    

# lsmod |grep ipv6    

ipv6                  12758  1    

ipv6_lib              341467  71 ipv6       

 # ifconfig |grep inet6      

inet6 addr: fe80::9af5:37ff:fe00:9527/64 Scope:Link     

 inet6 addr: fe80::9af5:37ff:fee3:3ac4/64 Scope:Link      

inet6 addr: ::1/128 Scope:Host

综上,可以认为是50-ipv6.conf文件的配置导致了ipv6加载不完整。


客服咨询
7*24小时技术支持
Telegram
hncloudnoc

技术支持

渠道支持