Linux下如何解决IPV6模块加载失败问题
这篇文章主要为大家展示了“Linux下如何解决IPV6模块加载失败问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何解决IPV6模块加载失败问题”这篇文章吧。
同事一个SUSE Linux Enterprise Server 11 SP3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载。
ipv6地址是否存在
ifconfig|grepinet6
没有默认inet6地址
ipv6模块是否存在
#modinfo-nipv6/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.ko#modinfo-nipv6_lib/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko
系统是否加载IPv6相关模块
lsmod|grepipv6#lsmod|grepipv6ipv6_lib3414670
只有ipv6_lib模块,没有主模块ipv6
从上面信息得知,ipv6模块是存在的,只是加载出现了问题,由此想到可能是配置导致的。
首先检查模块的依赖关系是否正确:#cat/lib/modules/`uname-r`/modules.dep|grep-wipv6.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-iipv6aliassit0ipv6最后检查了/etc/modprobe.d/目录下文件
发现一个50-ipv6.conf文件,内容如下:
#cat/etc/modprobe.d/50-ipv6.confinstallipv6/bin/true
这句话是什么含义呢?通过modprobe.conf(5)文档,有如下内容:
installmodulenamecommand...Thisisthemostpowerfulprimitive:ittellsmodprobetorunyourcommandinsteadofinsertingthemoduleinthekernelasnormal.Thecommandcanbeanyshellcommand:thisallowsyoutodoanykindofcomplexprocessingyoumightwish.Forexample,ifthemodule"fred"worksbetterwiththemodule"barney"alreadyinstalled(butitdoesn'tdependonit,somodprobewon'tautomaticallyloadit),youcouldsay"installfred/sbin/modprobebarney;/sbin/modprobe--ignore-installfred",whichwoulddowhatyouwanted.Notethe--ignore-install,whichstopsthesecondmodprobefromrunningthesameinstallcommandagain.Seealsoremovebelow.Youcanalsouseinstalltomakeupmoduleswhichdon'totherwiseexist.Forexample:"installprobe-ethernet/sbin/modprobee100||/sbin/modprobeeepro100",whichwillfirsttrytoloadthee100driver,andifitfails,thentheeepro100driverwhenyoudo"modprobeprobe-ethernet".Ifyouusethestring"$CMDLINE_OPTS"inthecommand,itwillbereplacedbyanyoptionsspecifiedonthemodprobecommandline.Thiscanbeusefulbecauseusersexpect"modprobefredopt=1"topassthe"opt=1"argtothemodule,evenifthere'saninstallcommandintheconfigurationfile.Soouraboveexamplebecomes"installfred/sbin/modprobebarney;/sbin/modprobe--ignore-installfred$CMDLINE_OPTS"
比较长,关键的第一句我们来解释一下: 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-nipv6insmod/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.koinstall/bin/true
-n –dry-run –show 表明不做真正的插入模块的操作 -v: 打印有关程序所做事情的信息 所以上述输出表明modprobe只做了加载ipv6_lib.ko模块和install /bin/true的动作, 而没有做加载ipv6.ko模块
#modprobe--show-dependsipv6insmod/lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.koinstall/bin/true
–show-depends 只列出模块依赖关系,以insmod开头; install命令也不做实际的加载操作,只列出要做的加载动作 从以上信息可以看出,也不会做ipv6.ko模块加载。
去掉/bin/true之后,重新执行modprobe ipv6命令后检查模块加载情况:
#modprobe-vipv6#lsmod|grepipv6ipv6127581ipv6_lib34146771ipv6#ifconfig|grepinet6inet6addr:fe80::9af5:37ff:fe00:9527/64Scope:Linkinet6addr:fe80::9af5:37ff:fee3:3ac4/64Scope:Linkinet6addr:::1/128Scope:Host
综上,可以认为是50-ipv6.conf文件的配置导致了ipv6加载不完整。
以上是“Linux下如何解决IPV6模块加载失败问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。