服務器配置ipv6

轉載https://blog.csdn.net/ei__nino/article/details/71331717

自從AppStore要求必須支持IPv6後,國民感到震驚的同時,也加速了國內的ipv6的普及。 但是國內的服務器託管商(比如阿里雲)幾乎都不支持IPv6。 

關鍵詞: 阿里雲,ECS, IPV6, CDN,IPV6隧道

廢話不多說,說說我是怎麼解決的。

思路: 
數據交互層 建立IPv6隧道到服務器 
靜態CDN 需要使用國外的DNS來CNAME

1,阿里雲服務器配置
CentOS 7.3 專有網絡(經典網絡也沒關係)

修改配置
編輯 vim /etc/modprobe.d/disable_ipv6.conf 文件(需要root權限) 
disable 設置成 0

options ipv6 disable=0


1編輯 vim /etc/sysconfig/network 文件(需要root權限) 
NETWORKING_IPV6 設置成 yes

NETWORKING_IPV6=yes


然後執行 service network restart 重啓

編輯 /etc/sysctl.conf 文件(需要root權限)

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0


再運行 sysctl -p 的命令,啓用IPv6 (需要root權限)  -------測試過程中會報錯 需要服務器重啓下 默認服務器是不開啓ipv6的  

開啓IPv6
使用 ip addr 查看是否已經有 inet6 的地址,如果有說明已經開啓ipv6

[work@xxx tmp]$ ip addr
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:30:58:e6 brd ff:ff:ff:ff:ff:ff
    inet 172.17.252.95/20 brd 172.17.255.255 scope global dynamic eth0
       valid_lft 31454018sec preferred_lft 31454018sec
    inet6 fe80::216:3eff:fe30:xxxx/64 scope link
       valid_lft forever preferred_lft forever


其他
如果有Nginx 服務,需要監聽 IPv6的地址 
如下所示,加個 listen [::]:80 ipv6only=on; 即可(如果出現不支持,或者nginx版本太低,可能沒有加入ipv6的支持,需要重新編譯 –with-ipv6 的版本)

server {
    listen       80;
    listen [::]:80 ipv6only=on;
    server_name  www.xxx.com;
    index index.php;
    ...


使用 netstat -tuln 來查看是否用 tcp6 ::80的監聽,如果有則說名監聽成功 
類似這種

tcp6       0      0 xxx:xxx:23:11f6::2:80  :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN

 


如果沒有netstat,安裝一下 sudo yum install net-tools -y

2. IPv6隧道配置
到 https://tunnelbroker.net/ 網站申請一個tunnel 
(有人說qq郵箱收不到驗證郵件,建議使用Gmail) 
註冊步驟就不說了,註冊後需要驗證郵箱,然後登陸

創建Tunnel
IPv4 Endpoint 需要些服務器的外網IP地址,也就是用這個IP能訪問到你的服務。

查看Tunnel信息

紅框裏面的 Client IPv6 Address 就是你的IPv6 地址,之後解析域名的時候用的就是它(域名裏不用寫“/64”)哦~

配置信息


注意這裏的 local ip需要寫內網IP,下面的NOTE: 已經用英文說明了

然後把這一坨命令直接在服務器上運行就行了(注意需要root權限)

測試 ping6 he.net

[work@iz2ze4p8dzdjgu7fh60vqcz tmp]$ ping6 he.net
PING he.net(he.net (2001:470:0:76::2)) 56 data bytes
64 bytes from he.net (2001:470:0:76::2): icmp_seq=1 ttl=58 time=432 ms
64 bytes from he.net (2001:470:0:76::2): icmp_seq=2 ttl=58 time=435 ms
64 bytes from he.net (2001:470:0:76::2): icmp_seq=3 ttl=58 time=441 ms
64 bytes from he.net (2001:470:0:76::2): icmp_seq=4 ttl=58 time=429 ms


能ping通說明已經配置成功。

接下來只需要在DNS解析裏面,將域名指向ipv6的地址即可,需要用AAAA記錄 
AAAA xxxx 2001:xxxxx 
解析之後可以用 wget -6 http://xxxxxxx 來驗證你的解析是否正確以及IPv6是否ok。如果能獲取到網頁信息,說明一切正常。(https同理)

3. 配置靜態服務
靜態服務器一般都有自帶的CDN啥的,這些都ok,只是需要一個支持IPv6的域名CNAME到你自己的CDN就行了。 
國內的DNS不要想了,基本都沒法用,我這裏用的國外的 cloudflare免費版 
https://www.cloudflare.com

首先先用郵箱註冊一個賬號。

添加網站
然後添加網站。只需要寫 xxx.com就行了,不需要二級域名

點擊scan

然後他會有40多秒的時間去掃面此域名的DNS解析,同時會給你播放一個動畫片

查看DNS解析
掃描結果頁面一般都是空的,直接點 CONTINUE 繼續就可以了

這裏會讓你選平臺,當然是免費的

移交 DNS 解析
這裏要注意了,是要把域名的DNS解析交接到 Cloudflare上面。

需要到你的域名運營商那裏,設置域名的 DNS 【管理】 
!!【重要】一旦將 DNS【管理】 修改到 cloudflare上面後,原來域名的所有解析將失效!! 
所以不建議用原來的域名,建議新申請個域名來做這個事兒。

設置完解析後,點擊CONTINUE 
Cloudflare會去嘗試接管此域名, 
有可能會提示 解析失敗,需要點擊retry來重新檢測

Status:Active 說明解析成功,這時候Cloudflare就可以解析你的DNS域名了

然後你需要在你的CDN服務商建立一個新的域名,然後將Cloudflare添加你自己的域名CNAME到你的新CDN域名即可

使用wget -6 http://xxxxx.png 來測試靜態資源是否支持ipv6

ipv6-test
http://ipv6-test.com/validate.php 測試結果如下 


備註: 
所有的wget -6 需要在支持ipv6的機器上使用,比如你上面配置好的IPv6的服務器。

如果只是爲了給蘋果審覈用,可能需要在代碼裏針對IPv6地址做特殊處理,比如IPv6地址訪問的時候,需要返回IPv6的CDN地址。所以建議在返回的通用方法裏統一做一次“替換”,以無縫接入IPv6。

我們是給IPv6單獨部署了一臺服務器,沒有在整體的負載均衡下面,具體的負載均衡下的IPv6設置,暫時還沒研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章