當前位置:首頁>微思動態>詳情
全國熱線電話 400-881-4699

在線留言

【必看】學IPv6你也有這些困擾嗎?

發布作者:微思網絡   發布時間:2019-06-06   瀏覽量:0

困擾1. IPv4和IPv6只有地址格式不同嗎

除了地址格式不同,IPv4與IPv6協議棧也不同,他們在邏輯上是完全不同的2個世界

以下實踐中經常會遇到的4個不同之處:

基本通訊過程:ND替代ARP、多播替代廣播、fe80地址成為標配、ICMP成為通訊核心
IP配置方式:客戶端以無狀態自動配置IP成為主流,弱化DHCP
DNS域名解析:AAAA記錄替代IPv4的A記錄、對應用存在優先級問題(優先解析AAAA還是A)
應用層適應性:socket編程中AF_INET僅支持IPv4,AF_INET6僅支持IPv6


困擾2. IPv4到IPv6對應用程序是透明無感知的嗎

錯,是有感知的,上層應用程序需要進行改造。

舉個例子,當訪問fzxiaomange.com時候,是要優先解析IPv6地址(AAAA)還是IPv4地址(A),因為總得選一條線路來發送請求。現在許多框架會優先選擇IPv6。

注意:如果解析出AAAA記錄,即使本機沒有可路由IPv6地址,也有可能依然嘗試通過IPv6進行請求,導致請求失敗

還有一個典型的例子,是程序會在應用層里交互底層IP地址,比如FTP主動模式會在應用層里交互IPv4地址,而如果實際可用的是IPv6地址,就可能導致后續連接的異常。

無法做到透明無感知,是導致產生IPv4到IPv6的部分過渡方案的原因之一。


困擾3. 提供WEB服務,需要每臺服務器都配置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網絡,而不想被別人主動訪問的場景。


困擾4. IPv4和IPv6要配在同一張網卡上嗎

都可以,首先需要先了解2個詞“單棧”“雙棧”

以節點為角度(通用的解釋):

? 單棧:表示一個IPv6節點,也就是一臺服務器,或一部手機,僅有IPv6地址,或僅有IPv4地址,前者叫做“IPv6單棧”“IPv6-Only”,后者叫“IPv4單棧”“IPv4-Only”
? 雙棧:表示一個IPv6節點,同時擁有IPv6地址和IPv4地址

以網卡為角度

? 單棧:表示一張網卡僅有IPv6地址,或僅有IPv4地址,示意圖如下

singlestack

? 雙棧:表示一張網卡同時擁有IPv6地址和IPv4地址

dualstack

IPv4和IPv6在邏輯上是兩個完全不相交的世界。如果終端處位于同一個物理層,比如同一個VLAN,那么網卡就只能同時配置IPv6地址和IPv4地址;反之,就必須一張網卡配置IPv6,另一張網卡配置IPv4。所以,關鍵看網絡架構是如何設計,各有利弊。比如放同一張網卡上,就可以做到帶寬共享,而放不同網卡,可以做到帶寬分別限制與計費。


困擾5. 我的網卡有fe80開頭的地址,可以用來上公網嗎

win10

centos7

當網卡啟動的時候,會自動生成“鏈路本地地址”(Link-Local Address),這是一個fe80::/10的單播地址。“鏈路本地地址”用于IP自動配置鄰居發現等。

注意事項

? 核心:每張網卡都會存在“鏈路本地地址”,這是IPv6協議通訊的核心,不應當刪掉
? 范圍:僅在同一個二層范圍內進行傳播,不會被路由器做轉發
? 地址:“鏈路本地地址”的算法不統一,有的操作系統會根據mac地址計算而來(EUI-64),而有的則是隨機或其他某種算法計算而來
? 服務:“鏈路本地地址”雖然可以在二層內互通,但主要用于核心通訊以及某些網絡高級協議。不適用于上層應用業務之間的通訊。因此不能用來上公網,也不能用于對外提供服務


困擾6. IPv6地址如何配置

公網地址和私網地址

? 公網地址:“全球單播地址”(Global Unicast Address,2000::/3)
? 私網地址:“唯一本地地址”(Unique-Local Address,fc00::/7)

細心的人可能會發現,為什么這里叫做“全球單播地址”,而“唯一本地地址”卻不叫做“唯一本地單播地址”,好吧,其實都是簡稱,在RFC里是這么定義的:“Global Unicast Addresses”、“Link-Local IPv6 Unicast Addresses”。其實“全球單播地址”是可以叫做“全球地址”的,只是這樣顯得有點別扭。

自動生成還是固定IP

在IPv6里,任何單播地址都可以自動生成,也可以手工配置固定IP,具體看應用場景:

? 客戶端:如果我想訪問ipv6互聯網,而不對外提供服務,那么使用自動生成即可,無需使用固定的ip地址
? 服務端:如果需要對外提供服務,那么ip地址就需要固定了,不能使用自動生成

自動配置IP

在ipv6里還分為2種方法:“有狀態”與“無狀態”

? 有狀態(Stateful):地址由DHCPv6 Server統一管理,DHCPv6 Client從中獲得一個可用的IP地址
? 無狀態(Stateless,簡稱SLAAC):路由器發出“路由通告”報文(Router Advertisement,簡稱RA),報文內包含了IPv6地址的前綴信息。當收到RA包后,就會根據其中前綴信息,自動生成一個或多個IP地址


困擾7. 沒有了ARP,如何解析MAC地址

ARP協議是IPv4用于解析目標MAC地址的協議,而在IPv6里,解析地址采用的是鄰居發現(Neighbor Discovery Protocol,簡稱NDP或ND)

ND不是一個具體協議,而是用來描述多個相關功能的協議的抽象集合,所涵蓋的所有協議均是基于ICMPv6。其中有2種報文與解析MAC地址有關:

鄰居請求報文NS(Neighbor Solicitation):請求解析
鄰居通告報文NA(Neighbor Advertisement):響應解析

這與ping是非常類似的:

? ping:發送icmp的echo request報文,對端響應icmp的echo reply報文
? 地址解析:發送icmp的ns報文,對端響應icmp的na報文


困擾8. IPv6使用多播替代廣播,需要做哪些改造

IPv6使用多播替代了廣播,多播的特點是不會像廣播那樣完全泛洪,而是數據包只發送給加入了多播組的機器。

但是,這有個前提,就是交換機要能識別并維護多播組的信息,主流交換機都具備此功能,然而并不都是默認開啟的。對于二層交換機來說,需要開啟MLDv2 Snooping

顧名思義,就是交換機會識別“MLDv2成員報告”報文從哪個端口發來的,并記錄下來,之后當交換機收到多播包后,會先查找其多播地址是否能在緩存里匹配上

? 匹配成功:僅會將數據包從相應的端口發出
? 匹配失敗:就會泛洪,此時和廣播毫無差異


困擾9. IPv6真的安全嗎

理想很美好,IPv6從設計之初,就進行了大量的安全方面的設計,“完整的”IPv6在安全方面有至少以下3個優勢:

? 原生支持的端到端加密
? 安全的鄰居發現(Secure Neighbor Discovery,簡稱SEND
? 更大的地址空間

現實很殘酷,只有第3點發揮了作用,更大的地址空間,減少了被非法掃描到的概率。而第1、2點并沒真正普及起來,因為協議本身就很復雜、學習難度很大、實現起來也很不容易。因此IETF為了加速IPv6的普及,對安全性不再強制要求。這也導致了IPv6實際上并沒有預期中的那么安全,在IPv4里存在的地址欺騙、虛假網關等情況,在IPv6里依然存在。


困擾10. 如何在廈門HCNA培訓學習IPv6

網上能找到非常多的IPv6教程,其中有很多教程都是通篇講IPv6地址、IP包格式、ICMP包格式,這很容易讓初學者打退堂鼓。筆者雖然不是專業的網工,但愿能拋磚引玉,推薦的學習步驟如下:

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安全

返回頂部
南粤风彩26选5开奖