便宜VPS主机精选
提供服务器主机评测信息

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

同事一个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)文档,有如下内容:

比较长,关键的第一句我们来解释一下: 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加载不完整。

未经允许不得转载:便宜VPS测评 » Linux下解决IPV6模块加载失败方法