在国家网信办推行IPv6的大前提下,进行IPv6改造工作,需要对服务器进行配置IPv6地址。
配置过程大致写一下哈:
#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修改:
方法一:
#/boot/grub2/grub.cfg
linux16行添加:ipv6.disable=0(0:开启IPV6,1:关闭IPV6)
方法二:
1.编辑/ etc / default / grub并将内核参数ipv6.disable的值从GRUB_CMDLINE_LINUX行中的1更改为0,例如:
# cat /etc/default/grub
GRUB_CMDLINE_LINUX="ipv6.disable=0 crashkernel=auto rhgb quiet"
注意:ipv6.disable = 0是默认值,因此您可以根据需要从GRUB_CMDLINE_LINUX参数列表中删除此参数ipv6.disable。
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
执行上述步骤之后,运行如下命令使内核开启ipv6sysctl -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后续的问题 欢迎阅读另一篇博文:网络双栈情况下优先级问题
因为配置后可能有一些风险需要知悉。