▪ 本文緣由
▪ 困擾1. ipv4和ipv6只有位址格式不同嗎
▪ 困擾2. ipv4到ipv6對應用程式是透明無感知的嗎
▪ 困擾3. 提供web服務,需要每台伺服器都配置ipv6位址嗎
▪ 困擾4. ipv4和ipv6要配在同一張網絡卡上嗎
▪ 困擾5. 我的網絡卡有fe80開頭的位址,可以用來上公網嗎
▪ 困擾6. ipv6位址如何配置
▪ 困擾7. 沒有了arp,如何解析mac位址
▪ 困擾8. ipv6使用多播替代廣播,需要做哪些改造
▪ 困擾9. ipv6真的安全嗎
▪ 困擾10. 如何學習ipv6
▪ 後續說明
▷ 掌握ipv6的必要性
▷ ipv6的3個常見顧慮
▷ ipv6基礎知識
▷ 常用測試方法
而在進一步的實踐學習中,會遇到很多的困擾。筆者結合自己以及身邊的同行兄弟們遇到的困擾,精心挑選出10個困擾在本文中進行解答。
如果沒有閱讀過《ipv6系列-入門指南》,敬請勞神垂閱,以便知識的連貫。
除了位址格式不同,ipv4與ipv6協議棧也不同,他們在邏輯上是完全不同的2個世界
以下實踐中經常會遇到的4個不同之處:
▷ip配置方式:客戶端以無狀態自動配置ip成為主流,弱化dhcp
▷dns網域名稱解析:aaaa記錄替代ipv4的a記錄、對應用存在優先順序問題(優先解析aaaa還是a)
▷應用層適應性:socket程式設計中af_inet僅支援ipv4,af_inet6僅支援ipv6
錯,是有感知的,上層應用程式需要進行改造。
舉個例子,當訪問fzxiaomange.com時候,是要優先解析ipv6位址(aaaa)還是ipv4位址(a),因為總得選一條線路來傳送請求。現在許多框架會優先選擇ipv6。
還有乙個典型的例子,是程式會在應用層裡互動底層ip位址,比如ftp主動模式會在應用層裡互動ipv4位址,而如果實際可用的是ipv6位址,就可能導致後續連線的異常。
無法做到透明無感知,是導致產生ipv4到ipv6的部分過渡方案的原因之一。
現在有一種言論,說「ipv6位址無限多,每台伺服器都可以配乙個ip位址,不用做nat」。
這很容易誤導人,具體如何使用ipv6,還得根據場景而定。比如筆者的個人部落格fzxiaomange.com,由nginx->php->mysql組成,分別位於3臺伺服器上,那只需要在nginx上配置ipv6位址,並在dns上新增一條aaaa記錄指向l7的ipv6位址即可。完全沒必要在php、mysql伺服器上配置ipv6位址,而且一旦配置了,就直接暴露內網了。
每個裝置都配置ipv6,主要適用於偏客戶端以及位址需求量大的場景,諸如物聯網裝置、手機4g、家庭寬頻等。
另外,ipv6有nat,適用於辦公pc、機房伺服器等需要訪問ipv6網路,而不想被別人主動訪問的場景。
都可以,首先需要先了解2個詞「單棧」和「雙棧」:
以節點為角度(通用的解釋):
▷ 單棧:表示乙個ipv6節點,也就是一台伺服器,或一部手機,僅有ipv6位址,或僅有ipv4位址,前者叫做「ipv6單棧」或「ipv6-only」,後者叫「ipv4單棧」或「ipv4-only」。
以網絡卡為角度:
ipv4和ipv6在邏輯上是兩個完全不相交的世界。如果終端處位於同乙個物理層,比如同乙個vlan,那麼網絡卡就只能同時配置ipv6位址和ipv4位址;反之,就必須一張網絡卡配置ipv6,另一張網絡卡配置ipv4。所以,關鍵看網路架構是如何設計,各有利弊。比如放同一張網絡卡上,就可以做到頻寬共享,而放不同網絡卡,可以做到頻寬分別限制與計費。
當網絡卡啟動的時候,會自動生成「鏈路本地位址」(link-local address),這是乙個fe80::/10的單播位址。「鏈路本地位址」用於ip自動配置、鄰居發現等。
注意事項:
▷ 範圍:僅在同乙個二層範圍內進行傳播,不會被路由器做**
公網位址和私網位址
細心的人可能會發現,為什麼這裡叫做「全球單播位址」,而「唯一本地位址」卻不叫做「唯一本地單播位址」,好吧,其實都是簡稱,在rfc裡是這麼定義的:「global unicast addresses」、「link-local ipv6 unicast addresses」。其實「全球單播位址」是可以叫做「全球位址」的,只是這樣顯得有點彆扭。
自動生成還是固定ip
自動配置ip
在ipv6裡還分為2種方法:「有狀態」與「無狀態」
▷ 有狀態(stateful):位址由dhcpv6 server統一管理,dhcpv6 client從中獲得乙個可用的ip位址
▷ 無狀態(stateless,簡稱slaac):路由器發出「路由通告」報文(router advertisement,簡稱ra),報文內包含了ipv6位址的字首資訊。當收到ra包後,就會根據其中字首資訊,自動生成乙個或多個ip位址
arp協議是ipv4用於解析目標mac位址的協議,而在ipv6裡,解析位址採用的是鄰居發現(neighbor discovery protocol,簡稱ndp或nd)
▷鄰居請求報文ns(neighbor solicitation):請求解析
▷鄰居通告報文na(neighbor advertisement):響應解析
這與ping是非常類似的:
▷ ping:傳送icmp的echo request報文,對端響應icmp的echo reply報文
ipv6使用多播替代了廣播,多播的特點是不會像廣播那樣完全泛洪,而是資料報只傳送給加入了多播組的機器。
但是,這有個前提,就是交換機要能識別並維護多播組的資訊,主流交換機都具備此功能,然而並不都是預設開啟的。對於二層交換機來說,需要開啟mldv2 snooping。
顧名思義,就是交換機會識別「mldv2成員報告」報文從哪個埠發來的,並記錄下來,之後當交換機收到多播包後,會先查詢其多播位址是否能在快取裡匹配上
▷ 匹配成功:僅會將資料報從相應的埠發出
▷ 匹配失敗:就會泛洪,此時和廣播毫無差異
理想很美好,ipv6從設計之初,就進行了大量的安全方面的設計,「完整的」ipv6在安全方面有至少以下3個優勢:
▷ 原生支援的端到端加密
▷ 安全的鄰居發現(secure neighbor discovery,簡稱send)
▷ 更大的位址空間
現實很殘酷,只有第3點發揮了作用,更大的位址空間,減少了被非法掃瞄到的概率。而第1、2點並沒真正普及起來,因為協議本身就很複雜、學習難度很大、實現起來也很不容易。因此ietf為了加速ipv6的普及,對安全性不再強制要求。這也導致了ipv6實際上並沒有預期中的那麼安全,在ipv4裡存在的位址欺騙、虛假閘道器等情況,在ipv6裡依然存在。
1️⃣ ipv6的歷史、設計理念
2️⃣ ipv6的位址格式、分類、字首計算,以及與ipv4的對比
3️⃣ ip位址、閘道器路由的配置與檢視
4️⃣ 服務端實踐,嘗試給自己的**增加ipv6
5️⃣ 客戶端實踐,讓自己的pc訪問ipv6網際網路
6️⃣ 應用層實踐,自己寫一對c/s程式,能同時支援ipv4與ipv6
7️⃣ ipv6通訊原理,抓包分析每個包,熟悉nd、dhcpv6等
8️⃣ ipv4與ipv6的互訪、過渡
9️⃣ ipv6安全
具體領域的ipv6,例如移動ipv6
常用DNS解析伺服器(IPv4 IPv6)
國內ipv4公共dns伺服器位址 114dns公眾版 主用dns 114.114.114.114 備用dns 114.114.115.115 純淨無劫持,速度還不錯,多網通用 cnnic sdns 主用dns 1.2.4.8 備用dns 210.2.4.8 bgp多線路,多網通用 alidns 主用...
linux centos 伺服器搭配IPV6
為伺服器開通 ipv6 總共分為4步 centos預設ipv6是關閉的,開啟ipv6 去 為伺服器對應的ipv4位址申請對應的ipv6位址 為網域名稱新增ipv6新增 aaaa ipv6 解析 配置apache 對應 ipv6 一 開啟ipv6 centos 6.5 版本1.編輯檔案,etc sys...
手機配置IPV6
據可靠訊息說今年7月份前大部分系統都得支援ipv6,之前也沒當回事,突然說要全切,還得驗證ipv6的支援情況。網上找了一堆,發現都過時了,或者行不通,琢磨了一下把華為android的搞定了 流量模式 其他手機應該類似 具體步驟如下 設定 流動網路 移動資料,找到 接入點名稱 apn 點選進入,通用 ...