zoukankan      html  css  js  c++  java
  • linux配置禁用启用IPv6

    IPv6被认为是IPv4的替代产品,它用来解决现有IPv4地址空间即将耗尽的问题。
    但目前,开启IPv6可能会导致一些问题。因此有时我们需要关闭IPv6。
    下面是IPv6的关闭方法应该适用于所有主流的Linux发行版包括Ubuntu、Debian、CentOS。

    IPv6在CentOS6.5系统中默认是启用状态,通过以下方式可以确认IPv6的状态

    1.1.查看系统IPv6的启用状态

    以下命令返回值为0表示IPv6启用,1表示禁用

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    cat /proc/sys/net/ipv6/conf/default/disable_ipv6
    ifconfig 
    ip address list
    netstat -anptl

    1.2.查看内核模块调用

    # 有返回结果,说明IPv6模块已启用,可以看出那些程序进行了调用,反之没有启用

    lsmod | grep ipv6

    2.禁用IPv6

    2.1.临时禁用IPv6

    # 命令行调整内核参数,临时禁用IPv6

    echo 1 >/proc/sys/net/ipv6/conf/all/disable_ipv6
    echo 1 >/proc/sys/net/ipv6/conf/default/disable_ipv6
    # 或着
    sysctl -w net.ipv6.conf.all.disable_ipv6=1
    sysctl -w net.ipv6.conf.default.disable_ipv6=1

    2.2.永久禁用IPv6

    echo " ">>/etc/sysctl.conf
    echo "# made for disabled IPv6 in $(date +%F)">>/etc/sysctl.conf
    echo 'net.ipv6.conf.all.disable_ipv6 = 1'>>/etc/sysctl.conf
    echo 'net.ipv6.conf.default.disable_ipv6 = 1'>>/etc/sysctl.conf
    echo 'net.ipv6.conf.lo.disable_ipv6 = 1'>>/etc/sysctl.conf
    tail -5 /etc/sysctl.conf
    sysctl -p
    netstat -anptl

    也可以直接编辑系统内核配置文件

    vim /etc/sysctl.conf
    ------------------------------------------------------
    # Made for disabled IPv6 .
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    -------------------------------------------------------

    # 如果想要为特定的网卡禁止IPv6,比如eth1,改为添加下面的行。

    net.ipv6.conf.eth1.disable_ipv6 = 1

    # 注意检查修改network配置文件中的IPv6配置

    vim /etc/sysconfig/network
    --------------------------------------
    NETWORKING_IPV6=no
    --------------------------------------
    

    # 注意修改ifcfg-eth0

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    ----------------------------------
    IPV6INIT=no
    ----------------------------------

    2.3.拓展:禁用IPV6后,可能会导致某些服务无法启动

    1)修改ssh配置,只监听IPv4地址

    vim /etc/ssh/sshd_config
    ----------------------------------------
    # 在第15行的前面去掉注释(#):
    ListenAddress 0.0.0.0
    AddressFamily inet
    ----------------------------------------
    service sshd restart
    netstat -anptl

    # 注意:inet为仅IPv4,inet6为仅IPv6,any为都支持

    2)mysql配置问题

    mysql安装后默认会监听IPv6地址,关闭IPv6后,需要编辑,在[mysqld]中添加

    vim /etc/my.cnf
    ----------------------------------------
    bind-address=0.0.0.0
    ----------------------------------------

    修改完重启mysql即可

    3)配置redis,监听IPv4地址

    vim  /usr/local/redis/conf/redis.conf
    ----------------------------------------
    bind 127.0.0.1
    ----------------------------------------

    4)配置memcached,监听IPv4地址

    # 配置memcached,监听地址需要使用IP,使用localhost无法启动memcached

    # memcached
    /usr/local/memcached/bin/memcached -u root -p 12001 -l 127.0.0.1 -d -P /tmp/memcached1.pid

    5)配置VSFTP

    vim /etc/vsftpd/vsftpd.conf
    ----------------------------------------
    listen=YES
    listen_ipv6=NO
    ----------------------------------------

    6)配置postfix监听IPv4地址

    vim /etc/postfix/main.cf
    ----------------------------------------
    inet_interfaces = 127.0.0.1
    ----------------------------------------

    7)配置dovecot监听IPv4地址

    vim /etc/dovecot/dovecot.conf
    ----------------
    listen *
    ----------------

    8)配置xinetd

    # xinetd.conf第32行修改为:
    vim /etc/xinetd.conf 
    ------------------------
    bind            = 0.0.0.0
    ------------------------
    # 重新载入配置文件
    service xinetd reload

    以上是禁用IPv6之后可能会受到影响的程序,可以根据自己的实际情况进行配置

    3.配置启用IPv6

    3.1.查看linux系统的IPv6状态

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    cat /proc/sys/net/ipv6/conf/default/disable_ipv6

    3.2.调整内核参数立即启用IPv6

    echo 0 >/proc/sys/net/ipv6/conf/all/disable_ipv6
    echo 0 >/proc/sys/net/ipv6/conf/default/disable_ipv6
    # 或着
    sysctl -w net.ipv6.conf.all.disable_ipv6=0
    sysctl -w net.ipv6.conf.default.disable_ipv6=0

    修改完是临时的,重启失效

    3.3. 修改内核参数,启用IPv6配置

    vim /etc/sysctl.conf
    ----------------------------------------------
    net.ipv6.conf.all.disable_ipv6 = 0
    net.ipv6.conf.default.disable_ipv6 = 0
    net.ipv6.conf.lo.disable_ipv6 = 0
    ----------------------------------------------
    sysctl -p

    3.4.手动调用系统ipv6内核

    modprobe ipv6

    3.5.报错处理

    [root@zstest ~]# modprobe ipv6
    FATAL: Module off not found.

    失败原因:未启用IPv6模块

    解决方法:
    需要编辑配置文件,启用IPv6内核模块,在禁用状态下无法调用ipv6模块
    该处理需要重启系统,启动后ipv6模块自动调用

    vim /etc/modprobe.d/disable_ipv6.conf 
    --------------------------------
    #alias net-pf-10 off
    #alias ipv6 off
    options ipv6 disable=0
    ---------------------------------
    [root@zstest ~]# lsmod |grep ipv6                      
    ipv6                  335781  14 

    完毕,呵呵呵呵

  • 相关阅读:
    Linux crontab 命令
    tcpdump抓包工具
    tcpdump过滤某个端口
    ARM处理器基础Cortex-M4
    rtems floating poing switch
    ARM处理器的堆栈和函数调用,以及与Sparc的比较
    关于调用堆栈,任务堆栈
    如何测试嵌入式处理器的CPU使用率
    关于嵌入式实时操作系统的实时性
    RTEMS API
  • 原文地址:https://www.cnblogs.com/tssc/p/9210990.html
Copyright © 2011-2022 走看看