1. 程式人生 > >ubuntu 和centos 的阿里雲 設定支援ipv6地址

ubuntu 和centos 的阿里雲 設定支援ipv6地址

https://ilazycat.com/posts/2016/12/aliyun-ecs-ipv6-configuration.html

 

https://blog.csdn.net/kevin_coder/article/details/79069159

 

 

前幾天有個小夥伴的 iOS App 提交給水果稽核沒通過,水果給出的原因是應用在 IPv6 的環境下無法使用。原來小夥伴用的伺服器是阿里雲的 ECS ,而這玩意並不支援 IPv6 。。。這裡就不得不吐槽一下阿里雲這麼大的雲服務廠商,馬上都要2017年了還不支援 IPv6 ,然而考慮一下 IPv6 在中國確實發展的並不怎麼樣。還好,我們可以用 Hurricane Electric 提供的 IPv6 Tunnel Broker 來讓 ECS 支援 IPv6 。本文就以 Ubuntu 為例,來介紹一下具體的操作方法, CentOS 等作業系統都差不多,稍作修改也可以用。

首先,到 https://www.tunnelbroker.net/ 註冊一個賬戶,然後登陸,戳 Create Regular Tunnel 。IPv4 Endpoint (Your side) 這裡填你 ECS 的公網 IP 地址, Available Tunnel Servers 這裡選一個,一般來說 HK 離大陸近延遲低,不過最近 HE.net 的香港似乎都是繞了一圈美國回來的,所以延遲反而很高,這個看自己情況選就好。然後戳 Create Tunnel ,就完成了。

接下來修改 ECS 裡面的系統配置,由於阿里雲的網路不支援 IPv6 所以他官方映象裡面相關的設定都是被禁用了的,想要使用 IPv6 就要做一些修改。首先修改  /etc/sysctl.conf  ,把下面三項設定都改為0

1

2

3

net.ipv6.conf.all.disable_ipv6 = 0

net.ipv6.conf.default.disable_ipv6 = 0

net.ipv6.conf.lo.disable_ipv6 = 0

然後編輯 /etc/network/interfaces ,在下面新增 IPv6 Tunnel的相關資訊

01

02

03

04

05

06

07

08

09

10

11

12

13

auto he-ipv6

iface he-ipv6 inet6 v4tunnel

address <IPV6>::2

netmask 64

remote <Tunnel 的 Server IPv4 Address>

local <阿里雲的內網 IPv4 地址>

endpoint any

ttl 255

gateway <IPv6>::1

up ip -6 route add 2000::/3 via ::<HE 的 Server IPv4 Address> dev he-ipv6

up ip -6 addr add <IPv6>::1:1/128 dev he-ipv6

up ip -6 addr add <IPv6>::2:1/128 dev he-ipv6

down ip -6 route flush dev he-ipv6

其中裡面<IPv6> 需要你自己替換成你剛剛申請的 Tunnel 的 Server IPv6 Address,但不包括最後的::1/64。

確定配置沒問題之後就可以重啟伺服器了,重啟之後看看 he-ipv6 介面有沒有被啟用,如果沒有的話手動執行 ifup he-ipv6 啟用相關介面,然後你就應該可以使用 Tunnel 裡面顯示的 Server IPv6 Address 來訪問你的阿里雲 ECS了。

這裡有個坑,local 這裡一開始我寫的是阿里雲外網的 IP 地址,然後發現啟用了 Tunnel 之後無論是從外面訪問阿里雲還是阿里雲本身訪問 IPv6 都無效,在阿里雲上 ping6 ipv6.google.com 的時候提示 no route to host,然後又仔細看了一下 HE.net tunnel broker 裡面的描述發現了這樣一句話:

NOTE: When behind a firewall appliance that passes protocol 41, use the IPv4 address you get from your appliance’s DHCP service instead of the IPv4 endpoint you provided to our broker.

所以 local 那裡應該填的是 ECS 內網的 IP 地址,而不是公網的 IP 地址。。。