在国家网信办推行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
执行上述步骤之后,运行如下命令使内核开启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后续的问题 欢迎阅读另一篇博文:网络双栈情况下优先级问题
因为配置后可能有一些风险需要知悉。