ECS实战之IPv6隧道配置

引言:新华社北京11月26日电 近日,**办公厅、国务院办公厅印发了《推进互联网协议第六版(IPv6)规模部署行动计划》,并发出通知,要求各地区各部门结合实际认真贯彻落实。计划指出到2018年末国内IPv6活跃用户数要达到2亿,2020年末达到5亿,2025年末中国IPv6规模要达到世界第一。

简介

网际协议第6版(英文:Internet Protocol version 6,缩写:IPv6)是网际协议(IP)的最新版本,用作互联网的网络层协议,用它来取代IPv4主要是为了解决IPv4地址枯竭问题,不过它也在其他很多方面对IPv4有所改进。IPv6诞生于1999年,设计目的是取代IPv4。其最大的优点就是设计地址长度达128bit,可以提供2的128次方个IP地址,近乎无穷的IP地址让IPv6能容得下海量设备,这将与5G等技术一起,支撑移动互联网、物联网、工业互联网、云计算、大数据、人工智能等新兴业态的快速发展。

入门

好了好了,不扯淡了。总结起来就是一个字:。2011年2月3日,全球互联网数字分配机构(IANA)宣布 ,全球IPv4地址池已经耗尽。随着云计算、大数据、工业4.0、物联网的发展,原有的IPV4地址远远不够各大领域的大拿瓜分,所以IPv6应运而生。
目前IPv6的过渡方案有四种(不要问我怎么知道,我就是网上找的),今天我们主要来讲下使用Tunnel(隧道)将IPv6数据包进行封装,通过现有的IPv4网络进行传输,从而达到接入IPv6网络的目的。国内大部分IDC提供商不支持IPv6,据我所知国内提供IPv6的主机商只有景安,这里不做过多介绍。
## 开始
网上一般推荐的都是Hurricane Electric(免费,而且支持的OS多)。本文以Hurricane Electric为例,展开实践。虽然说云栖社区已经有发文说阿里云要支持IPv6但是等出来还是会有一个漫长的周期。比如说迫于IOS应用上架,迫于想折腾体验下IPv6的快感。

系统:CentOS Linux release 7.2.1511 (Core)
内核:Linux g3p-net 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
网络环境:阿里云VPC
Tunnel提供商:Hurricane Electric

注册

IPV6隧道代理注册地址:Hurricane Electric
注册完后需要登录邮箱验证下邮件信息,我这里用的是Gmail和GV,没发现有异常的地方。

创建

点击Create Regular Tunnel创建Tunnel,IPv4 Endpoint填写ECS外网IPv4地址,选择一个Tunnel Servers进行愉快的下一步,怀着对香港这片土地的热爱,我选择了Tokyo,JP(其实是因为Ping值)。
下图可知,其实选择的余地挺大的,根据自己的实际情况选择相对应的Servers

出现下图时,说明创建成功接下来我们就开始在ECS上进行相对应的配置

配置

打开Example Configurations查看对应相关OS的实例命令,我这里因为是Centos所以采用的是Linux-net-tools
支持的系统

#修改内核参数
[root@g3p.net~]# sysctl -a | grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.eth0.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.sit0.disable_ipv6 = 0
net.ipv6.conf.sit1.disable_ipv6 = 0
[root@g3p-net ~]# ifconfig sit0 up
[root@g3p-net ~]# ifconfig sit0 inet6 tunnel ::74.82.46.6
[root@g3p-net ~]# ifconfig sit1 up
[root@g3p-net ~]# ifconfig sit1 inet6 add 2001:470:23:130f::2/64
[root@g3p-net ~]# route -A inet6 add ::/0 dev sit1
[root@g3p-net ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:16:3e:02:b1:5b brd ff:ff:ff:ff:ff:ff
    inet 172.19.151.94/20 brd 172.19.159.255 scope global eth0
      valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe02:b15b/64 scope link 
      valid_lft forever preferred_lft forever
3: sit0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
    inet6 ::172.19.151.94/96 scope global 
      valid_lft forever preferred_lft forever
    inet6 ::127.0.0.1/96 scope host 
      valid_lft forever preferred_lft forever
8: sit1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN qlen 1
    link/sit 0.0.0.0 peer 74.82.46.6
    inet6 2001:470:23:130f::2/64 scope global 
      valid_lft forever preferred_lft forever
    inet6 fe80::ac13:975e/64 scope link 
      valid_lft forever preferred_lft forever

验证

[root@g3p-net ~]# ping -6 ipv6.google.com
PING ipv6.google.com(tsa03s02-in-x0e.1e100.net (2404:6800:4008:803::200e)) 56 data bytes
64 bytes from tsa03s02-in-x0e.1e100.net (2404:6800:4008:803::200e): icmp_seq=1 ttl=54 time=331 ms
64 bytes from tsa03s02-in-x0e.1e100.net (2404:6800:4008:803::200e): icmp_seq=2 ttl=54 time=331 ms
^C
--- ipv6.google.com ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2002ms
rtt min/avg/max/mdev = 331.613/331.707/331.801/0.094 ms

支持的系统

Apple Airport  
Check Point R77 GAiA  
Cisco IOS  
CoyotePoint Equalizer  
Debian/Ubuntu  
Fortigate 4.x-5.x  
FreeBSD < 4.4  
FreeBSD >= 4.4  
JunOS  
JunOS ES  
Linux-net-tools  
Linux-route2  
Mac OS X  
Mikrotik  
NetBSD  
OpenBSD  
OpenWRT Backfire 10.03.1  
OpenWRT Barrier Breaker  
pfSense  
ScreenOS 6.2.0r1.0  
Solaris  
Vyatta / Ubiquiti EdgeMAX  
Windows 10  
Windows 2000/XP  
Windows Vista/2008/7/8  

错误

[root@g3p.net~]# ifconfig sit1 inet6 add 2001:470:23:130f::2/64
SIOCSIFADDR: Permission denied
[root@g3p.net~]# sysctl -a | grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.sit0.disable_ipv6 = 1
net.ipv6.conf.sit1.disable_ipv6 = 1

修改/etc/sysctl.conf中的disable_ipv6 参数为0

[root@g3p.net~]# sysctl -a | grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.eth0.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.sit0.disable_ipv6 = 0
net.ipv6.conf.sit1.disable_ipv6 = 0

思考

如果用Linux-net-tools、Linux-route2的话有一个问题,那就是重启会丢失相关配置,暂时没考虑这么多,所以这篇文章暂时就到这里啦!

参考

  1. https://zh.wikipedia.org/wiki/IPv6

~~这是不起眼的分割线~~~~
简单的介绍就到这里了,如果你有什么疑问可以直接联系我。文章中如有错误之处还请多多指教。

上一篇:C++:移动构造函数和移动赋值运算符


下一篇:linux之IP隧道配置