linux服務器開啓IPv6

在國家網信辦推行IPv6的大前提下,進行IPv6改造工做,須要對服務器進行配置IPv6地址。linux

配置過程大體寫一下哈:web


#cat ipv6.sh
#! /bin/bash
Ipv6=$1
Ipv4=$(dig +short $(hostname)) #用於獲取對應的網卡,根據需求更改
Time=$(date  +%Y%m%d%H%M%S)
[[ $Ipv6 ]] || echo "ipv6 get fail!,Usage: sh  ipv6.sh X:X:X::ipv6地址"
[[ $Ipv4 ]] || echo "ipv4 get fail!"
echo "變動模塊包括:grub配置 sysctl配置 IP配置"
Grub(){
    #grub修改
    cp /etc/default/grub /etc/default/grub.$Time
    cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.$Time
    sed -i 's#ipv6.disable=1#ipv6.disable=0#'  /etc/default/grub  || grep 'ipv6.disable' /etc/default/grub
    grub2-mkconfig -o /boot/grub2/grub.cfg &>/dev/null
    grep 'ipv6.disable=0' /boot/grub2/grub.cfg &>/dev/null && \
    echo "###grub ok ###" || echo -e "\033[31m"grub fail !!!!!!!!!!!"\033[0m" 
    }    
Systcl(){
    #配置sysctl.conf
    cp /etc/sysctl.conf /etc/sysctl.conf.$Time
    sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.conf
    sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.conf
    sysctl -p &>/dev/null
    
    grep ipv6 /etc/sysctl.conf &>/dev/null &&\
    echo -e "\033[31m sysctl fail !!!!!!!!!!! \033[0m"  || echo "###sysctl ok ###"
    }
Ip(){
    #IP 配置:
    cp /etc/sysconfig/network /etc/sysconfig/network.$Time
    grep "NETWORKING=yes" /etc/sysconfig/network &>/dev/null || echo "NETWORKING=yes" >> /etc/sysconfig/network
    grep "NETWORKING_IPV6=yes" /etc/sysconfig/network &>/dev/null || echo "NETWORKING_IPV6=yes" >> /etc/sysconfig/network
    FileName=$(grep $Ipv4 /etc/sysconfig/network-scripts/* | awk -F':' '{print $1}')
    [[ $FileName ]] || cp $FileName $FileName.$Time
    [[ $FileName ]] || echo -e "\033[31m get network file fail !!!!!!!!!!! \033[0m" 
    
    grep "IPV6INIT=yes"  $FileName &>/dev/null || echo "IPV6INIT=yes" >> $FileName
    grep "IPV6_AUTOCONF=no"  $FileName &>/dev/null || echo "IPV6_AUTOCONF=no" >> $FileName
    grep "IPV6ADDR="  $FileName &>/dev/null || [[ $FileName ]] && [[ $Ipv6 ]] && \
    echo "IPV6ADDR=$Ipv6" >> $FileName
    
    grep 'IPV6' $FileName &>/dev/null && \
    echo "###IPconfig ok ###" || echo -e "\033[31m IPconfig fail !!!!!!!!!!! \033[0m" 
    }

Reboot(){
    重啓
    sync && sync
    echo "10s after reoot"
    sleep 10
    reboot
    }
Check(){
    echo 
    echo 
    echo 
    echo "=====================IPv6變動有:==================="
    echo "=============File : /boot/grub2/grub.cfg"
    grep 'ipv6.disable=0' /boot/grub2/grub.cfg
    echo 
    echo "=============File : /etc/sysctl.conf "
    grep "ipv6" /etc/sysctl.conf 
    echo 
    echo "=============File : /etc/sysconfig/network"
    grep "NETWORKING_IPV6=yes" /etc/sysconfig/network
    echo 
    echo "=============File : $FileName"
    grep 'IPV6' $FileName
    echo 
    }
Grub
Systcl
Ip
Check
#Reboot


具體的配置過程解析參見:

一:grub修改: 

方法一: centos

#/boot/grub2/grub.cfgbash

linux16 行添加:ipv6.disable=00:開啓IPV61:關閉IPV6 服務器

 

方法二: 網絡

1.編輯/ etc / default / grub並將內核參數ipv6.disable的值從GRUB_CMDLINE_LINUX行中的1更改成0,例如: app

# cat /etc/default/grubide

GRUB_CMDLINE_LINUX="ipv6.disable=0 crashkernel=auto rhgb quiet"ui


注意:ipv6.disable = 0是默認值,所以您能夠根據須要從GRUB_CMDLINE_LINUX參數列表中刪除此參數ipv6.disable spa

2.使用下面顯示的命令從新生成GRUB配置文件並覆蓋現有配置文件。 

grub2-mkconfig -o /boot/grub2/grub.cfg

 

二:配置sysctl.conf

1.爲了讓ipv6在線運行,請確保/etc/sysctl.conf中的如下行被註釋掉或刪除。 

#cat /etc/sysctl.conf | grep ipv6
#net.ipv6.conf.all.disable_ipv6 = 1 ###註釋/刪除此行或將其值從1更改成0
#net.ipv6.conf.default.disable_ipv6 = 1 ###註釋/刪除此行或將其值從1更改成0


2.使用命令'sysctl -p'從新讀取配置文件/etc/sysctl.conf 

#sysctl -p


 

 

三:重啓服務器,加載gurb配置: 

驗證配置是否生效; 

ip add

  #查看是否有ipv6配置; 

 


centos 6

1.查看服務器是否加載ipv6模塊 

  lsmod | grep ipv6


  如沒有任何回顯,則說明沒有加載 

  加載ipv6模塊 

modprobe ipv6


  再次運行

lsmod | grep ipv6

,如出現回顯,則說明ipv6已經正常加載 

 

2.修改配置文件啓用ipv6 

cat /etc/modprobe.d/ipv6.conf
修改options ipv6 disable=0


 

 

 

3.開啓內核參數支持ipv6 

  執行上述步驟以後,運行以下命令使內核開啓ipv6 

  sysctl -w net.ipv6.conf.all.disable_ipv6=0


 

  再次運行

sysctl -a | grep ipv6 | grep disable


  若參數所有爲0,則說明ipv6已經所有支持 

 

4.在網卡上配置ipv6地址 

  以上配置都完成以後,網卡就能夠支持ipv6地址了,啓用一個試試吧 

 

 

 IP配置: 

#/etc/sysconfig/network #添加如下兩條內容,網關也能夠配置在此處; 

NETWORKING=yes
NETWORKING_IPV6=yes


sed -i '/^NETWORKING_IPV6=/d' /etc/sysconfig/network
echo "NETWORKING_IPV6=yes" >> /etc/sysconfig/network


#ifcfg-eth0
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=xxx::xxx
IPV6_DEFAULTGW=fe80::1%eth0(eth0爲實際網卡名)



關於配置IPv6後續的問題 歡迎閱讀另外一篇博文:網絡雙棧狀況下優先級問題

由於配置後可能有一些風險須要知悉。

相關文章
相關標籤/搜索