在AWS的EC2上基于CentOS系统添加HE的隧道IPV6且实现开机启动优先级控制

摘要

几个月前申请了一个AWS的免费帐号,今天在上面开了EC2免费实例,由于EC2免费实例是不支持ipv6的所以我就想到了HE的隧道V6。本文就来说说如何在AWS的EC2上配置HE的隧道V6

本文实验的系统是CentOS 6 x64(理论支持CentOS 5+系列系统)
开始我用配置文件的方式配置隧道V6,但是总是不成功,于是就换成了命令模式,等我把命令写到/etc/rc.local中的时候 开启后V6有配置,但是却不能在其他机器上ping通,之后排查发现,试用HE的隧道V6,线路打通需要在本机上第一次发起,所以我就在rc.local文件中加入了一个ping Google的命令,这样就真正解决了开机启动IPV6知道配置和生效了。

你以为这样就完事了?那就大错特错了,我在Nginx的配置文件中写死了每个虚拟机对应绑定的V6地址,然后CentOS系统启动过程是先加载/etc/rc.d/init.d/目录下的启动脚本,等这里都启动完毕之后再去加载/etc/rc.local文件的内容,好了问题来了,先启动Nginx然后Nginx是绑定V6地址了,这是IPV6还没配置呢,所以Nginx启动就报错不能正常启动。等系统开机流程完毕之后发现Nginx是没启动的。
为了解决上面的问题就我单独写了个隧道IPv6的init启动管理脚本(Nginx的启动值正常情况是85)我把v6的启动脚本值设置小余85这样V6就先配置然后才是Nginx启动,经过一系列的修改之后,世界清静了。。。

上面说了那么多其实都是废话,大家可以直接用下面的脚本来实现自动配置。

wget http://www.dwhd.org/script/edit_aws_he_tunnel_v6.sh
bash edit_aws_he_tunnel_v6.sh

自动配置脚本源码

#!/bin/bash
#########################################################################
# File Name: edit_aws_he_tunnel_v6.sh
# Author: LookBack
# Email: admin#dwhd.org
# Version:
# Created Time: 2015年08月15日 星期六 15时13分35秒
#########################################################################

wget http://www.dwhd.org/script/aws_he_tunnel_v6.sh -O /etc/init.d/manageripv6
read -p "Plz input your HE Server IPv4 Address : " HESERVERIP
read -p "Server IPv6 Address : " HEIPV6_IPADDRESS
sed -i "s/HESERVERIP/$HESERVERIP/" /etc/init.d/manageripv6
sed -i "s/HEIPV6_IPADDRESS/${HEIPV6_IPADDRESS::*}/" /etc/init.d/manageripv6
chmod +x /etc/init.d/manageripv6
chkconfig manageripv6 on
service manageripv6 start
service manageripv6 status

IPV6启动管理脚本源码

#!/bin/sh
#########################################################################
# File Name: manageripv6.sh
# Author: LookBack
# Email: admin#dwhd.org
# Version:
# Created Time: 2015年08月15日 星期六 14时28分51秒
#########################################################################
# chkconfig: 2345 60 40
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6

ipv6_start() {
        ifconfig sit0 up
        ifconfig sit0 inet6 tunnel ::74.82.46.6
        ifconfig sit1 up
        v6end=(aaaa bbbb cccc dddd eeee ffff 0000 1111 2222 3333 4444 5555 6666 7777 8888 9999)
        for i in ${v6end[@]}; do
                ifconfig sit1 inet6 add 2001:470:23:b56:1234:5678:9abc:$i/64
        done
        route -A inet6 add ::/0 dev sit1
        sleep 5 && ping6 ipv6.google.com -c2 >/dev/null 2>&1
}

ipv6_stop() {
        ifconfig sit0 down
        ifconfig sit1 down
}

ipv6_restart() {
        ipv6_stop
        ipv6_start
}

ipv6_reload() {
        ipv6_restart
}

ipv6_status() {
        ifconfig | awk '/inet6/{if ($3!~/^(::|fe80)/) print $3" Online"}'
}

case "$1" in
        start)
                ipv6_start
                ;;
        stop)
                ipv6_stop
                ;;
        restart)
                ipv6_restart
                ;;
        reload)
                ipv6_reload
                ;;
        status)
                ipv6_status
                ;;
        *)
                echo $"Usage: $0 {start|stop|status|restart|reload}"
                exit 2
esac

在AWS的EC2上基于CentOS系统添加HE的隧道IPV6且实现开机启动优先级控制

  • 本文由 发表于 2015年8月15日16:49:17
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • xiaoyutou 2

      aws各种坑,建议远离。脚本不错,收下了!