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

2023-04-26 16:44:46 浏览数 (3)

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

主要检查内容:

ipv6地址是否存在

 ifconfig |grep inet6

没有默认inet6地址

ipv6模块是否存在

代码语言:javascript复制
 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相关模块

代码语言:javascript复制
lsmod |grep ipv6    
 lsmod |grep ipv6   
 ipv6_lib              341467  0

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

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

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

代码语言:javascript复制
 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模块加载:

代码语言:javascript复制
 cat /etc/modprobe.conf |grep -i ipv6   
 alias sit0 ipv6

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

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

代码语言:javascript复制
 cat /etc/modprobe.d/50-ipv6.conf   
 install ipv6 /bin/true

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

比较长,关键的第一句我们来解释一下: 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命令,而不是一般情况下去加载指定的内核模块。

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

代码语言:javascript复制
 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模块

代码语言:javascript复制
 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命令后检查模块加载情况:

代码语言:javascript复制
 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加载不完整。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:zbxhhzj@qq.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。 转载本站文章请保留原文链接,如文章内说明不允许转载该文章,请不要转载该文章,谢谢合作。

0 人点赞