在國家網信辦推行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 具體的配置過程解析參見:
方法一: centos
#/boot/grub2/grub.cfgbash
linux16 行添加:ipv6.disable=0(0:開啓IPV6,1:關閉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
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
驗證配置是否生效;
ip add
#查看是否有ipv6配置;
centos 6
lsmod | grep ipv6
如沒有任何回顯,則說明沒有加載
加載ipv6模塊
modprobe ipv6
再次運行
lsmod | grep ipv6
,如出現回顯,則說明ipv6已經正常加載
cat /etc/modprobe.d/ipv6.conf 修改options ipv6 disable=0
執行上述步驟以後,運行以下命令使內核開啓ipv6
sysctl -w net.ipv6.conf.all.disable_ipv6=0
再次運行
sysctl -a | grep ipv6 | grep disable
若參數所有爲0,則說明ipv6已經所有支持
以上配置都完成以後,網卡就能夠支持ipv6地址了,啓用一個試試吧
#/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後續的問題 歡迎閱讀另外一篇博文:網絡雙棧狀況下優先級問題
由於配置後可能有一些風險須要知悉。