ECS實戰之IPv6隧道配置

好人卡小高發表於2018-03-18

引言:新華社北京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

~~這是不起眼的分割線~~~~
簡單的介紹就到這裡了,如果你有什麼疑問可以直接聯絡我。文章中如有錯誤之處還請多多指教。


相關文章