有关Linux ipv6模块加载失败的问题

smith9527 2018-12-29 原文

有关Linux ipv6模块加载失败的问题

有关Linux ipv6模块加载失败的问题

  同事一个SUSE11sp3环境配置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)文档,有如下内容:
    install modulename command…
      This  is the most powerful primitive: it tells modprobe to run your command instead of inserting the module in the kernel as normal.
      The command can be any shell command: this allows you to do any kind of complex processing you might wish.
      For example, if the module “fred” works better with the module “barney” already  installed (but  it  doesn’t  depend  on  it, so modprobe won’t automatically load it), you could say “install fred /sbin/modprobe barney; /sbin/modprobe –ignore-install fred”, which would do what you wanted.
      Note the –ignore-install, which stops the second modprobe from running the same install command again. See also remove below.

      You can also use install to make up modules which don’t otherwise exist.
      For example: “install probe-ethernet /sbin/modprobe e100 || /sbin/modprobe  eepro100”,  which
      will first try to load the e100 driver, and if it fails, then the eepro100 driver when you do “modprobe probe-ethernet”.

      If  you  use  the  string  “$CMDLINE_OPTS” in the command, it will be replaced by any options specified on the modprobe command line. This can be useful because users expect “modprobe fred opt=1” to pass the “opt=1” arg to the module, even if there’s an install command in  the  configuration  file.  So  our  above  example  becomes “install fred /sbin/modprobe barney; /sbin/modprobe –ignore-install fred $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 -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加载不完整。
      
    在网上搜到一篇禁用ipv6的博文,也有相关说明,读者可以参考一下。

 

  PS:

  您的支持是对博主最大的鼓励

版权声明:本文为smith9527原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/smith9527/p/10197566.html

有关Linux ipv6模块加载失败的问题的更多相关文章

  1. linux python 安装到用户目录 – 蜗牛kuai快跑

    linux python 安装到用户目录     在公司服务器中,python可能存在多个版本,而且pytho […]...

  2. Ubuntu安装MariaDB教程

    一、环境 服务器:Ubuntu 16.04.1 LTS(GUN/Linux 4.4.0-91-generic […]...

  3. 搭建Hadoop完全分布式

    Centos7搭建hadoop完全分布式 虽然说是完全分布式,但三个节点也都是在一台机器上。拿来练手也只能这样 […]...

  4. Linux 系统中 /etc/passwd 和 /etc/shadow文件详解

    Linux系统中,所有用户(包括系统管理员)的账号和密码都可以在/etc/passwd和/etc/shadow […]...

  5. 向 3D 世界迈出一小步

    向 3D 世界迈出一小步 Posted on 2021-02-07 23:00  京山游侠  阅读(0)  评 […]...

  6. 云计算之4—Cockpit

    cockpit是一个简单可用的监控工具,你可以添加多个主机进行监控,上限是20台 。也可以使用cockpit来 […]...

  7. Linux 文件与目录管理

    一、目录与路径 相对路径与绝对路径 绝对路径:路径的写法“一定由根目录 / 写起”,例如: /usr/shar […]...

  8. CentOS 7 安装SSH、JDK

    一、安装SSH服务   1、安装openssh     yum install openssh*   2、启动 […]...

随机推荐

  1. 全能VIP音乐在线解析

    浏览器安装暴力猴扩展即可使用 // ==UserScript== // @name 全能VIP音乐在线解析 / […]...

  2. 如何用 Electron + WebRTC 开发一个跨平台的视频会议应用

    在搭建在线教育、医疗、视频会议等场景时,很多中小型公司常常面临 PC 客户端和 Web 端二选一的抉择。Ele […]...

  3. Linux文件管理系统 – 小凉

    Linux文件管理系统 首先了解一般linux文件系统的构成。 */usr/bin、/bin : 存放所有用户 […]...

  4. RocketMq在SparkStreaming中的总结

      其实Rocketmq的给第三方的插件已经全了,如果大家有兴趣的话请移步https://github.com […]...

  5. 微信公众号项目总结

    微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公 […]...

  6. Spring事务传播属性有那么难理解吗?

    学习东西要知行合一,如果只是知道理论而没实践过,那么掌握的也不会特别扎实,估计过几天就会忘记,接下来我们一起实 […]...

  7. 电子邮箱格式有哪些,什么邮箱的账号比较好?

    因为游戏原因,腾讯邮箱最广泛,其次是网易三种邮箱。 qq邮箱,qq邮箱也可以自定义名称。qq邮箱格式q号@qq […]...

  8. 【笔记】混淆矩阵,精准率和召回率

    混淆矩阵,精准率和召回率 评论回归算法的好坏点击这里 评价分类算法是不能单单靠一个分类准确度就可以衡量的,单用 […]...

展开目录

目录导航